27

JAVA PROGRAMMING 실습 02. 표준 입출력 - gnu.ac.krclass.gnu.ac.kr/~smjeong/pdf/java/05.pdf · 2017. 10. 9. · JAVA PROGRAMMING 실습 02. 표준 입출력 Author: jinyoung

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: JAVA PROGRAMMING 실습 02. 표준 입출력 - gnu.ac.krclass.gnu.ac.kr/~smjeong/pdf/java/05.pdf · 2017. 10. 9. · JAVA PROGRAMMING 실습 02. 표준 입출력 Author: jinyoung
Page 2: JAVA PROGRAMMING 실습 02. 표준 입출력 - gnu.ac.krclass.gnu.ac.kr/~smjeong/pdf/java/05.pdf · 2017. 10. 9. · JAVA PROGRAMMING 실습 02. 표준 입출력 Author: jinyoung

#왜생겼나요..?

: 절차지향언어가가진단점을보완하고다음의목적을달성하기위해 ..!

1. 소프트웨어생산성향상

객체지향소프트웨어를새로만드는경우이미만든개체지향소프트웨어를상속받거나객체를

가져다재사용할수있어부분수정을통해소프트웨어를다시만드는부담줄임.

2. 실세계에대한쉬운모델링

실세계의일은절차나과정보다는일과관련된많은물체들의상호작용으로묘사.

Page 3: JAVA PROGRAMMING 실습 02. 표준 입출력 - gnu.ac.krclass.gnu.ac.kr/~smjeong/pdf/java/05.pdf · 2017. 10. 9. · JAVA PROGRAMMING 실습 02. 표준 입출력 Author: jinyoung

캡슐화

메소드와데이터를클래스내에선언하고구현

외부에서는공개된메소드의인터페이스만접근가능

▪ 외부에서는비공개데이터에직접접근하거나메소드세부구현을알수없음.

객체내데이터에대한보안, 보호,외부접근제한

상속

다형성

생물

동물 식물

사람어류 나무 풀

동물

상속

“멍멍!” “야옹!” “꼬꼬댁!”

부모

소리내기

Page 4: JAVA PROGRAMMING 실습 02. 표준 입출력 - gnu.ac.krclass.gnu.ac.kr/~smjeong/pdf/java/05.pdf · 2017. 10. 9. · JAVA PROGRAMMING 실습 02. 표준 입출력 Author: jinyoung
Page 5: JAVA PROGRAMMING 실습 02. 표준 입출력 - gnu.ac.krclass.gnu.ac.kr/~smjeong/pdf/java/05.pdf · 2017. 10. 9. · JAVA PROGRAMMING 실습 02. 표준 입출력 Author: jinyoung

클래스와객체에대해정확히알자 !!

Page 6: JAVA PROGRAMMING 실습 02. 표준 입출력 - gnu.ac.krclass.gnu.ac.kr/~smjeong/pdf/java/05.pdf · 2017. 10. 9. · JAVA PROGRAMMING 실습 02. 표준 입출력 Author: jinyoung

클래스(class)

사용자가정의하는자료형

필드(데이터) + 메소드(객체가할수있는동작(행동))으로정의

@클래스형식

class 클래스이름{

필드 선언; // 데이터메소드 정의; //동작(행동)

}

Page 7: JAVA PROGRAMMING 실습 02. 표준 입출력 - gnu.ac.krclass.gnu.ac.kr/~smjeong/pdf/java/05.pdf · 2017. 10. 9. · JAVA PROGRAMMING 실습 02. 표준 입출력 Author: jinyoung

@ 클래스 정의 예)

class Person {

public String name; public int age;

public Person(){

}

public Person(String s){name = s;

}

public String getName(){retrun name;

}}

클래스이름

필드(field)

생성자(constructor)

생성자(constructor)

메소드(method)

Page 8: JAVA PROGRAMMING 실습 02. 표준 입출력 - gnu.ac.krclass.gnu.ac.kr/~smjeong/pdf/java/05.pdf · 2017. 10. 9. · JAVA PROGRAMMING 실습 02. 표준 입출력 Author: jinyoung

객체 : 클래스의 인스턴스(instance)

@ 객체 생성(new 연산자)Complex k = new Complex();

kxy

getRear(){..}getImaginary(){…}setValue(…){…}

필드 접근

객체명.필드명

ex) k.x = 5.0;

메소드 호출

객체명.메소드명

ex) k.setValue(1.5,2.0);

Page 9: JAVA PROGRAMMING 실습 02. 표준 입출력 - gnu.ac.krclass.gnu.ac.kr/~smjeong/pdf/java/05.pdf · 2017. 10. 9. · JAVA PROGRAMMING 실습 02. 표준 입출력 Author: jinyoung

생성자의정의와호출

클래스이름과같은이름을가지는메소드

객체에필요한초기화를수행하는작업을함

new연산자를통해객체를생성할때만호출

리턴타입을지정할수없음

class Complex {double x;double y;

Complex() {x = 10.0;y = 20.0;

}

// 메소드 정의}

Page 10: JAVA PROGRAMMING 실습 02. 표준 입출력 - gnu.ac.krclass.gnu.ac.kr/~smjeong/pdf/java/05.pdf · 2017. 10. 9. · JAVA PROGRAMMING 실습 02. 표준 입출력 Author: jinyoung
Page 11: JAVA PROGRAMMING 실습 02. 표준 입출력 - gnu.ac.krclass.gnu.ac.kr/~smjeong/pdf/java/05.pdf · 2017. 10. 9. · JAVA PROGRAMMING 실습 02. 표준 입출력 Author: jinyoung

오버로딩이란 ?

객체지향의특징중, 다형성의한종류임

한클래스내에같은이름의메소드를여러번구현

반드시메소드이름은같아야함

매개변수(인자)의타입이다르거나개수가달라야함

오버로딩을사용하는이유는메소드의이름을절약할수있다.

public class MethodSample {public int getSum(int i, int j) {

return i + j;}

public int getSum(int i, int j, int k) {return i + j + k;

}

public double getSum(double i, double j) {

return i + j;}

}

public static void main (String args[]) {MethodSample a = new

MethodSample();

int i = a.getSum(1, 2);

int j = a.getSum(1, 2, 3);

double k = a.getSum(1.1, 2.2);

}

Page 12: JAVA PROGRAMMING 실습 02. 표준 입출력 - gnu.ac.krclass.gnu.ac.kr/~smjeong/pdf/java/05.pdf · 2017. 10. 9. · JAVA PROGRAMMING 실습 02. 표준 입출력 Author: jinyoung

생성자도오버로딩이가능하다.

Page 13: JAVA PROGRAMMING 실습 02. 표준 입출력 - gnu.ac.krclass.gnu.ac.kr/~smjeong/pdf/java/05.pdf · 2017. 10. 9. · JAVA PROGRAMMING 실습 02. 표준 입출력 Author: jinyoung

class DefaultConstructor{int x;public void setX(int x) {this.x = x;}public int getX() {return x;}

public static void main(String [] args) {DefaultConstructor p= new DefaultConstructor();p.setX(3);

}}

public DefaultConstructor() { }

기본 생성자

class DefaultConstructor{int x;public void setX(int x) {this.x = x;}public int getX() {return x;}

public DefaultConstructor(int x) {this.x = x;

}public static void main(String [] args) {

DefaultConstructor p1= new DefaultConstructor(3);

int n = p1.getX();

DefaultConstructor p2= new DefaultConstructor();

p2.setX(5);}

}

Page 14: JAVA PROGRAMMING 실습 02. 표준 입출력 - gnu.ac.krclass.gnu.ac.kr/~smjeong/pdf/java/05.pdf · 2017. 10. 9. · JAVA PROGRAMMING 실습 02. 표준 입출력 Author: jinyoung

this 란 ?

현재객체자기자신을가리킴

▪ 자기자신에대한레퍼런스

▪ 같은클래스내에서클래스멤버, 변수를접근할때객체이름없으면 묵시적으로this로가정

this의필요성

객체의멤버변수와메소드변수의이름이같은경우

객체자신을메소드에전달또는반환할때

class Samp {int id;

public Samp(int id) {this.id = id;

}public int get() {

return id;}

Public static void main(String[] args){Samp ob1 = new Samp(3);

}

클래스멤버와메소드변수이름이같은경우

Page 15: JAVA PROGRAMMING 실습 02. 표준 입출력 - gnu.ac.krclass.gnu.ac.kr/~smjeong/pdf/java/05.pdf · 2017. 10. 9. · JAVA PROGRAMMING 실습 02. 표준 입출력 Author: jinyoung

생성자가중복된다른생성자를호출

this() 같은 클래스의

다른 생성자 호출

생성자 내에서만 사용 가능 다른 메소드에서는사용 불가

반드시 생성자 코드의 제일 처음에 수행

public class Book {String title;String author;int ISBN;

public Book(String title, String author, int ISBN) {this.title = title;this.author = author;this.ISBN = ISBN;}public Book(String title, int ISBN) {

this(title, "Anonymous", ISBN);}public Book() {

this(null, null, 0); System.out.println("생성자가 호출되었음");

}public static void main(String [] args) {

Book javaBook = new Book("Java JDK", "황기태", 3333);

Book holyBible = new Book("Holy Bible", 1); Book emptyBook = new Book();

}}

title = "Holy Bible"ISBN = 1

title = "Holy Bible"author = "Anonymous"ISBN = 1

Page 16: JAVA PROGRAMMING 실습 02. 표준 입출력 - gnu.ac.krclass.gnu.ac.kr/~smjeong/pdf/java/05.pdf · 2017. 10. 9. · JAVA PROGRAMMING 실습 02. 표준 입출력 Author: jinyoung

접근한정자

클래스사이에접근할수있는권한을제어

1. 클래스접근한정자 : public, default

2. 필드접근한정자 : public, protected, private

3. 메소드접근한정자 : public, protected, private

구분 자기클래스 서브클래스 같은 패키지 모든 클래스

private ○

Packege(default)

○ ○

protected ○ ○ ○

public ○ ○ ○ ○

Page 17: JAVA PROGRAMMING 실습 02. 표준 입출력 - gnu.ac.krclass.gnu.ac.kr/~smjeong/pdf/java/05.pdf · 2017. 10. 9. · JAVA PROGRAMMING 실습 02. 표준 입출력 Author: jinyoung

다음 소스를 컴파일 한 후 오류가 난 이유를 설명하시오!!

class Sample {public int a;private int b;int c;

}

public class AccessEx {public static void main(String[] args) {

Sample aClass = new Sample();aClass.a = 10;aClass.b = 10;aClass.c = 10;

}}

Sample 클래스의 a와 c는 각각 public, default 지정자로 선언이 되었으므로, 같은 패키지에 속한 AccessEx 클래스에서접근 가능

b는 private으로 선언이 되었으므로AccessEx 클래스에서 접근 불가능

Page 18: JAVA PROGRAMMING 실습 02. 표준 입출력 - gnu.ac.krclass.gnu.ac.kr/~smjeong/pdf/java/05.pdf · 2017. 10. 9. · JAVA PROGRAMMING 실습 02. 표준 입출력 Author: jinyoung

Song 클래스의속성정의

노래제목 : title

가수 : artist

노래가속한앨범제목 : album

노래가발표된연도 : year

노래가속한앨범에서의트랙번호 : track

기본생성자만들기

모든필드를초기화하는생성자만들기

노래정보를출력하는메소드만들기

노래제목 : 좋은날

가수 : 아이유

앨범 : Real

년도 : 2010

트랙번호 : 3

Page 19: JAVA PROGRAMMING 실습 02. 표준 입출력 - gnu.ac.krclass.gnu.ac.kr/~smjeong/pdf/java/05.pdf · 2017. 10. 9. · JAVA PROGRAMMING 실습 02. 표준 입출력 Author: jinyoung

Box 클래스

속성 : 넓이, 높이, 깊이, 색상

메소드

▪ 상자의크기를설정하는메소드

▪ 상자의색상을설정하는메소드

▪ 상자의각속성을반환하는메소드

▪ 상자의정보를반환하는메소드

Page 20: JAVA PROGRAMMING 실습 02. 표준 입출력 - gnu.ac.krclass.gnu.ac.kr/~smjeong/pdf/java/05.pdf · 2017. 10. 9. · JAVA PROGRAMMING 실습 02. 표준 입출력 Author: jinyoung

속성정의 : 클래스가가지는데이터(필드)

Page 21: JAVA PROGRAMMING 실습 02. 표준 입출력 - gnu.ac.krclass.gnu.ac.kr/~smjeong/pdf/java/05.pdf · 2017. 10. 9. · JAVA PROGRAMMING 실습 02. 표준 입출력 Author: jinyoung

메소드정의 : 속성값설정( 변경자메소드 )

Page 22: JAVA PROGRAMMING 실습 02. 표준 입출력 - gnu.ac.krclass.gnu.ac.kr/~smjeong/pdf/java/05.pdf · 2017. 10. 9. · JAVA PROGRAMMING 실습 02. 표준 입출력 Author: jinyoung

메소드정의 : 속성값얻어오기( 접근자메소드)

Page 23: JAVA PROGRAMMING 실습 02. 표준 입출력 - gnu.ac.krclass.gnu.ac.kr/~smjeong/pdf/java/05.pdf · 2017. 10. 9. · JAVA PROGRAMMING 실습 02. 표준 입출력 Author: jinyoung

생성자

Page 24: JAVA PROGRAMMING 실습 02. 표준 입출력 - gnu.ac.krclass.gnu.ac.kr/~smjeong/pdf/java/05.pdf · 2017. 10. 9. · JAVA PROGRAMMING 실습 02. 표준 입출력 Author: jinyoung

상자정보반환 : toString ()객체가가지고있는정보나값들을문자열만들어리턴하는메소드

Page 25: JAVA PROGRAMMING 실습 02. 표준 입출력 - gnu.ac.krclass.gnu.ac.kr/~smjeong/pdf/java/05.pdf · 2017. 10. 9. · JAVA PROGRAMMING 실습 02. 표준 입출력 Author: jinyoung

객체의생성및사용

Page 26: JAVA PROGRAMMING 실습 02. 표준 입출력 - gnu.ac.krclass.gnu.ac.kr/~smjeong/pdf/java/05.pdf · 2017. 10. 9. · JAVA PROGRAMMING 실습 02. 표준 입출력 Author: jinyoung

상자의속성추가

상자의이름 : name

생성자추가

상자의이름을설정하는생성자추가

상자의동작추가,변경

상자의이름을설정하는메소드

상자의각속성을주어진값으로설정하는메소드

각속성별개별로설정

부피를계산하여반환해주는메소드

상자의정보반환시상자의이름을반환하도록메소드수정

Page 27: JAVA PROGRAMMING 실습 02. 표준 입출력 - gnu.ac.krclass.gnu.ac.kr/~smjeong/pdf/java/05.pdf · 2017. 10. 9. · JAVA PROGRAMMING 실습 02. 표준 입출력 Author: jinyoung

실행결과