자동차는 경차, 소형, 대형을 주차할 수 있다.
주차요금은 한달 단위로 지불하며 경차는 20000원
소형차는 40000원
대형차는 70000원이다.
경차, 소형, 대형중 저공해 자량을 인정 받은 차는 주차요금의 50% 할인 받는다.
메뉴는
1. 자동차등록
2. 주차요금 전체목록
3. 자동차조회
레벨업
소형차는 가족 구성원이 4명 이상이면 10% 할인을 추가로 받는다.
경차는 가족 구성원이 3명 이상이면 10% 할인을 추가로 받는다.
자동차 조회에서 주차요금 내역이 같이 조회된다.
등록날짜는 20220901형식의 텍스트로 입력한다.
car라는 부모 클래스를 만들고 Car를 상속받는 Small, Compact, Full 클래스를 만들어 준다.
변수는 Car 클래스에만 선언하였지만 상속받은 클래스에서도 쓸 수 있다.
각 차종별로 주차료가 다르기 때문에 추상메서드를 이용하여 주차료를 계산해 줄 수 있다.
> public class Compact extends Car{
@Override
public void Price() {
// TODO Auto-generated method stub
price=40000;
if(low_Pollution) {
price=price/2;
}
if(family>=4) {
price=(int) (price*(0.9));
}
}
@Override
public void carsize() {
// TODO Auto-generated method stub
size="소형";
}
}
public class Small extends Car{
@Override
public void Price() {
price=20000;
if(low_Pollution) {
price=price/2;
}
if(family>=3) {
price=(int) (price*(0.9));
}
}
@Override
public void carsize() {
// TODO Auto-generated method stub
size="경차";
}
}
public class Full extends Car{
@Override
public void Price() {
// TODO Auto-generated method stub
price=70000;
if(low_Pollution) {
price=price/2;
}
}
@Override
public void carsize() {
// TODO Auto-generated method stub
size="대형";
}
}
ArrayList <Car> cList=new ArrayList<>();
public void Input() {
System.out.println("경형을 선택해주세요");
System.out.println("1. 경차 2. 소형차 3. 대형차");
int no=in.nextInt();
in.nextLine();
if(no==1) {
Car c=new Small();
c.input();
cList.add(c);
}else if(no==2) {
Car c=new Compact();
c.input();
cList.add(c);
}else if(no==3) {
Car c=new Full();
c.input();
cList.add(c);
}
System.out.println("등록완료");
}
자동차 등록시 경형이 정해지면 경형에 맞게 객체를 생성하고 부모클래스에 있는 input 메서드가 실행된다.
public void input() {
System.out.println("차종을 입력해주세요");
carinfo=in.nextLine();
System.out.println("차 번호를 입력해주세요");
carnum=in.nextLine();
System.out.println("가족구성원은 총 몇명입니까?");
family=in.nextInt();
in.nextLine();
System.out.println("등록날짜를 입력하세요");
indate=in.nextLine();
System.out.println("저공해 차량 등록이 되어있습니까?");
System.out.println("1. 등록 2. 미등록");
int no=in.nextInt();
in.nextLine();
if(no==1) {
low_Pollution=true;
}else if(no==2) {
low_Pollution=false;
}
carsize();
Price();
}
키보드로 값을 입력받고 가격과 경형은 추상메서드로 자식클래스에 있는 메서드가 실행된다.
객체에 정보들이 저장된 후 객체의 주소를 ArrayList에 저장해 주었다.
public void Priceprt() {
for(Car car: cList) {
System.out.println("차번호: "+car.carnum);
System.out.println("주차요금: "+car.price);
System.out.println("-----------------------");
}
}
주차요금 전체목록 메서드는 등록된 차번호와 요금을 출력 시킨다.
등록된 자동차의 객체를 저장한 ArrayList를 for문을 돌려 등록된 모든 자동차의 정보를 출력시킨다.
public void search() {
System.out.println("검색할 차번호를 입력해주세요");
String Scarnum=in.nextLine();
for(Car car: cList) {
if(car.carnum.equals(Scarnum)) {
car.prt();
car.nextPrice();
return;
}
}
System.out.println("차량이 없습니다.");
}
차번호를 키보드로 입력받고 등록된 자동차의 객체를 저장한 ArrayList를 for문을 돌려 등록된 모든 자동차를 확인한다. equal()메서드를 사용하여 같은 차번호가 있을 시엔 자동차의 정보를 출력하고 return으로 메서드를 종료시킨다. (차번호는 중복될 수 없고 유일하다.)