객체지향 프로그래밍 복습 (3) Car Rental Class 구현
[JAVA] 객체지향 프로그래밍 복습 (3) Car Rental Class 구현
자바
자바(Java)는 C언어에 객체 지향적 기능을 추가하여 만든 C++과는 달리, 처음부터 객체 지향 언어로 개발된 프로그래밍 언어입니다. 자바는 자바 가상 머신(JVM, Java Virtual Machine)을 사용하여, 운영체제와는 독립적으로 동작할 수 있습니다. 따라서 자바는 어느 운영체제에서나 같은 형태로 실행될 수 있습니다. 바로 이러한 점이 수많은 개발자로 하여금 자바를 사용하게 하는 원동력이 되고 있습니다. 현재 자바는 전 세계에서 가장 많이 사용하는 프로그래밍 언어 중 하나입니다.
Car 클래스
자동차 렌탈 클래스를 작성합니다. 멤버 변수로는 자동차 number, 자동차 id, 자동차 status, 자동차 구매일자, 자동차 마일리지가 있고, id는 중복검사를 진행한 랜덤값이 저장되고 구매일자는 SimpleDateForamt 클래스를 이용하여 저장합니다. 자동차 상태(status)에는 enum으로 available, checkedOut, inService, discarded, sold 의 5가지 상태가 있습니다. 초기 정보는 생성자를 통해 저장합니다.
제공하는 기능은 자동차 정보 출력, 자동차 정보 변경, 최근 일자 순으로 정렬 기능이 있습니다.
package LAB03;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
public class Car {
public enum StatusType {
available, checkedOut, inService, discarded, sold
}
int carID;
StatusType status;
Date datePurchased;
int mileage;
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Car(Date d, int m) {
Random random = new Random();
this.carID = random.nextInt(9000) + 1000;
this.status = StatusType.available;
this.datePurchased = d;
this.mileage = m;
}
public void setMileage(int x) {
this.mileage = x;
}
public void setStatus(StatusType s) {
this.status = s;
}
public void printinfo() {
System.out.println("CarID: " + this.carID + "\nCar Status: " + this.status + "\nPurchased Date: " + dateFormat.format(this.datePurchased) + "\nCar Mileage: " + this.mileage);
System.out.println();
}
public static void main(String[] args) throws ParseException {
Random random = new Random();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = dateFormat.parse("2021-03-21");
Date date2 = dateFormat.parse("2021-03-22");
Date date3 = dateFormat.parse("2021-03-23");
Date date4 = dateFormat.parse("2021-03-24");
Date date5 = dateFormat.parse("2021-03-25");
Car[] carArray = new Car[5];
carArray[0] = new Car(date1, 0);
carArray[1] = new Car(date2, 10);
carArray[2] = new Car(date3, 100);
carArray[3] = new Car(date4, 1000);
carArray[4] = new Car(date5, 10000);
//CarID 중복 검사.
for(int i = 0; i < 4; i++) {
for(int j = i + 1; j < 5; j++) {
if (carArray[i].carID == carArray[j].carID) {
carArray[i].carID = random.nextInt(9000) + 1000; //중복 시 재설정.
}
}
}
System.out.println("자동차 정보 출력");
for(int i = 0; i < 5; i++) {
System.out.println("Car Number: " + (i+1) + "번");
carArray[i].printinfo();
}
//1번 자동차 상태 checkedOut으로 변경.
carArray[0].setStatus(StatusType.checkedOut);
System.out.println("첫번째 자동차 정보 변경 후 출력.");
for(int i = 0; i < 5; i++) {
System.out.println("Car Number: " + (i+1) + "번");
carArray[i].printinfo();
}
//최근 날짜 순으로 자동차 정렬.
Car tmp = new Car(date1, 0);
for(int i = 0; i < 4; i++) {
for(int j = i + 1; j < 5; j++) {
int compare = carArray[i].datePurchased.compareTo(carArray[j].datePurchased);
if (compare < 0) {
tmp = carArray[i];
carArray[i] = carArray[j];
carArray[j] = tmp;
}
}
}
System.out.println("최근 이용 자동차 순서로 정렬 후 출력.");
for(int i = 0; i < 5; i++) {
System.out.println("Car Number: " + (i+1) + "번");
carArray[i].printinfo();
}
}
}