과일 판매자 : fruitSeller
- 멤버 변수 : 사과개수(numOfApple), 매출액(myMoney), 가격(APPLE_PRICE)
- 메소드 : 판매(saleApple()), 현황보기(showSaleResult())
과일 구매자 : fruitBuyer
- 멤버 변수 : 사과개수(numOfApple), 사과 살 돈(myMoney)
- 메소드 : 구매(buyApple()), 현황보기(showBuyResult())
제어 : FruitSaleMain1
- fruitSeller와 fruitBuyer 클래스의 인스턴스를 생성하여 사과구매를 실행시킴
- 구매 후 판매자와 구매자의 현황을 확인
.
.
예제
class FruitSeller
{
int numOfApple = 20; // 보유 사과 개수
int myMoney = 0; // 매출액
final int APPLE_PRICE = 1000; // 사과 가격
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 numOfApple = 0; // 구매한 사과개수
int myMoney = 5000; // 사과 구매 금액
public void buyApple(FruitSeller seller, int money){
// 사과 구매 메소드로 판매자(seller)와 구매금액(money)을 매개변수로 가짐
numOfApple += seller.saleApple(money);
// 지정한 판매자에게 money만큼의 사과를 구매하여 사과개수를 늘림
// saleApple()메소드를 buyApple()메소드에서 실행 시키는 것은
// 반드시 판매(saleApple())와 구매(buyApple())가 같이 동작해야 하므로
myMoney -= money;
// 사과를 구매한 만큼 금액 차감
}
public void showBuyResult(){
// 구매 현황 보기 메소드
System.out.println("사과 개수 : " + numOfApple);
System.out.println("현재 잔액 : " + myMoney);
}
}
class FruitSalesMain1
{
public static void main(String[] args)
{
FruitSeller seller = new FruitSeller();
// FruitSeller 형 인스턴스 seller 선언 및 생성
// 사과 판매자 인스턴스를 1개 생성
FruitBuyer buyer = new FruitBuyer();
//FruitBuyer 형 인스턴스 buyer 선언 및 생성
// 사과 구매자 인스턴스를 1개 생성
buyer.buyApple(seller, 2000);
// buyer 인스턴스의 buyApple() 메소드 실행.
// 사과 구매액(2000)을 갖고 판매자(seller)에게 가서 사과 구매를 시도.
System.out.println("과일 판매자 현황");
seller.showSaleResult();
System.out.println("과일 구매자 현황");
buyer.showBuyResult();
}
}
문제점
- 판매자나 구매자의 인스턴스를 여러개 만들어도 모두 동일한 데이터를 갖게 됨.
ex) 보유사과 20개에 단가 1000원인 판매자들이 생성됨.
모든 인스턴스의 멤버변수 값이 동일하다는 것을 의미
해결책
- 인스턴스의 멤버변수 값을 각기 다르게 지정할 수 있어야 함.
728x90
반응형
'Java > 본격 Java 클래스' 카테고리의 다른 글
[Java] 생성자(Constructor) (0) | 2020.06.25 |
---|---|
[Java] 실습 - 사과판매2 (0) | 2020.06.25 |
[Java] 인스턴스(instance) (0) | 2020.06.25 |
[Java] 전역 변수 - Local Variable (0) | 2020.06.25 |
[Java] 메소드 실습 - 100이하 소수 찾기 (0) | 2020.06.25 |