클래스의 상호작용

매개변수에 다른 객체를 넘겨줌으로써 상호작용을 할 수 있다.

  • buyer의 관점
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);
	}
}

  • seller 관점
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);
	}
}

좋은 웹페이지 즐겨찾기