ν΄λμ€ μ€κ³
ν΄λμ€ μ μ
- μλμ°¨λ₯Ό μμ λ°μ μΉμ©μ°¨, μ€ν¬μΈ μΉ΄, λ²μ€, λ§λ€κΈ°
- μλμ°¨μ νλλ μλμ°¨μμ μ μ ν΄μ μμμ μ€
- μλμ°¨λ μμμ© μ°¨μ΄λ©° μ΄ν νμ§ μλ μλμ°¨
μλμ°¨
μλμ°¨λ κ°μ²΄νκ° μλλ―λ‘ μΆμν
ꡬνν΄μΌ ν 곡ν΅μ λ©μλλ κΈ°λ³Έ μλμ°¨ ν΄λμ€μμ ꡬνν΄μ μμμ£Όλ κ²λ μ’μ λ°©λ²
- μλ
- μ°λΉ
- μ°λ£ν±ν¬ ν¬κΈ°
- μ’μμ
- μ°¨λμ΄λ¦
μ€ν¬μΈ μΉ΄
- μ°λΉ : 8km
- μλ : 250km
- μ°λ£ ν±ν¬ ν¬κΈ° : 30 리ν°
- μ’μμ : 2
- μ°¨λμ΄λ¦μ μμ±μμμ μ λ ₯ λ°μμ μ€μ
- λΆκ°κΈ°λ₯ : ν°λ³΄κΈ°λ₯ (μΌλ©΄ μλ 20% ν₯μ)
μΉμ©μ°¨
- μ°λΉ : 12km
- μλ : 200 km
- μ°λ£ ν±ν¬ ν¬κΈ° : 45 리ν°
- μ’μμ : 4
- μ°¨λμ΄λ¦μ μμ±μ μ λ ₯ λ°μμ μ€μ
- λΆκ°κΈ°λ₯ : νΈλ ν¬ (μΌλ©΄ μΉκ° 1λͺ μΆκ°)
λ²μ€
- μ°λΉ : 5km
- μλ : 150km
- μ°λ£ν±ν¬ ν¬κΈ° : 100리ν°
- μ’μμ : 20
- μ°¨λμ΄λ¦μ μ λ ₯ μμ±μ λ°μμ μ€μ
- λΆκ°κΈ°λ₯ : 보쑰μ°λ£ν±ν¬(μΌλ©΄ μ°λ£ν±ν¬ ν¬κΈ°κ° 30λ¦¬ν° λμ΄λ¨)
μ€μ μ 보
κΈ°λ³Έ μ€μ
- κΈ°λ¦κ°μ 1리ν°λΉ 2000μ
- μ°λΉλ? 리ν°λΉ μ£Όν거리λ₯Ό μλ―Έ ν©λλ€.
- λΆμ° 400km, κ°λ¦ 200km, λμ 150km, κ΄μ£Ό 300km
- μ²μ μΆλ°μ μ°λ£ν΅μλ κΈ°λ¦μ΄ μλ μν μ λλ€.
κΈ°λ₯ ꡬν
- μ΄λ μ§μμ μ ν νμΈμ (1. λΆμ°, 2. λμ , 3. κ°λ¦, 4. κ΄μ£Ό)
- μ΄λν μΉκ° μλ₯Ό μ λ ₯ νμΈμ ( 1 ~ 100 μ¬μ΄)
- μ΄λ μ°¨λμ μ ν νμΈμ. (1. μ€ν¬μΈ μΉ΄, 2.μΉμ©μ°¨, 3λ² λ²μ€)
- λΆκ° κΈ°λ₯μ ON/OFF λ₯Ό μ ν νμΈμ.
κ²°κ³Ό μΆλ ₯
- μ°¨λ μ΄λ¦ νμ
- μ΄λμ νμν μ΄ λΉμ© μ°μΆ(μ μνμ) : (λ¨, μ΄λ νμλ νΈλλ§ κ³μ°)
- μ£Όμ νμ(μ μνμ) :
- μ΄ μκ° κ³μ° ( μκ°λ¨μλ‘ νμνλ μμμ μ΄λΌ 2μ리κΉμ§ νμ) :
* κ°μ¬λμ΄ μλ €μ£Όμ μ½λλ₯Ό κΈ°λ°μΌλ‘ νμ΅ ν λ΄κ° λ€μ μμ±ν΄λ³΄μλ€.
* ꡬ쑰λ₯Ό μ§€ λμλ μ€κ³λλ₯Ό λ¨Όμ μμ±νκ³ μΆλ ₯μ νμν κΈ°λ₯μ μμ°¨μ μΌλ‘ μμ±ν΄ λκ° κ²
* κΈ°λ₯μ κ°κΈμ ν κΈ°λ₯μ νλμ κΈ°λ₯λ§ λ€μ΄κ° μ μλλ‘ κ΅¬νν κ²
* νλ κ°―μλ μ΅μνμΌλ‘..
* λΉμ₯ μλν μ½λλ₯Ό λ§λ€μ§ λ§κ³ , μΆν μμ ν λ νΈν μͺ½μΌλ‘ ꡬνν κ²
1. ν·κ°λ¦¬μ§ μκ² μ€κ³λ(Car 'λΆλͺ¨ ν΄λμ€') λ¨Όμ μ§°λ€.
> Car ν΄λμ€μ μΆμνλ₯Ό κ±Έκ³ (abstract) κ° μλμ°¨μ λ€μ΄κ° νλκ°μ μ μΈνκ³ ,
κ²°κ³Ό μΆλ ₯μ νμν κΈ°λ₯λ€ μ€ κ³΅ν΅λΆλΆμ Car ν΄λμ€μ ꡬννλ€.
> κ΅ν΅μλ¨ λ³λ‘ λ€λ₯Έ λΆκ°κΈ°λ₯μ abstract νμ¬ κ΅¬μ²΄μ μΈ κΈ°λ₯μ κ° μμ ν΄λμ€μμ ꡬν
2. [μ€ν¬μΈ μΉ΄, μΉμ©μ°¨, λ²μ€] μμ ν΄λμ€ μμ±
> μμ±μμμ μ΄λ¦μ μ λ ₯ λ°μ 보μ¬μ£Όλ λ©μλλ κ°μ΄ λ§λ€μλ€.
3. λ©μΈμ μ¬μ©μκ° μ£Όμ± μ λ ₯νλλ‘ ν΄μ κ° κ°μ λμ νκ³ ,
κ΅ν΅μλ¨μ μ νν λ κ°μ²΄λ₯Ό μμ±νμ¬ λμ λ°μΈλ©μΌλ‘ ꡬννμλ€.
Main
package μλμ°¨μ’
ν©μμ ;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int[] dist = {0, 400, 150, 200, 300};
Car car = null;
Scanner sc = new Scanner(System.in);
System.out.print("μ΄λ μ§μ [1]λΆμ° [2]λμ [3]κ°λ¦ [4]κ΄μ£Ό : ");
int city = sc.nextInt();
System.out.print("μΉκ° μ : ");
int passengers = sc.nextInt();
System.out.print("μ΄λ μ°¨λ [1]μ€ν¬μΈ μΉ΄ [2]μΉμ©μ°¨ [3]λ²μ€ : ");
int transportation = sc.nextInt();
switch(transportation) {
case 1 : car = new SportsCar("νλΌλ¦¬"); break;
case 2 : car = new Sedan("볼보 S90"); break;
case 3 : car = new Bus("522λ²"); break;
default : System.out.println("μ°¨λ μ νμ μλͺ» νμ
¨μ΅λλ€.");
}
System.out.print("λΆκ° κΈ°λ₯ [1]ON [2]OFF : ");
int option = sc.nextInt();
if(option == 1) car.addOption(true);
car.MoveCount(passengers);
System.out.println("====== " + car.getCarName() + " ======");
System.out.println("μ΄ λΉμ© : " + car.totalCost(dist[city]) + "μ");
System.out.println("μ£Όμ νμ : " + car.fuelCount(dist[city]) + "ν");
System.out.printf("μ΄ μκ° : %.2f\n",car.totalTime(dist[city]));
}
}
Car
tmi) μ°¨μ λν΄μλ μ λͺ°λΌμ νλνλ λ΄κ° μ΄ν΄ν μ μλλ‘ νμ΄κ°λ©΄μ μμ±νλ€.
β μ°λΉκ° 8μ΄λ©΄.. 1리ν°λ‘ 8kmλ₯Ό κ° μ μμ. 50리ν°λ‘ 400kmλ₯Ό κ° μ μλ€.
β μ΄ κ±°λ¦¬κ° 10km μ°λΉκ° 2km κΈ°λ¦κ° 1λ¦¬ν° 2000μ => 10λ¦¬ν° νμ
μ΄ κ±°λ¦¬ / μ°λΉ * 2000 = 5 * 2000 = 10000
β μ΄λ νμ = μΉκ° μ / μ’μ μ
β μ£Όμ νμ = (거리 * μ΄λνμ) / μ°λΉ / μ°λ£ν±ν¬ ν¬κΈ°
β μ΄λμ νμν μ΄ λΉμ© = 거리 * μ΄λ νμ / μ°λΉ * κΈ°λ¦κ°(2000)
β μ΄ μκ° = 거리 * μ΄λνμ / μμ
β μΈλΆμμ μ λ ₯ λ°λ μ 보 : μΉκ° μ, 거리, λΆκ°λͺ¨λ(on/off)
package μλμ°¨μ’
ν©μμ ;
abstract class Car {
protected int speed;
protected int fuelEfficiency;
protected int fuelTank;
protected int seat;
protected int moveCount;
protected String carName;
// μ°¨λ μ΄λ¦ νμ
public String getCarName() {
return carName;
}
// μ΄λ νμ
public int MoveCount(int passenger) {
if(passenger % seat != 0) moveCount = (passenger / seat) + 1;
else moveCount = passenger / seat;
return moveCount;
}
public int fuelCount(int dist) {
if(dist * moveCount / fuelEfficiency % fuelTank != 0) return dist * moveCount / fuelEfficiency / fuelTank + 1;
return dist * moveCount / fuelEfficiency / fuelTank;
}
public int totalCost(int dist) {
return dist * moveCount / fuelEfficiency * 2000;
}
public double totalTime(int dist) {
return (double)dist * moveCount / speed;
}
public abstract void addOption(boolean isOption);
}
SportsCar
package μλμ°¨μ’
ν©μμ ;
public class SportsCar extends Car{
String name;
SportsCar(String name) {
carName = name;
fuelEfficiency = 8;
speed = 250;
fuelTank = 30;
seat = 2;
}
@Override
public void addOption(boolean isOption) {
if(isOption) speed *= 1.2;
}
}
Sedan
package μλμ°¨μ’
ν©μμ ;
public class Sedan extends Car{
String name;
Sedan(String name) {
carName = name;
fuelEfficiency = 12;
speed = 200;
fuelTank = 45;
seat = 4;
}
@Override
public void addOption(boolean isOption) {
if(isOption) seat += 1;
}
}
Bus
package μλμ°¨μ’
ν©μμ ;
public class Bus extends Car{
String name;
Bus(String name) {
carName = name;
fuelEfficiency = 5;
speed = 150;
fuelTank = 100;
seat = 20;
}
@Override
public void addOption(boolean isOption) {
if(isOption) fuelTank += 30;
}
}