논리적으로 작업 순서 생각하기
- 클래스들을 설계 자신만에 기능, 속성 정의
- 다형성 적용(상속) 공통 속성 및 기능 묶기
- 기능 만들어 주기 요구 조건 : instanceof 연산자 활용
- 코드 테스트 실행 시나리오는 스스로 만들어 보기
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() {}
}
'Java > JAVA 2 - 객체지향 핵심' 카테고리의 다른 글
JAVA 2 - 중요한! 인터페이스(interface) (0) | 2024.04.25 |
---|---|
JAVA 2 - 추상클래스(abstract class) (0) | 2024.04.24 |
JAVA 2 - 다형성(Polymorphism) (0) | 2024.04.24 |
JAVA 2 - 연관, 의존 관계란? (0) | 2024.04.23 |
JAVA 2 - Composition(포함관계) (0) | 2024.04.23 |