Java

다형성(Polymorphism)의 활용

H_u 2024. 4. 24. 16:46
728x90
반응형
SMALL

 

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

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

package basic.exercise.toy;

 

//클래스 - 인형뽑기

//상품들이 존재 가능

//사자인형, 곰인형, 에어팟

//요구 조건

//배열을 활용해서 객체들을 담아 주세요

public class ToyMachine {

 

 

 

}

 

package basic.exercise.toy;

 

public class ToyMachineTest {

 

// 코드 테스트

public static void main(String[] args) {

 

 

} // end of main

 

} // end of class

 

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() {}

}

728x90
반응형
SMALL