예습/code

여러 종류의 객체를 배열로 다루기

밀김 2023. 1. 13. 12:05
728x90
class Product2{ //부모 Product2클래스 생성
	int price;
	int bonusPoint;
	
	Product2(int price){ //반환타입이 int형인 변수price를 갖고있는 Product2매서드
		this.price = price; //매서드 프라이스의값은 클래스 프라이스와 같다
		bonusPoint = (int)(price/10.0); //클래스 프라이스 값을 10.0으로 나누고 그것을 int형으로 반환하는걸 클래스 보너스에 대입
	}
}




class Tv2 extends Product2{
	Tv2(){ //매개변수가 없는 매서드 Tv2
		super(100); //부모인 프로덕트2 매서드(int price) 에다가 100을 대입
	}
	public String toString() { 
		return "티비";
	}
	//문자형의 투스트링 매서드. 리턴값을 문자로 반환	
}




class computer2 extends Product2{
	computer2(){ //매개변수가 없는 매서드 computer2
		super(200); //부모인 프로덕트2 매서드(int price) 에다가 200을 대입
	}
	public String toString() {
		return "컴퓨터";
	}
	//문자형의 투스트링 매서드. 리턴값을 문자로 반환	
}




class Audio2 extends Product2{
	Audio2(){ //매개변수가 없는 매서드 Audio2
		super(50); //부모인 프로덕트2 매서드(int price) 에다가 50을 대입
	}
	public String toString() {
		return "오디오";
	}
	//문자형의 투스트링 매서드. 리턴값을 문자로 반환	
}




class Buyer2{ 
	int money = 1000;
	int bonusPoint = 0;
	int i =0; 
	//초기화
	
	Product2[] cart = new Product2[10];
	//cart라는 객체 생성. 거기에 0~9까지의 배열을 가진 Product2객체를 연결한다

	
	void buy(Product2 p) { //Product2타입인 변수p를 buy매서드에 대입한다(p는 객체가 아님. 변수p)
		if(money < p.price) { //물건값보다 내가 가진 돈이 적다면
			System.out.println("잔액부족"); 
			return;
		}	//잔액부족 문구를 반환한다
		
		money -= p.price; //가진돈에서 물건값만큼 빼걸 머니에 저장하고
		bonusPoint += p.bonusPoint; //갖고있는 포인트에서 보너스포인트 점수까지 더한걸 보너스포인트에 저장하고
		cart[i++] = p; //cart[0]~[9] = cart[i]로 표현!!!!!!!!!
		
		System.out.println(p.toString() + "를 구입");
	}
	
	
	
	void summary() { //매개변수가 없는 써머리 매서드(구입한 물건들에 대한 항목을 보여주는 용도)
		int sum = 0;
		String itemList = "";
		//초기화
		
		for(int i=0; i<cart.length; i++){ //i<cart.length(0~9)
			if(cart[i]==null) break; //만약 객체cart의 i에 null(아무것도없다)면 구문을 종료해라
			sum += cart[i].price; //객체cart의 i가 가리키고 있는 모든 가격값을 sum값과 더하고 그 값을 sum에 저장(=총액)
			itemList += cart[i].toString() + ","; //객체cart의 i가 가리키고있는 모든 투스트링과 아이템리스트값을 합쳐서 그 값을
			                                      //아이템 리스트에 문자열로 저장
		} //+=   :   오른쪽 피연산자의 값을 왼쪽 피연산자와 더해서 왼쪽 피연산자에 저장.
		  //-=   :   오른쪽 피연산자의 값을 왼쪽 피연산자에서 빼서 왼쪽 피연산자에 저장합니다.
		
		System.out.println("구입한 물품 총액은"+sum+"입니다");
		System.out.println("구입한 제품은"+itemList+"입니다");
	}
}








class Ex7_8 {
	public static void main(String args[]) {
		Buyer2 b = new Buyer2(); //객체b 생성
		
		b.buy(new Tv2()); //객체b가 가리키는buy에 객체tv2 저장
		b.buy(new computer2()); //객체b가 가리키는buy에 객체com2 저장
		b.buy(new Audio2()); //객체b가 가리키는buy에 객체audio2 저장
		b.summary(); //객체b로 summary 가리킴 
	}
}

너무어렵다!!!!!!!!!

 

 

728x90