메인클래스
// 금액부족으로 빠지는지 확인
package quiz12;
public class MainClass {
public static void main(String[] args) {
MyCart my = new MyCart(5000);
Radio ra = new Radio();
Computer comp = new Computer();
Tv tv = new Tv();
my.buy(comp);
my.buy(ra);
my.buy(tv);
my.buy(comp);
my.buy(ra);
my.buy(comp);
my.buy(ra);
my.buy(tv);
my.buy(comp);
my.buy(ra);
}
}
package quiz12;
public class MyCart {
/*
철수는 TV객체, Radio객체, Computer객체를 전달받아서 계산하는 Cart클래스를 만드려고한다.
Product클래스는 부모클래스 이다.
Tv, Radio, Computer는 자식클래스 이다.
Product클래스에는 필요한 변수가 선언되어 있고 getter, setter가 생성되어 있다.
*/
private int money;
private Product[] cart = new Product[1]; //상품을 저장할 배열
private int i = 0;
//2. MyCart의 생성자는 money만 받아서 초기화
public MyCart(int money) {
this.money = money;
}
/*
* 3. buy(모든 상품을 받도록 선언)
* ************객체의 getter메서드의 활용*************
* 가진돈과 전달된 물건객체의 가격을 비교해서 돈이 적으면 "금액부족" 출력후에 종료하세요.
* 가진돈이 충분하면 물건의 가격을 money에서 차감하고 add(상품) 메서드를 호출합니다.
*/
public void buy(Product p) {
int price = p.getPrice();
if( this.money - price < 0) {
System.out.println("금액부족");
}else {
this.money = this.money-price;
add(p);
}
}
/*
* 4. add(모든 상품을 받도록 선언)
* *************배열의 복사**************
* 만약 i의 값이 장바구니의 크기보다 같거나 크다면
* 기존의 장바구니보다 크기가 * 2큰 배열을 생성.
* 기존의 장바구니 값을 새로운 배열에 복사.
* 새로운 장바구니를 기존의 장바구니와 바꾼다.
*
* 상품(매개변수)을 장바구니(배열)에 담는다.
*
* info()메서드 호출
*/
private void add(Product p) {
if(i>=this.cart.length) {
Product[] cart = new Product[this.cart.length*2];
for(int j = 0 ; j<this.cart.length; j++) {
cart[j] = this.cart[j];
}
this.cart = cart;
}
this.cart[i] = p;
i++;
info();
}
/*
* 5.info()
* - 장바구니 안에 담긴 물건의 목록(name)을 출력한다.
* - 남은금액 출력
* 출력예시: TV TV Computer Radio ......
* 남은금액: 500
* 메인에서 buy메서드 실행
*
*/
public void info() {
for(Product p : cart) {
if(p==null) break; //배열에 값이 없으면 탈출
System.out.print(p.getName()+" ");
}
System.out.println();
System.out.println("남은금액 : " +money+"원");
}
}
부모클래스
package quiz12;
public class Product {
//상품의 부모클래스 - 수정x
private int price;
private String name;
public Product(int price, String name) {
this.price = price;
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package quiz12;
public class Radio extends Product {
//Radio의 생성자는 기본생성자로 만들고, super를 통해서 가격 500원, 이름은 radio로 저장
//get, set메서드는 자동으로 상속됩니다
public Radio() {
super(500, "radio");
}
}
package quiz12;
public class Computer extends Product {
//가격 600원 이름은 com
//get, set메서드는 자동으로 상속됩니다
public Computer() {
super(600, "com");
}
}
package quiz12;
public class Tv extends Product {
//가격 400원 이름은 tv
//get, set메서드는 자동으로 상속됩니다
public Tv() {
super(400, "tv");
}
}
'JAVA > 코드' 카테고리의 다른 글
2022_10_13 연습 02 day08.static_.var (0) | 2022.10.13 |
---|---|
2022_10_13 연습 01 day08.poly.instanceof_ (0) | 2022.10.13 |
2022_10_12 연습 04 다형성 배열 & 이종모음 (0) | 2022.10.12 |
2022_10_12 연습 03 다형성 연습 (클래스캐스팅) (0) | 2022.10.12 |
2022_10_12 연습 02 다형성 설명 (0) | 2022.10.12 |
댓글