매개변수에 다른 객체를 넘겨줌으로써 상호작용을 할 수 있다.
package ex02.classobj.fruit04;
/*
<클래스와 클래스의 상호관계>
1) 요구사항 : "과일구매자는 과일장수에게 사과 2개를 샀다"
를 객체지향 프로그래밍으로 묘사하라
2) 명사/동사 분류법
명사 ; 클래스, 필드
동사 ; 클래스(행위들이 여러개 모인 동사, 큰 동사), 메서드
3) 명사 ; 과일구매자, 과일장수, 사과
4) 동사 ; 샀다
5) 클래스의 대상 ; 과일구매자, 과일장수
6) 필드 : 사과(2개)
7) 샀다 : 메서드
*/
public class FruitMain {
public static void main(String[] args) {
FruitSeller seller = new FruitSeller();
FruitBuyer buyer = new FruitBuyer();
// seller.saleApple(buyer,2000); 판매자 입장에서 이렇게 해도 된다.
buyer.buyApple(seller, 2000);
seller.showSaleResult();
buyer.showBuyResult();
}
}
package ex02.classobj.fruit04;
public class FruitBuyer {
int myMoney = 5000; //보유금액
int numOfApples = 0; //사과개수
public void buyApple(FruitSeller seller, int money) {
numOfApples += seller.saleApple(money);
myMoney -= money;
}
public void showBuyResult() {
System.out.println("*** 과일 구매자의 현재 현황 ***");
System.out.println("현재 잔액 : " + myMoney);
System.out.println("사과 개수 : " + numOfApples);
}
}
package ex02.classobj.fruit04;
public class FruitSeller {
int numOfApples = 20; //사과 개수
int saleMoney = 0; //판매금액
final int APPLE_PRICE = 1000; //사과 1개 가격
public int saleApple(int money) {
int num = money / APPLE_PRICE;
numOfApples -= num;
saleMoney += money;
return num;
}
public void showSaleResult() {
System.out.println("*** 과일 장수의 현재 현황 ***");
System.out.println("남은 사과 : " + numOfApples);
System.out.println("판매 수익 : " + saleMoney);
}
}
package ex02.classobj.fruit05;
public class FruitMain {
public static void main(String[] args) {
FruitSeller seller = new FruitSeller();
FruitBuyer buyer = new FruitBuyer();
seller.saleApple(buyer, 2000);
seller.showSaleResult();
buyer.showBuyResult();
}
}
package ex02.classobj.fruit05;
public class FruitSeller {
int numOfApples = 20; // 사과 개수
int saleMoney = 0; // 판매 금액
final int APPLE_PRICE = 1000; // 사과 1개 가격
public void saleApple(FruitBuyer buyer, int money) {
int appleNum = money/APPLE_PRICE;
buyer.buyApple(appleNum, money);
numOfApples -= appleNum;
saleMoney += money;
}
public void showSaleResult() {
System.out.println("*** 과일 장수의 현재 현황 ***");
System.out.println("남은 사과 : " + numOfApples);
System.out.println("판매 수익 : " + saleMoney);
}
}
package ex02.classobj.fruit05;
public class FruitBuyer {
int myMoney = 5000; // 보유금액
int numOfApples = 0; // 사과개수
public void buyApple(int appleNum, int money) {
numOfApples += appleNum;
myMoney -= money;
}
public void showBuyResult() {
System.out.println("*** 과일 구매자의 현재 현황 ***");
System.out.println("현재 잔액 : " + myMoney);
System.out.println("사과 개수 : " + numOfApples);
}
}