Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions src/main/java/car/Avante.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package car;

public class Avante extends Car {
private final double tripDistance;

public Avante(double tripDistance) {
this.tripDistance = tripDistance;
}

@Override
public double getDistancePerLiter() {
return 15.0;
}

@Override
public double getTripDistance() {
return tripDistance;
}

@Override
public String getName() {
return "Avante";
}
}
11 changes: 11 additions & 0 deletions src/main/java/car/Car.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package car;

public abstract class Car {
public abstract double getDistancePerLiter();
public abstract double getTripDistance();
public abstract String getName();

public double getChargeQuantity() {
return getTripDistance() / getDistancePerLiter();
}
}
24 changes: 24 additions & 0 deletions src/main/java/car/K5.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package car;

public class K5 extends Car {
private final double tripDistance;

public K5(double tripDistance) {
this.tripDistance = tripDistance;
}

@Override
public double getDistancePerLiter() {
return 13.0;
}

@Override
public double getTripDistance() {
return tripDistance;
}

@Override
public String getName() {
return "K5";
}
}
24 changes: 24 additions & 0 deletions src/main/java/car/Sonata.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package car;

public class Sonata extends Car {
private final double tripDistance;

public Sonata(double tripDistance) {
this.tripDistance = tripDistance;
}

@Override
public double getDistancePerLiter() {
return 10.0;
}

@Override
public double getTripDistance() {
return tripDistance;
}

@Override
public String getName() {
return "Sonata";
}
}
31 changes: 31 additions & 0 deletions src/main/java/company/RentCompany.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package company;

import car.Car;
import java.util.ArrayList;
import java.util.List;

public class RentCompany {
private final List<Car> cars = new ArrayList<>();

private RentCompany() {}

public static RentCompany create() {
return new RentCompany();
}

public void addCar(Car car) {
cars.add(car);
}

public String generateReport() {
StringBuilder report = new StringBuilder();
for (Car car : cars) {
report.append(car.getName())
.append(" : ")
.append((int) Math.ceil(car.getChargeQuantity()))
.append("리터")
.append(System.lineSeparator());
}
return report.toString();
}
}
28 changes: 28 additions & 0 deletions src/test/java/company/RentCompanyTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package company;

import car.Avante;
import car.K5;
import car.Sonata;
import company.RentCompany;

public class RentCompanyTest {
private static final String NEWLINE = System.getProperty("line.separator");

public static void main(String[] args) {
RentCompany company = RentCompany.create();
company.addCar(new Sonata(150));
company.addCar(new K5(260));
company.addCar(new Sonata(120));
company.addCar(new Avante(300));
company.addCar(new K5(390));

String report = company.generateReport();
System.out.println(report);
// 예상 결과:
// Sonata : 15리터
// K5 : 20리터
// Sonata : 12리터
// Avante : 20리터
// K5 : 30리터
}
}