Java(13) - 자동차 프로그램

JeJune Lee·2021년 8월 20일
0

Java

목록 보기
13/18

자동차 프로그램

이번에도 추상클래스, 추상 메소드를 사용하여 추상화된 프로그램을 구현해볼 것이다.
기본적으로 자동차 모델 클래스를 만든다음 좋은 차의 버전과 비교적 Low한 차의 버전 클래스를 만들어서 구현해 볼 것이다.

먼저 스펙을 미리 상수로 저장해둘 것 이다.

CarSpecs.java

package com.javalec.makecarex;

public class CarSpecs {

	public static final String COLOR_RED = "레드";
	public static final String COLOR_BLUE = "블루";
	
	public static final String TIRE_NORMAL = "일반타이어";
	public static final String TIRE_WILD = "광폭타이어";
	
	public static final int DISPLACEMENT_2000 = 2000;
	public static final int DISPLACEMENT_2200 = 2200;
	
	public static final String HANDLE_NORMAL = "일반핸들";
	public static final String HANDLE_POWER = "파워핸들";
	
}

자동차의 스펙을 상수로 나타내었다.

StarCar.java

package com.javalec.makecarex;

public abstract class StarCar {

	public String color;
	public String tire;
	public int displacement;
	public String handle;
	
	public StarCar(String color, String tire, int displacement, String handle) {
		this.color = color;
		this.tire = tire;
		this.displacement = displacement;
		this.handle = handle;
	}
	
	public abstract void getSpec();
	
}

기본적으로 필요한 변수들과 getSpec()이라는 추상 메소드를 선언해주었다. 이것을 이용해서 각각 low, high 스텍의 차 클래스를 설정할 수 있다.

StarCarHighGrade.java

package com.javalec.makecarex;

public class StarCarHighGrade extends StarCar {

	private int tax = 1000;
	
	public StarCarHighGrade(String color, String tire, int displacement, String handle) {
		super(color, tire, displacement, handle);
	}
	
	@Override
	public void getSpec() {
		System.out.println("****************************");
		System.out.println("색상 : " + color);
		System.out.println("타이어 : " + tire);
		System.out.println("배기량 : " + displacement);
		System.out.println("핸들 : " + handle);
		
		if(displacement > 2000) tax = 1500;
		System.out.println("세금 : " + tax);
		System.out.println("****************************");
	}

}

어차피 두 차의 클래스는 거의 동일한 코드일 것이다. 기본적으로 세금을 1000을 내는데 displacement 이 2000천 이상 즉, high 등급의 차이면 1500을 낸다.

StarCarLowGrade.java

package com.javalec.makecarex;

public class StarCarLowGrade extends StarCar {

	private int tax = 1000;
	
	public StarCarLowGrade(String color, String tire, int displacement, String handle) {
		super(color, tire, displacement, handle);
	}
	
	@Override
	public void getSpec() {
		System.out.println("****************************");
		System.out.println("색상 : " + color);
		System.out.println("타이어 : " + tire);
		System.out.println("배기량 : " + displacement);
		System.out.println("핸들 : " + handle);
		
		if(displacement > 2000) tax = 1500;
		System.out.println("세금 : " + tax);
		System.out.println("****************************");
	}

}

코드가 같은 것을 볼 수 있다. 이것또한 똑같은 로직으로 이루어져있다. 메인을 보자.

MainCalss.java

package com.javalec.makecarex;

public class MainClass {
	public static void main(String[] args) {
		
		StarCar starCarLowGrade = new StarCarLowGrade(CarSpecs.COLOR_BLUE, CarSpecs.TIRE_NORMAL, CarSpecs.DISPLACEMENT_2000, CarSpecs.HANDLE_POWER);
		StarCar starCarHighGrade = new StarCarHighGrade(CarSpecs.COLOR_RED, CarSpecs.TIRE_WILD, CarSpecs.DISPLACEMENT_2200, CarSpecs.HANDLE_NORMAL);
		
		starCarLowGrade.getSpec();
		starCarHighGrade.getSpec();
		
	}
}

메인클래스에서 상수들로 high스펙의 자동차엔 high스펙에 해당하는 상수를, low스펙의 자동차엔 low스펙에 해당하는 상수를 주었다. getSpec()메소드 호출해서 출력할 수 있다.

출력


색상 : 블루
타이어 : 일반타이어
배기량 : 2000
핸들 : 파워핸들
세금 : 1000



색상 : 레드
타이어 : 광폭타이어
배기량 : 2200
핸들 : 일반핸들
세금 : 1500


위처럼 출력되는 것을 확인 할 수 있다.

오늘은 여기까지..

저번 식대 프로그램이랑 비슷한 로직으로 이루어진 자동차 프로그램을 구현해보았다.

profile
Being Server developer

0개의 댓글