JAVA를 잡아라!...
JAVA_[상속]_Car_ver1 본문
설계
▶ 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 |