JAVA를 잡아라!...

JAVA_[상속]_Car_ver1 본문

JAVA/JAVA_팀 프로젝트

JAVA_[상속]_Car_ver1

onivv 2023. 12. 3. 22:41

설계

▶ Car (상위 클래스)
     <멤버 변수>
             - String 브랜드
             - int 가격
      <생성자>
             - Car(브랜드, 가격)
      <메소드>
             - printInfo() : "브랜드: ㅇㅇ, 가격: ㅇㅇ원"


      ▶ DailyCar (하위 클래스)
      <멤버 변수>
           - int 연비
      <생성자>
           - DailyCar(브랜드, 가격, 연비)
      <메소드>
           - minMilige()
                 - Random으로 연비 받아오기
                 - if(연비 >= 18)
                 - true ---> "차 길들이기 성공"
                 - false ---> "차 길들이기 실패"
      <@메소드>
           - printInfo() : "브랜드: ㅇㅇ, 가격: ㅇㅇ원, 연비: ㅇㅇkm/h"


      ▶ FunCar (하위 클래스)
      <멤버 변수>
             - int 속도
      <생성자>
           - DailyCar(브랜드, 가격, 속도)
      <메소드>
           - speedUpDown()
                - Random으로 연비 받아오기
                - if(속도 <= 120)
                - true ---> "제한속도 통과"
                - false ---> "과속---속도를 줄이세요!"

 

코드ver1.0

package freefree;

import java.util.Random;

class Car {
	String brand;
	int price;
	Car(String brand, int price){
		this.brand = brand;
		this.price = price;
	}
	void printInfo() {
		System.out.print("브랜드: " + this.brand + ", 가격: " + this.price + "만원");
	}
}

class DailyCar extends Car {
	int gasMilige;
	DailyCar(String brand, int price){
		this(brand, price, new Random().nextInt(18));
	}
	DailyCar(String brand, int price, int gasMilige){
		super(brand, price);
		this.gasMilige = gasMilige;
	}
	@Override
	void printInfo() {
		//부모에 있는 기능을 포함해서 오버라이딩으로 자신의 기능을 추가(수정하고싶을때 편함)
		super.printInfo();
		System.out.println(", 연비: " + this.gasMilige);
	}
	void minMilige() {
		while(true) {
			int gasMilige = new Random().nextInt(30);
			if(gasMilige >= 18 ) {
				this.gasMilige = gasMilige;
				System.out.println("현재 연비: " + this.gasMilige + "km/h, 연비가 18이상이에요! good!");
				break;
			}
			System.out.println("현재 연비: " + gasMilige + "km/h, 분발하세요!");
		}	
	}
}
class FunCar extends Car {
	int speed;
	FunCar(String brand, int price){
		super(brand, price);
		this.speed = new Random().nextInt(80) + 20;
	}
	@Override
	void printInfo() {
		//부모에 있는 기능을 포함해서 오버라이딩으로 자신의 기능을 추가
		super.printInfo();
		System.out.println(", 속도: " + this.speed);
	}
	void speedUpDown() {
		while(true) {
			int speed = new Random().nextInt(300);
			if(speed <= 120 ) {
				this.speed = speed;
				System.out.println("현재 속도: " + this.speed + "km/h, 안전운행 good!");
				break;
			}
			System.out.println("현재 속도: " + speed + "km/h, 속도를 줄이세요!");
		}	
	}
}

public class Carcar {
	public static void main(String[] args) {
		DailyCar dc1 = new DailyCar("Hyundai", 5000);
		dc1.printInfo();
		dc1.minMilige();
		FunCar fc1 = new FunCar("Ford", 10000);
		fc1.printInfo();
		fc1.speedUpDown();
	}
}

 

코드ver1.1

package freefree;

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

class Car {
	String brand;
	int price;
	Car(String brand, int price){
		this.brand = brand;
		this.price = price;
	}
	void printInfo() {
		System.out.print("브랜드: " + this.brand + ", 가격: " + this.price + "만원");
	}
}

class DailyCar extends Car {
	int gasMilige;
	DailyCar(String brand, int price){
		this(brand, price, new Random().nextInt(18));
	}
	DailyCar(String brand, int price, int gasMilige){
		super(brand, price);
		this.gasMilige = gasMilige;
	}
	@Override
	void printInfo() {
		//부모에 있는 기능을 포함해서 오버라이딩으로 자신의 기능을 추가(수정하고싶을때 편함)
		super.printInfo();
		System.out.println(", 연비: " + this.gasMilige);
	}
	void minMilige() {
		while(true) {
			int gasMilige = new Random().nextInt(30);
			if(gasMilige >= 18 ) {
				this.gasMilige = gasMilige;
				System.out.println("현재 연비: " + this.gasMilige + "km/h, 연비가 18이상이에요! good!");
				break;
			}
			System.out.println("현재 연비: " + gasMilige + "km/h, 분발하세요!");
		}	
	}
}

class FunCar extends Car {
	int speed;
	FunCar(String brand, int price){
		super(brand, price);
		this.speed = new Random().nextInt(80) + 20;
	}
	@Override
	void printInfo() {
		//부모에 있는 기능을 포함해서 오버라이딩으로 자신의 기능을 추가
		super.printInfo();
		System.out.println(", 속도: " + this.speed);
	}
	void speedUpDown() {
		while(true) {
			int speed = new Random().nextInt(300);
			if(speed <= 120 ) {
				this.speed = speed;
				System.out.println("현재 속도: " + this.speed + "km/h, 안전운행 good!");
				break;
			}
			System.out.println("현재 속도: " + speed + "km/h, 속도를 줄이세요!");
		}	
	}
}

public class Carcar {
	public static void main(String[] args) {
//		DailyCar dc1 = new DailyCar("Hyundai", 5000);
//		dc1.printInfo();
//		dc1.minMilige();
//		FunCar fc1 = new FunCar("Ford", 10000);
//		fc1.printInfo();
//		fc1.speedUpDown();
		
		Car[] datas = new Car[5];
		int index = 0;
		Scanner sc = new Scanner(System.in);
		//예시 객체 2개 넣어놨음
//		datas[index++] = new DailyCar("Hyundai", 5000, 12);
//		datas[index++] = new FunCar("Ford", 10000);
		
		while(true) {
			System.out.println("==== 목  록 ====");
			System.out.println("1. 차 추가");
			System.out.println("2. 차 목록 출력");
			System.out.println("3. 차 연비 테스트");
			System.out.println("4. 차 스피드 테스트");
			System.out.println("0. 닫기");
			System.out.println("==============");
			System.out.println("입력 >>> ");
			System.out.println();
			int action = sc.nextInt();
			
			if(action == 1) {
				if(index >= 5) {
					System.out.println("차고가 가득 찼습니다.");
					continue;
				}
				while(true) {
					System.out.println("1. Dailycar 추가");
					System.out.println("2. Funcar 추가");
					System.out.println("입력 >>> ");
					action = sc.nextInt();
					if(action >=1 && action <= 2 ) {
						break;
					}
					System.out.println("다시 입력해주세요.");
				}
				if(action == 1) {
					System.out.println("브랜드 입력 >> ");
					String brand = sc.next();
					System.out.println("가격 입력 >> ");
					int price = sc.nextInt();
					datas[index++] = new DailyCar(brand, price);
				}
				else if(action == 2) {
					System.out.println("브랜드 입력 >> ");
					String brand = sc.next();
					System.out.println("가격 입력 >> ");
					int price = sc.nextInt();
					datas[index++] = new FunCar(brand, price);
				}
				
			}
			else if(action == 2) {
				if(index <= 0) {
					System.out.println("차가 없습니다...");
					continue;
				}
				for (int i = 0; i < index; i++) {
					if(datas[i] instanceof DailyCar) {
						DailyCar dc = (DailyCar)datas[i];
						dc.printInfo();
					}
					else if(datas[i] instanceof FunCar) {
						FunCar fc = (FunCar)datas[i];
						fc.printInfo();
					}
				}
			}
			else if(action == 3) {			
				//유효성 검사 : 차가 없는 경우, 데일리카가 없는 경우, 펀카만 있는 경우
				boolean dcCountCheck = false;
				for (int i = 0; i < index; i++) {
					if(datas[i] instanceof DailyCar) {
						dcCountCheck = true;
						DailyCar dc = (DailyCar)datas[i];
						dc.minMilige();
					}
				}
				if(!dcCountCheck) {
					System.out.println("DailyCar가 없습니다.");
				}
			}
			else if(action == 4) {
				//유효성 검사 : 차가 없는 경우, 데일리카가 없는 경우, 펀카만 있는 경우
				boolean fcCountCheck = false;
				for (int i = 0; i < index; i++) {
					if(datas[i] instanceof FunCar) {
						fcCountCheck = true;
						FunCar fc = (FunCar)datas[i];
						fc.speedUpDown();
					}
				}
				if(!fcCountCheck) {
					System.out.println("FunCar가 없습니다.");
				}
			}
			else {
				System.out.println("목록을 닫습니다.");
				break;
			}			
		}
	}
}

 

코드ver2.0

 

'JAVA > JAVA_팀 프로젝트' 카테고리의 다른 글

JAVA_[ArrayList]_Cafe_ver2  (0) 2023.12.10
JAVA_[ArrayList]_Cafe_ver1  (1) 2023.12.08
JAVA_[ArrayList]_Cafe_설계  (1) 2023.12.07
JAVA_[상속]_Car_ver2  (2) 2023.12.05
JAVA_[이진탐색]_ver1  (0) 2023.11.26