본문 바로가기

Java/Java 객체지향 핵심 - 2

다형성(Polymorphism)의 활용 - 21

 

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

  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

Lion

package basic.exercise.toy;

public class Lion extends ToyMachine{
	
	String add;
	
	public Lion() {
		name = "사자인형";
		price = 2000;
		add = "호랑이인형";
	}
	
	public void addTiger() {
		System.out.println("=== 추가상품 ===");
		System.out.println(this.add +"를 추가로 줍니다.");
		
	}
	
}

 

Bear

package basic.exercise.toy;

public class Bear extends ToyMachine {
	
	public Bear() {
		name = "곰인형";
		price = 1500;
	}
}

 

AirPods

package basic.exercise.toy;

public class Airpods extends ToyMachine {
	public Airpods() {
		name = "에어팟";
		price = 100000;
	}
}

 

ToyMachine

package basic.exercise.toy;

import java.util.Random;

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

	String name;
	int price;

	public void catchingdoll() {
		System.out.println(name + "뽑기 도전 !");
		System.out.println();
	}

	public void showInfo() {
		System.out.println("=======================");
		System.out.println("상품 이름 : " + name);
		System.out.println("가격 : " + price + "원 짜리");
	}

	public static int makeNumber() {
		Random random = new Random();
		int resultNumber = random.nextInt(2);
		if (resultNumber == 1) {
			System.out.println("도전한 상품이 뽑혓습니다.");
		} else {
			System.out.println("도전한 상품이 뽑히지 않았습니다.");
		}
		return resultNumber;
	}

	public static int number() {
		Random random1 = new Random();
		int resultNumber = random1.nextInt(3);
		return resultNumber;
	}

}

 

코드의 흐름

package basic.exercise.toy;

import java.util.Random;
import java.util.Scanner;

public class ToyMachinTest {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);

		Lion lion = new Lion();
		Bear bear = new Bear();
		Airpods airpods = new Airpods();

		ToyMachine[] dolls = new ToyMachine[3];

		dolls[0] = lion;
		dolls[1] = bear;
		dolls[2] = airpods;

		// 도전 뽑기
		System.out.println("0. 사자인형 1. 곰인형 2. 에어팟");
		System.out.print("무엇을 뽑으시겠습니까? : ");
		int choice = sc.nextInt();
		dolls[choice].catchingdoll();
		if (makeNumber() == 1) {
			dolls[choice].showInfo();
			if (dolls[choice] instanceof Lion) {
				((Lion) dolls[choice]).addTiger();
			}
		}

		// 랜덤 뽑기
//		int a = number();
//		dolls[a].catchingdoll();
//		if (makeNumber() == 1) {
//			dolls[a].showInfo();
//			if (dolls[a] instanceof Lion) {
//				((Lion) dolls[a]).addTiger();
//			}
//		}
	}

	public static int makeNumber() {
		Random random = new Random();
		int resultNumber = random.nextInt(2);
		if (resultNumber == 1) {
			System.out.println("도전한 상품이 뽑혓습니다.");
		} else {
			System.out.println("도전한 상품이 뽑히지 않았습니다.");
		}
		return resultNumber;
	}

	public static int number() {
		Random random1 = new Random();
		int resultNumber = random1.nextInt(3);
		return resultNumber;
	}
}

'Java > Java 객체지향 핵심 - 2' 카테고리의 다른 글

인터페이스(interface) -23  (0) 2024.04.25
추상 클래스(abstract class) - 22  (0) 2024.04.24
다형성(Polymorphism) - 20  (0) 2024.04.24
연관, 의존 관계란? - 19  (0) 2024.04.23
Composition(포함관계) - 18  (0) 2024.04.23