jayden

다형성(Polymorphism)의 활용 - 21 본문

카테고리 없음

다형성(Polymorphism)의 활용 - 21

동윤123 2024. 4. 30. 16:29

논리적으로 작업 순서 생각하기

  1. 클래스들을 설계 자신만에 기능, 속성 정의
  2. 다형성 적용(상속) 공통 속성 및 기능 묶기
  3. 기능 만들어 주기 요구 조건 : instanceof 연산자 활용
  4. 코드 테스트 실행 시나리오는 스스로 만들어 보기
package basic.exercise.toy;

// 클래스 - 인형뽑기
// 상품들이 존재 가능 
// 사자인형, 곰인형, 에어팟
// 요구 조건 
// 배열을 활용해서 객체들을 담아 주세요 
public class ToyMachine {

	
	
}
학생 코드 리뷰 
package basic.exercise.Toy;

import java.util.Random;
// 인형 뽑기 설계하기
// 상품들이 존재 가능
// 사자 인형, 곰 인형, 에어팟

// 요구 조건
// 배열을 활용해서 객체들을 담아주세요
public class ToyMachine {
    private int have = 0;
    private int tryNumber = 0;
    private final int MAX_NUMBER = 4;
    private Product[] products;

    // 배열 return
    public Product[] getProducts() {
        return products;
    }

    // setter 메서드
    public void setProducts(Product[] products) {
        this.products = products;
    }

    // 사용자 정의 생성자
    public ToyMachine() {
        products = new Product[MAX_NUMBER];
    }

    // ToyMachine에 toy 넣기
    public void addProduct(Product product) {
        // 0 < 4
        if (have < MAX_NUMBER) { // 최대 용량보다 가진 toy 수가 적을 때 
            products[have] = product; //(가진 갯수)번째 products 배열 값에 product를 넣는다.
            have++;
        }
    }
    
    public void showInfo() {
        for(int i=0; i<have; i++) {
            if(products[i]!=null) {
                System.out.println(products[i].name);
            }
        }
    }
    

    public void start() {
        System.out.println("인형뽑기를 시작합니다."); 
        
        Random random = new Random();
        int i = random.nextInt(3) + 1; // toy 랜덤 값
        int num = random.nextInt(10); // 이벤트 랜덤 값
        System.out.println(products[i].name + "이 나왔습니다.");
        if (num == 4) { // num이 4이면 fail() 이벤트 발생
            fail();
        } else if (num == 7) { // num이 7이면 lucky() 이벤트 발생
            lucky();
        }
    }

    public void fail() {
        System.out.println("앗!");
        System.out.println("상품을 중간에 놓쳐버렸다!");
    }

    public void lucky() {
        System.out.println("럭키!");
        Random random = new Random();
        int i1 = random.nextInt(3) + 1;
        System.out.println(products[i1].name + "를 함께 뽑았다!");
    }

}
package basic.exercise.Toy;

import java.util.Random;

public class Doll extends Product {

    public Doll(String name) {
        super(name);
    }

    public void getDoll() {
        System.out.println("축하합니다, " + this.name + "인형을 뽑았습니다!");
    }
    
    public void check() {
        Random random=new Random();
        int a=random.nextInt(2);
        if(a==0) {
            System.out.println("먼지가 쌓이고 실이 삭았다. 새걸로 교체해주자.");
        }
        else {
            System.out.println("아직 새 것처럼 예쁜 인형이다.");
        }
    }

}
 package basic.exercise.Toy;

public class Product {
    String name;
    int price;

    public Product(String name) {
        this.name = name;
    }
    
    public void check() {}
}