정구리의 우주정복

[Java] 상속이랑 등등 본문

STUDY/K-DIGITAL

[Java] 상속이랑 등등

Jungry_ 2022. 9. 6. 23:41
반응형
  • Fruit.java => 부모가 될 클래스
  • Banana.java => 상속 1
  • Apple.java => 상속 2
  • Orange.java => 상속 3
  • SellMain.java =>메인 함수
  • SellFruit.java => 총 가격과 개수가 들어있는 것
  • SellService.java => Main 에서 동작할 서비스들 

오늘은 졸려서 대충 쓸거임

 

Fruit.java

package ch01.quiz02.case04Answer;

public class Fruit {

	private String name;
	private int price;
	private int num;
	
	public int getPrice() {
		return price;
	}
	
	public int getNum() {
		return num;
	}
	
	public void setPrice(int price) {
		this.price = price;
	}
	public void setNum(int num) {
		this.num = num;
	}
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	public void output() {
		
	}
}

private 로 애들 만들어주고 getter/setter 만들어줬다 

 

Orange,Banana,Apple .java

셋을 동일한 모양을 가지고 있다 

package ch01.quiz02.case04Answer;

public class Orange extends Fruit{

	String name = "Orange";
	int price = 2000;
	int num = 20;
	
	public int getPrice() {
		return price;
	}
	
	public int getNum() {
		return num;
	}
	
	public void setPrice(int price) {
		this.price = price;
	}
	public void setNum(int num) {
		this.num = num;
	}
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	@Override
	public void output() {
		System.out.println("### 오렌지 ###");
		System.out.println("수량 : "+num);
	}
}

Fruit 를 상속 받고 price 랑 num 을 설정해준다 이후 getter/setter 만들기 

 

 

SellFruit.java

package ch01.quiz02.case04Answer;

public class SellFruit {

	private int totalPrice;
	private int totalNum;
	
	public int getTotalPrice() {
		return totalPrice;
	}
	public int getTotalNum() {
		return totalNum;
	}
	public void setTotalPrice(int price) {
		this.totalPrice += price;
	}
	public void setTotalNum(int num) {
		this.totalNum += num;
	}
	
	
}

각 과일들 판 가격의 총 합과 개수가 들어갈 변수들을 만들어주고 getter/setter 만들어준다 

 

package ch01.quiz02.case04Answer;

public class SellMain {

	public static void main(String[] args) {
		
		SellService ss = new SellService();
		SellFruit[] sf = new SellFruit[3];
		for(int i=0; i<sf.length; i++) {
			sf[i] = new SellFruit();
		}
		
		while(true) {
			int menu = ss.menu();
			
			switch(menu) {
			case 0:
				System.out.println("프로그램 종료");
				return;
			case 1:
				sf = ss.sell(sf);
				break;
			case 2:
				ss.sellInfo(sf);
				break;
			case 3:
				ss.amount();
				break;
			default:
				System.out.println("다시 입력해주세요");
			}
		}

	}

}

메인이다 

1. 판매 

2. 총 판매 개수, 가격 출력

3. 재고 출력 

기능이 구현되어있다 

 

재고를 각 과일별로 관리할 것이기 때문에 

SellFruit[] sf = new SellFruit[3] 이렇게 넣어줬다

그리고 for 문 이용해서 객체들을 생성해준다 

 

SellService.java

package ch01.quiz02.case04Answer;

import java.util.Scanner;

public class SellService {

	Scanner sc = new Scanner(System.in);
	Fruit[] f = new Fruit[3];
	
	public SellService() {
		f[0] = new Banana();
		f[1] = new Apple();
		f[2] = new Orange();
	}
	

	
	
	public int menu() {
		System.out.println("###메뉴###");
		System.out.println("1. 판매 ");
		System.out.println("2. 매출 정보 보기");
		System.out.println("3. 재고 보기 ");
		System.out.println("0. 프로그램 종료 ");
		System.out.printf(">>>");
		return sc.nextInt();
	}

	public SellFruit[] sell(SellFruit[] sf) {
		
		System.out.println("1. 바나나");
		System.out.println("2. 사과");
		System.out.println("3. 오렌지");
		System.out.printf("과일 선택 >>>");
		
		int fruitType = sc.nextInt();
		
		System.out.printf("개수 입력 >>>  ");
		int fruitNum = sc.nextInt();
		
		if(f[fruitType-1].getNum()-fruitNum < 0) { //개수 부족할 때 
			System.out.println("개수가 부족합디다");
			return sf;
		}
		System.out.println("work");
		sf[fruitType-1].setTotalNum(fruitNum);
		sf[fruitType-1].setTotalPrice((f[fruitType-1].getPrice()) * fruitNum);
		f[fruitType-1].setNum(f[fruitType-1].getNum()-fruitNum);

		return sf;

	}




	public void sellInfo(SellFruit[] sf) {
		for(SellFruit x : sf) {
			System.out.println("### 과일  ###"); //이거 걍 배열 받아서 바꾸면 됨 
			System.out.println(x.getTotalNum());
			System.out.println(x.getTotalPrice());
		}
		

		
	}


	public void amount() {
		for(int i=0 ; i<f.length; i++) {
			f[i].output();
		}	
	}
}

SellService.java

과일을 관리한 fruit 를 선언해주자 

그리고 SellService 를 초기화 시 f 안에 자동으로 각 과일들이 초기화 되도록 만들어준다 이후는 배열 사용해서 뚝딱뚝딱 ㅁ만들면 별로 어렵지 않다 !! 내일 더 구체적으로 작성하겠음 !!

반응형
Comments