β¨ κ°μ²΄μ§ν₯ ν¨λ¬λ€μμμμ ν΅μ¬ : μν , μ± μ, νλ ₯
μμ λ§νλ ν΄λμ€, μμ, μ§μ° λ°μΈλ©μ΄ κ°μ²΄μ§ν₯μμ μ€μνμ§ μμ κ²μ΄ μλμ§λ§, μ΄λ€μ ꡬν μΈ‘λ©΄μ μΉμ°μ³μ Έ μλ€.
κ°μ²΄μ§ν₯μμμ ν΅μ¬μ μν , μ± μ, νλ ₯μ΄λ€.
νλ ₯μ ꡬμ±νκΈ° μν΄ μ μ ν κ°μ²΄λ₯Ό μ°Ύκ³ , μ μ ν μ± μμ ν λΉνλ κ³Όμ μμ κ°μ²΄μ§ν₯ μ€κ³μ ν΅μ¬μ νμΈν μ μλ€.
ν΄λμ€μ μμκ³Ό κ°μ κ²μ μ± μκ³Ό νλ ₯μ΄ μ΄λ μ λ μ리λ₯Ό μ‘μ νμ μ¬μ©ν μ μλ ꡬν λ©μ»€λμ¦μΈ κ²μ΄λ€.
νλ ₯
μ΄λ€ κ°μ²΄κ° λ€λ₯Έ κ°μ²΄μκ² λ¬΄μμΈκ°λ₯Ό μμ²νλ κ² π λ©μμ§ μ μ‘ (μμ²κ³Ό μλ΅)
μμ μκ² ν λΉλ μ± μμ μνν λ νμν μ 보λ₯Ό μμ§ λͺ»νκ±°λ μΈλΆμ λμμ΄ νμν κ²½μ° μ μ ν κ°μ²΄μκ² λ©μμ§ μ μ‘ν΄μ νλ ₯ μμ²
π κ°μ²΄λ₯Ό ꡬμ±νλ νλκ³Ό μν λͺ¨λλ₯Ό κ²°μ = κ°μ²΄λ₯Ό μ€κ³νλ λ° νμν λ¬Έλ§₯ μ 곡
public class Movie {
private String title;
private Duration runningTime;
private Money fee;
private DiscountPolicy discountPolicy;
public Movie(String title, Duration runningTime, Money fee, DiscountPolicy discountPolicy){
this.title = title;
this.runningTime = runningTime;
this.fee = fee;
this.discountPolicy = discountPolicy;
}
public Money getFee(){
return fee;
}
public Money calculateMovieFee(Screening screening){
return fee.minus(discountPolicy.calculateDiscountAmount(screening));
}
}
- μ맀 μκΈ κ³μ°νκΈ° μν΄ Screeningμ΄ Movieμ calculateMovieFee λ©μμ§λ₯Ό μ μ‘ν¨μΌλ‘μ¨ μ맀μ μκΈ κ³μ° μμ²
- μκΈμ κ³μ°νλ λ° νμν κΈ°λ³Έ μκΈκ³Ό ν μΈ μ μ± μ κ°μ₯ μ μκ³ μλ κ°μ²΄κ° Movieμ΄λ―λ‘ Movieμκ² μ²λ¦¬ μμ
- λ§μ½ Screeningμ΄ κ³μ°νλ€λ©΄ Movieμ μΈμ€ν΄μ€ λ³μμΈ feeμ discountPolicyμ μ§μ μ κ·Όν΄μΌνλ―λ‘ (= μΊ‘μν μμΉ μλ°) Screeningμ Movieμ λ΄λΆ ꡬνμ κ²°ν©λ¨ π μ 보μ νλμ΄ Movieμ Screening λ³λμ κ°μ²΄λ‘ λλ¨
- μμ μ΄ ν μ μλ μΌμ λ€λ₯Έ κ°μ²΄μκ² μμνλ©΄ νλ ₯μ μ°Έμ¬νλ κ°μ²΄λ€μ μ 체μ μΈ μμ¨μ± ν₯μ
β¨ κ°μ²΄λ₯Ό μμ¨μ μΌλ‘ λ§λ€κΈ°
π λ΄λΆ ꡬν μΊ‘μν
π κ°μ²΄ μ¬μ΄μ κ²°ν©λ λμ¨νκ²
μ± μ
νλ ₯μ μ°Έμ¬νκΈ° μν΄ κ°μ²΄κ° μννλ νλ λ° μ μ§ν΄μΌ νλ μ 보
π νλ ₯ μμμ κ°μ²΄μκ² ν λΉν μ± μμ΄ μΈλΆμ μΈν°νμ΄μ€μ λ΄λΆμ μμ± κ²°μ
π κ°μ²΄μκ² μΌλ§λ μ μ ν μ± μμ ν λΉνλλκ° μ€κ³μ μ 체μ μΈ νμ§ κ²°μ
β³οΈ νλ κ²
- κ°μ²΄λ₯Ό μμ±νκ±°λ κ³μ°μ μννλ λ±μ μ€μ€λ‘ μν
- λ€λ₯Έ κ°μ²΄μ νλ μμμν€κΈ°
- λ€λ₯Έ κ°μ²΄μ νλμ μ μ΄νκ³ μ‘°μ νκΈ°
β³οΈ μλ κ²
- μ¬μ μΈ μ 보μ λν΄ μκΈ°
- κ΄λ ¨λ κ°μ²΄μ λν΄ μκΈ°
- μμ μ΄ μ λνκ±°λ κ³μ°ν μ μλ κ²μ λν΄ μκΈ°
ex) Screeningμ μ± μ = μν μ맀, μμ μν νμ / Movieμ μ± μ = μκΈ κ³μ°, κ°κ²©κ³Ό ν μΈμ μ± νμ
β΄οΈ μ± μμ ν λΉν λ κ³ λ €ν΄μΌνλ λ κ°μ§ μμ
1οΈβ£ λ©μμ§κ° κ°μ²΄λ₯Ό κ²°μ
- κ°μ²΄μκ² μ± μμ ν λΉνλ λ° νμν λ©μμ§ λ¨Όμ μλ³
- λ©μμ§λ₯Ό μ²λ¦¬ν κ°μ²΄λ₯Ό λμ€μ μ ν
- κ°μ²΄κ° μ΅μνμ μΈν°νμ΄μ€λ₯Ό κ°μ§ μ μκ² λ¨
- κ°μ²΄λ μΆμμ μΈ μΈν°νμ΄μ€λ₯Ό κ°μ§ μ μκ² λ¨
2οΈβ£ νλμ΄ μνλ₯Ό κ²°μ
- κ°μ²΄κ° νλ ₯μ μ ν©νμ§λ₯Ό κ²°μ νλ κ² = νλ
μν
κ°μ²΄κ° μ΄λ€ νΉμ ν νλ ₯ μμμ μννλ μ± μμ μ§ν©
ex). Movie κ°μ²΄λ ν μΈ μκΈμ κ³μ°ν΄μΌνλ μ±
μμ κ°μ§κ³ μλ€.
ν μΈμκΈ κ³μ°μ ν μΈκΈμ‘κ³Ό ν μΈμ¨μ λ°λΌ κ²°μ λλλ°, μ΄ λ μ’
λ₯μ ꡬ체μ μΈ κ°μ²΄λ₯Ό ν¬κ΄νλ μΆμμ μΈ μν μ΄ λ°λ‘ DiscountPolicy (μΆμν΄λμ€)μ΄λ€.
π λμΌν μ±
μμ μννλ μν μ κΈ°λ°μΌλ‘ λ κ°μ νλ ₯μ νλλ‘ ν΅ν©
- μν μ ꡬννλ κ°μ₯ μΌλ°μ μΈ λ°©λ² = μΆμ ν΄λμ€ & μΈν°νμ΄μ€
π λμΌν μ± μμ μννλ λ€μν μ’ λ₯μ ν΄λμ€λ€μ νλ ₯μ μ°Έμ¬μν¬ μ μμ- μΆμν΄λμ€ : μν μ μνν μ μλ λͺ¨λ κ°μ²΄λ€μ΄ 곡μ νλ μνμ νλμ κΈ°λ³Έ ꡬν μ‘΄μ¬
- μΈν°νμ΄μ€ : 곡ν΅μ ꡬνμ΄ νμμκ³ λ¨μ§ μ± μμ λͺ©λ‘λ§ μ μ
- νλ ₯μ μ ν©ν μ± μμ μννλ λμμ΄ 1κ°λΌλ©΄ = κ°μ²΄ / μ¬λ¬ μ’ λ₯λΌλ©΄ = μν
'Java > π μ€λΈμ νΈ : μ½λλ‘ μ΄ν΄νλ κ°μ²΄μ§ν₯ μ€κ³' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μ€λΈμ νΈ : μ½λλ‘ μ΄ν΄νλ κ°μ²΄μ§ν₯ μ€κ³] κ°μ²΄μ§ν₯ νλ‘κ·Έλλ° (κ°μ²΄, μ€κ³) (1) | 2024.09.17 |
---|