지난 시간 복습
.
문제점
- 판매자나 구매자의 인스턴스를 여러개 만들어도 모두 동일한 데이터를 갖게 됨.
ex) 보유사과 20개에 단가 1000원인 판매자들이 생성됨.
모든 인스턴스의 멤버변수 값이 동일하다는 것을 의미
해결책
- 인스턴스의 멤버변수 값을 각기 다르게 지정할 수 있어야 함.
.
예제
/*
과일 판매자 : fruitSeller
- 멤버변수 : 사과개수(numOfApple), 매출액(myMoney), 가격(APPLE_PRICE)
- 메소드 : 판매(saleApple()), 현황보기(showSaleResult())
과일 구매자 : fruitBuyer
- 멤버 변수 : 사과개수(numOfApple), 사과 살 돈(myMoney)
- 메소드 : 구매(buyApple()), 현황보기(showBuyResult())
제어 : FruitSalesMain1
- fruitSeller와 fruitBuyer 클래스의 인스턴스를 생성하여 사과구매를 실행시킴
- 구매 후 판매자와 구매자의 현황을 확인
*/
class FruitSeller
{
int numOfApple;
int myMoney;
int APPLE_PRICE;
public void initMembers(int apple, int money, int price){
// 멤버변수의 값을 초기화 시키는 메소드
numOfApple = apple;
myMoney = money;
APPLE_PRICE = price;
}
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 = 10000;
public void buyApple(FruitSeller seller, int money){
numOfApple += seller.saleApple(money);
myMoney -= money;
}
public void showBuyResult(){
System.out.println("사과 개수 : " + numOfApple);
System.out.println("현재 잔액 : " + myMoney);
}
}
class FruitSalesMain2
{
public static void main(String[] args)
{
FruitSeller seller1 = new FruitSeller();
seller1.initMembers(30, 0, 1500);
FruitSeller seller2 = new FruitSeller();
seller2.initMembers(20, 0, 1000);
FruitBuyer buyer = new FruitBuyer();
buyer.buyApple(seller1, 4500);
buyer.buyApple(seller2, 2000);
System.out.println("과일 판매자1 현황");
seller1.showSaleResult();
System.out.println("과일 판매자2 현황");
seller2.showSaleResult();
System.out.println("과일 구매자 현황");
buyer.showBuyResult();
}
}
문제점
- APPLE_PRICE를 변수로 사용해야 함.
- 인스턴스 생성에 두 줄의 명령이 필요함.
- 언제든 initMember()메소드를 호출할 수 있어 모든 값이 변경될 수 있음.
해결책
- 생성자 이용
728x90
반응형
'Java > 본격 Java 클래스' 카테고리의 다른 글
[Java] 실습 - 사과판매3(생성자 이용) (0) | 2020.06.25 |
---|---|
[Java] 생성자(Constructor) (0) | 2020.06.25 |
[Java] 실습 - 사과 판매1 (0) | 2020.06.25 |
[Java] 인스턴스(instance) (0) | 2020.06.25 |
[Java] 전역 변수 - Local Variable (0) | 2020.06.25 |