
2025λ 3μ 24μΌ
μ΄λ² κΈμμλ ν΄λμ€ λ€μ΄μ΄κ·Έλ¨μμ μμ£Ό λ±μ₯νλ λ€μ― κ°μ§ κ΄κ³λ₯Ό μ μ + UML νκΈ° + Java μ€μ μ½λλ‘ μ 리νλ€.
ν ν΄λμ€κ° λ€λ₯Έ ν΄λμ€λ₯Ό νλλ‘ μ°Έμ‘°νμ¬ κ΄κ³λ₯Ό μ μ§νλ ꡬ쑰.
κ°μ²΄κ° μμ±λ νμλ μ§μμ μΌλ‘ μ°κ²°λμ΄ μμ.
μ€μ νμ΄ν (β), μλ°©ν₯μ β
Marine β Gunpublic class Marine extends Unit {
public Gun myGun;
public void setGun(Gun gun) {
this.myGun = gun;
}
}
β Marineμ΄ Gunμ νλλ‘ λ³΄μ β μ°κ΄κ΄κ³ (has-a κ΄κ³)
ν ν΄λμ€κ° μΌμμ μΌλ‘ λ€λ₯Έ ν΄λμ€μ κ°μ²΄λ₯Ό μ¬μ©νλ κ΄κ³.
λ³΄ν΅ λ©μλ νλΌλ―Έν°λ‘ μ λ¬λλ©°, κ°μ²΄λ₯Ό μ§μ μμ±νκ±°λ 보κ΄νμ§ μμ.
μ μ νμ΄ν (β)
Medic β Marine (Healing)public class Medic extends Unit {
public void Healing(Unit unit) {
unit.hp += 30;
System.out.println(unit.type + "μ ν볡μν΅λλ€");
}
}
β Medicμ΄ Marineμ μΌμμ μΌλ‘ νλΌλ―Έν°λ‘ λ°μ μ¬μ© β μμ‘΄κ΄κ³
"μ 체-λΆλΆ" κ΄κ³. λΆλΆ κ°μ²΄λ μ 체μ ν¬ν¨λμ§λ§, μλͺ
μ£ΌκΈ°λ₯Ό 곡μ νμ§ μμ.
μ μ²΄κ° μ¬λΌμ Έλ λΆλΆ κ°μ²΄λ λ
립μ μΌλ‘ μ‘΄μ¬ κ°λ₯.
λΉ λ§λ¦λͺ¨ (β)
Barrack β UnitGeneratorpublic class Barrack extends Building {
Map<String, UnitGenerator> generator = new HashMap<>();
void setGenerator(UnitGenerator gen, String type) {
generator.put(type, gen);
}
}
β Barrackμ UnitGeneratorλ₯Ό λ±λ‘νμ§λ§ μλͺ
μ£ΌκΈ°λ₯Ό 곡μ νμ§ μμ β μ§μ½κ΄κ³
μ μ²΄κ° μ¬λΌμ§λ©΄ λΆλΆλ ν¨κ» μ¬λΌμ§λ κ°ν μλͺ
μ£ΌκΈ° 곡μ κ΄κ³.
λΆλΆ κ°μ²΄λ μ 체μ μμ ν μ’
μλ¨.
κ²μ λ§λ¦λͺ¨ (β)
Person β Heart (μμλ‘λ§ μ€λͺ
)class Heart {}
class Person {
private Heart heart = new Heart(); // ν¬ν¨κ΄κ³: Personμ΄ μμΌλ©΄ Heartλ μλ―Έ μμ
}
β» νμ¬ νλ‘μ νΈμλ Composition μμκ° μ§μ μ μΌλ‘ μ‘΄μ¬νμ§ μμ§λ§, μμ κ°μ κ΅¬μ‘°κ° ν΄λΉλ¨
μμ ν΄λμ€κ° λΆλͺ¨ ν΄λμ€μ μμ±κ³Ό λ©μλλ₯Ό λ¬Όλ €λ°λ κ΄κ³
"is-a κ΄κ³"λ₯Ό λνλ
λΉ μΌκ°ν (β³) νμ΄ν
public abstract class Unit {
public int hp;
public int amor;
public String type;
public abstract void move();
public abstract void underAttact(int damage);
}
public class Marine extends Unit {
@Override
public void move() {
System.out.println(type + " μ΄λν©λλ€");
}
}
β Marine, Medicλ Unitμ μμλ°μ β μμκ΄κ³ (is-a)
β Barrack extends Building, Pistol extends Gun, Rifle extends Gun μμ μμκ΄κ³
| κ΄κ³ μ ν | μλͺ μ£ΌκΈ° 곡μ | UML νκΈ° | μλ―Έ | Java ꡬ쑰 μμ |
|---|---|---|---|---|
| μ°κ΄κ΄κ³ | β | μ€μ (β/β) | μ§μμ μ°Έμ‘° (νλλ‘ μ°κ²°) | Marine β Gun |
| μμ‘΄κ΄κ³ | β | μ μ νμ΄ν(β) | μΌμμ μ¬μ© (λ©μλ λ΄λΆ) | Medic β Marine |
| μ§μ½κ΄κ³ | β | β λΉ λ§λ¦λͺ¨ | μ 체-λΆλΆ (λμ¨ν ν¬ν¨ κ΄κ³) | Barrack β UnitGenerator |
| ν¬ν¨κ΄κ³ | β | β κ²μ λ§λ¦λͺ¨ | μ 체-λΆλΆ (κ°ν μμ κ΄κ³) | Person β Heart (μμ) |
| μμκ΄κ³ | β | β³ λΉ μΌκ°ν | κΈ°λ₯ λ¬Όλ €λ°μ (is-a κ΄κ³) | Marine β Unit λ± |
λ¨μν ν΄λμ€ κ°μ μ°κ²°λμ΄ μλ€λ κ²μ λμ΄μ,
"μ΄λ€ μλͺ
μ£ΌκΈ°λ₯Ό κ°μ§λκ°?", "μ΄λ»κ² μ€κ³νλκ°?", "μ΄λ€ μ±
μμ μμνλκ°?" λ₯Ό μ€μ¬μΌλ‘ κ΄κ³λ₯Ό ꡬλΆνλ
κ°μ²΄μ§ν₯ μ€κ³κ° νμΈ΅ λ λͺ
ννκ² λκ»΄μ‘λ€.
νΉν StarCraft μμ λ₯Ό ν΅ν΄ UML κ΄κ³λ₯Ό μ½λμ λ°λ‘ λ§€νν΄λ³Ό μ μμλ μ μ΄ μ λ§ μ’μκ³ ,
κ°μ²΄μ λ
λ¦½μ± / κ²°ν©λ / μ μ°μ± κ°μ μ€κ³ μμΉκΉμ§λ μμ°μ€λ½κ² 체λν μ μμλ κΈ°νμλ€.