티스토리 뷰

끄적끄적_연습장/Java

Java - 4. 객체

QABABO 2015. 7. 28. 17:56

1. 객체(Object)


데이터(변수)

기능(메소드)



class FruitSeller    //판매자

{

final int APPLE_PRICE = 1000;

int numOfApple=20;    //변수 선언

int myMoney=0;    //


public int saleApple(int money)    //과일 판매 기능 구현

{

int num = money/APPLE_PRICE;

numOfApple -= num;

myMoney += money;

return num;

}

public void showSaleResult()    //출력

{

System.out.println("남은 사과 : "+numOfApple);

System.out.println("판매 수익 : "+myMoney);

}

}


class FruitBuyer    //구매자

{

int myMoney=5000;    //소유현금

int numOfApple=0;    //소유과일


public void buyApple(FruitSeller seller, int money)    //과일 구매 행위 표현

{

numOfApple += seller.saleApple(money);

myMoney -= money;

}

public void showBuyResult()    //출력

{

System.out.println("현재 잔액 : " + myMoney);

System.out.println("사과 개수 : " + numOfApple);

}

}



- final : 변수를 상수화 시킬때 사용되는 키워드, 값을 변경시키려고 하면 컴파일 에러

final int num1 = 100;


클래스가 가져야 할 데이터와 메소드를 정의해서 넣어둔다.

클래스 간의 관계를 구성하는 것이 중요하다.


클래스 : 틀

객체(인스턴스) : 변수, 메소드 실체


FruitSeller seller = new FruitSeller();

FruitSeller seller = new FruitBuyer();

  참조 변수           인스턴스 생성


참조 변수 : 객체 주소를 저장

Java는 C와 달리 메모리 연산을 제공하지 않는다.


생성된 객체 접근방법

변수 접근

Fruitseller seller = new FruitSeller();    //참조변수 seller

seller.numOfApple = 20;


메소드 접근

Fruitseller seller = new FruitSeller();

seller.saleApple(10);


참조변수와 메소드의 관계

인스턴스를 생성하고 임의의 메소드에서 참조변수를 인자로 받으면 같은 인스턴스를 가리키게 된다.

다시 말해서 메소드 호출 시에 참조변수를 넘겨주면 해당 메소드에서 새로운 인스턴스를 생성하는 것이 아니고

넘겨준 참조변수 공간을 직접 사용 가능하다.


- 여러 객체간의 상호 관계가 성립되는 동작에 대해서 내부 메소드에 구현해 두어야 한다.

  예를 들어, 서로 다른 클래스에 존재하는 두 메소드가 함께 실행되어야 한다면, 각 메소드에서 반대쪽 메소드를 실행하도록 구현해 두어야 한다.

  좀 더 구체적인 예로, 구매자와 판매자의 클래스가 있을 때, 구매자가 구입 메소드를 실행시킬때 판매자의 판매 메소드가 함께 실행되어야 하므로, 구입 메소드에는 판매 메소드를 호출해 주어야 하며, 판매 메소드에서는 구입 메소드를 호출해 주어야 한다.









'끄적끄적_연습장 > Java' 카테고리의 다른 글

Java - 5. 생성자(Constructor)  (0) 2015.07.29
Java - 3. 메소드  (0) 2015.07.28
Java - 2. 실행흐름의 컨트롤  (0) 2015.07.28
Java - 1. 변수, 자료형, 상수, 연산자  (0) 2015.07.28
Java - 0. 개발 환경 구성  (0) 2015.01.08