μλ¬Έ
μκΈ°λ€μ λ§λκΈ° μ€ν > λ κ°μ λ§λκΈ°λ₯Ό νλμΈ κ²μ²λΌ 보μ΄λλ‘ μ€ν
μ¬λμ νμ΄λ μ§ μΌλ§ μ λ μκΈ°λΆν° λλ ·ν κ²½κ³λ₯Ό κ°μ§κ³ ν¨κ» νλνλ 물체λ₯Ό νλμ κ°λ μΌλ‘ μΈμ§νλ€.
κ°μ²΄μ§ν₯κ³Ό μΈμ§ λ₯λ ₯
μΈκ°μ μΈμμ λ 립μ μΌλ‘ μλ³ κ°λ₯ν κ°μ²΄μ μ§ν©μΌλ‘ λ°λΌλ³΄κΈ° λλ¬Έμ, κ°μ²΄μ§ν₯ λν μ΄ν΄νκΈ° μ¬μ΄ ν¨λ¬λ€μμ΄λ€. κ°μ²΄μ§ν₯μ μΈκ°μ κΈ°λ³Έμ μΈ μΈμ§ λ₯λ ₯μ κΈ°λ°μ λκ³ μκΈ° λλ¬Έμ΄λ€.
μΈκ°μ ꡬ체μ μΈ κ²μ λμ΄μμ μΆμμ μΈ κ² κΉμ§λ κ°μ²΄λ‘ μΈμν μ μλ€.
μ€λμ μ£Όλ¬Έ λ΄μκ³Ό μ΄μ μ μ£Όλ¬Έ λ΄μμ μ½κ² ꡬλΆν μ μλ€.
μΈκ°μ μ΅λν λ λ¨μν κ°μ²΄λ€λ‘ μ£Όλ³μ λΆν΄ν¨μΌλ‘μ¨ μΈμμ μ΄ν΄νλ €κ³ λ Έλ ₯νλ€. λ°λΌμ κ°μ²΄λ μΈκ°μ΄ λΆλͺ νκ² μΈμ§νκ³ κ΅¬λ³ν μ μλ 물리μ , κ°λ μ κ²½κ³λ₯Ό μ§λ κ²μ΄λ€.
κ·Έλ¬λ 1μ₯: νλ ₯νλ κ°μ²΄λ€μ 곡λ체μμ μμ±ν κ² μ²λΌ, μννΈμ¨μ΄ μΈμμμμ κ°μ²΄λ μ€μνμμμ κ²κ³Ό μλ―Έκ° λ€λ₯Ό μ μλ€. κ°μ²΄μ§ν₯μ μλ‘μ΄ μΈκ³λ₯Ό μ°½μ‘°νλ κ²μ΄κΈ° λλ¬Έμ΄λ€.
κ°μ²΄, κ·Έλ¦¬κ³ μ΄μν λλΌ
μ΄μν λλΌμ μ¨λ¦¬μ€λ₯Ό κ°μ²΄μ§ν₯μ μΌλ‘ μκ°ν΄ 보μ.
μ¨λ¦¬μ€λ μ μμΌλ‘ λ€μ΄κ°λ λ¬Έμ μμ μ ν¬κΈ°λ₯Ό λ§μΆκΈ° μν΄ μμ μ ν€λ₯Ό μ‘°μ νλ€.
μ¨λ¦¬μ€μ μνλ μ¨λ¦¬μ€μ ν€λ₯Ό μλ―Ένλ€.
μ¨λ¦¬μ€λ 'λ§μ λΌ' κΈμκ° μΈμλ μλ£λ₯Ό λ¨Ήκ±°λ μΌμ΄ν¬λ₯Ό λ¨Ήκ±°λ λ€λ₯Έ νλμ νλ©΄μ ν€λ₯Ό μ‘°μ ν μ μλ€.
μ¨λ¦¬μ€μ ν€ (μν)λ₯Ό λ³νμν€λ κ²μ μ¨λ¦¬μ€μ νλμ΄λ€.
μ¨λ¦¬μ€κ° λ¬Έμ ν΅κ³ΌνκΈ° μν΄μλ μΆ©λΆν ν€λ₯Ό κ°μ§κ³ μμ΄μΌ νλ€.
μ΄λ€ νλ (λ¬Έμ ν΅κ³Ό)μ μ±κ³΅ μ¬λΆλ μ΄μ μ μ΄λ€ νλλ€ (ν€λ₯Ό μ‘°μ νλ κ²)μ΄ λ°μνλμ§μ μν₯μ λ°λλ€. μ¦, νλ κ°μ μμκ° μ€μνλ€.
μ¨λ¦¬μ€κ° μ¨λ¦¬μ€λΌλ μ¬μ€μ λ³νμ§ μλλ€.
μ¨λ¦¬μ€κ° μ΄λ ν νλμ νλλΌλ μ¨λ¦¬μ€λ μ¨λ¦¬μ€μ΄λ€. μ¦, μ μΌνκ² μλ³ κ°λ₯νλ€.
κ°μ²΄μ μνλ₯Ό κ²°μ νλ κ²μ νλμ΄μ§λ§ νλμ κ²°κ³Όλ₯Ό κ²°μ νλ κ²μ μνλ€.
κ°μ²΄, κ·Έλ¦¬κ³ μννΈμ¨μ΄ λλΌ
κ°μ²΄λ μν, νλ, μλ³μλ₯Ό μ§λλ€.
μν
νλμ μ±κ³΅ μ¬λΆλ μ΄μ μ μ΄λ€ νλλ€μ΄ λ°μνλμ§μ μν₯μ λ°λλ€. κ·Έλ¬λ κ³Όκ±°μ μ΄λ ₯μ λͺ¨λ κΈ°μ΅νκ³ μλ κ²μ 볡μ‘νλ€. λλ¬Έμ μ΄λ₯Ό λ¨μννκΈ° μν΄ μνλΌλ κ°λ μ κ³ μνλ€.
λ¨μν κ°λ€μ κ°μ²΄κ° μλλ€. μ΄κ²λ€μ λ€λ₯Έ κ°μ²΄μ νΉμ±μ νννλ λ° μ¬μ©λ λΏμ΄λ€. μμλ‘ μ¨λ¦¬μ€μ ν€λ μ¨λ¦¬μ€ κ°μ²΄μ νΉμ±μ νννλ λ° μ¬μ©λλ€.
κ°λμ λ¨μν κ°μ΄ μλλΌ κ°μ²΄λ₯Ό μ΄μ©ν΄ λ€λ₯Έ κ°μ²΄μ νΉμ±μ ννν μλ μλ€. μ¨λ¦¬μ€ κ°μ²΄κ° μλ£ κ°μ²΄λ₯Ό κ°μ§κ³ μλμ§λ‘ μ€λͺ ν μ μκ² λ€.
λ¨μν κ° (μμ±)κ³Ό κ°μ²΄λ₯Ό μ΄μ©ν΄ κ°μ²΄μ μνλ₯Ό ννν μ μλ€.
- νλ‘νΌν°λ κ°μ²΄μ μνλ₯Ό ꡬμ±νλ λͺ¨λ νΉμ§μ λ»νλ©°, μ μ μ΄λ€. (ex: ν€)
- νλ‘νΌν° κ°μ κ°κ°μ νλ‘νΌν°μ κ°μ μλ―Ένλ©°, λμ μ΄λ€. (ex: ν€μ μμΉ)
- λ€λ₯Έ κ°μ²΄μμ μ°κ²°μ λ§ν¬λΌκ³ νλ©°, μ΄ λ§ν¬λ₯Ό ν΅ν΄μ λ©μμ§λ₯Ό μ£Όκ³ λ°μ μ μλ€. λ°λΌμ λ§ν¬κ° μμ΄μΌ λ€λ₯Έ κ°μ²΄μ νλ ₯μ΄ κ°λ₯νλ€.
νλ
κ°μ²΄κ° μ·¨νλ νλμ κ°μ²΄ μμ μ μνλ₯Ό λ³κ²½νλ€. > νλμ ν λ λΆμ ν¨κ³Ό (side effect)κ° λ°μνλ€.
κ°μ²΄λ νλ ₯μ μ°Έμ¬νκΈ° μν΄ μμ λ§μ λ°©λ² (λ©μλ)μΌλ‘ νλνλ€κ³ νμλ€. κ²°κ³Όμ μΌλ‘ νλ ₯μ μ°Έμ¬νλ©° μμ μ μνκ° λ³κ²½λλ€. λλ‘λ λ€λ₯Έ κ°μ²΄μκ²λ μνλ₯Ό λ³κ²½ν΄ λ¬λΌκ³ μμ²νκΈ°λ νλ€.
μ¨λ¦¬μ€κ° μλ£λ₯Ό λ§μλ νλμ ν λλ μλ£ κ°μ²΄μ μ λν μ€μ΄λ€μ΄μΌ νλ€.
κ·Έλ¬λ μμ²μ λ³΄λΈ κ°μ²΄λ μμ²μ λ°μ κ°μ²΄μ μνκ° λ³νλ μ§ μ μ μλ€. μμ²μ λ°μ κ°μ²΄λ μμ λ§μ λ°©λ²μΌλ‘ μμ²μ μ²λ¦¬νκΈ° λλ¬Έμ΄λ€. λ°λΌμ μμ²λ°μ κ°μ²΄μ μνλ λ³κ²½λμ§ μμ μλ μλ€. μ΄λ μμ¨μ±μ 보μ₯λ°μμΌ νκΈ° λλ¬Έμ΄λ€.
μνλ₯Ό μΈλΆμ λ ΈμΆμν€μ§ μκ³ νλμ κ²½κ³λ‘ μΊ‘μννλ κ²μ κ²°κ³Όμ μΌλ‘ κ°μ²΄μ μμ¨μ±μ λμ΄λ©°, μμ¨μ±μ΄ λμμ§μλ‘ κ°μ²΄μ μ§λ₯μ΄ λμμ§λ€. νλ ₯μ μ°Έμ¬νλ κ°μ²΄λ€μ μ§λ₯μ΄ λμμ§μλ‘ νλ ₯μ μ μ°νκ³ κ°κ²°ν΄μ§κΈ° λ§λ ¨μ΄λ€.
μλ³μ
μλ³μλ κ°μ²΄κ° κ°μ§κ³ μλ νλ‘νΌν° μ€ λ€λ₯Έ κ°μ²΄μ ꡬλ³λκΈ° μν΄ μ¬μ©λλ νΉμ ν νλ‘νΌν°μ΄λ€. μλ³μλ₯Ό κΈ°λ°μΌλ‘ κ°μ²΄κ° κ°μμ§λ₯Ό νλ¨ν μ μλ μ±μ§μ λμΌμ± (identical)μ΄λΌκ³ νλ€.
μ΄λ¦° μμ μ λμ νμ¬μ λλ λμΌν λλ€.
κ°μ²΄λ₯Ό λΉκ΅ν λ μνλ₯Ό μ΄μ©ν΄ λΉκ΅ν μ μλ μ΄μ λ κ°μ²΄μ μνλ λ³ν μ μκΈ° λλ¬Έμ΄λ€.
κ°μ²΄μ ν€κ° λ³νλ€κ³ ν΄μ κ°μ²΄ μμ²΄κ° λ°λμ§λ μλλ€.
λ°λλ‘ λ¨μν κ°μ μλ³μλ₯Ό κ°μ§κ³ μμ§ μμΌλ©° μνλ§ κ°μ§κ³ μλ€.
λ¨μν κ°μ μνλ λ³νμ§ μλλ€. λλ¬Έμ κ°μ λΉκ΅ν λλ μνλ₯Ό μ΄μ©ν΄ λΉκ΅νλ©°, μ΄λ₯Ό λλ±μ± (equality)μ΄λΌκ³ νλ€.
ν€κ° 170μμ 180μΌλ‘ λ³κ²½λμλ€λ©΄ μ΄κ²μ κ° μμ²΄κ° λ³ν κ²μ΄λ€. λ°λΌμ 170κ³Ό 180μ μΌμΉνμ§ μλλ€!
κ°μ²΄μ§ν₯μ μΈκ³λ μνκ° λ³νμ§ μλ κ°κ³Ό μνκ° λ³νλ κ°μ²΄λ€μ΄ μλ‘ κ· νμ λ§μΆλ©° μ‘°νλ₯Ό μ΄λ£¨μ΄μΌ νλ μ¬νμ¬μΌ νλ€.
κΈ°κ³λ‘μμ κ°μ²΄
κ°μ²΄μ μνλ₯Ό μ‘°ννλ μμ μ 쿼리 (query)λΌκ³ νλ©°, κ°μ²΄μ μνλ₯Ό λ³κ²½νλ μμ μ λͺ λ Ή (command)μ΄λΌκ³ νλ€.
κ°μ²΄ κΈ°κ³λ κ°μ²΄μ§ν₯μ ν¨κ³Όμ μΌλ‘ μ€λͺ νκΈ°μ μ ν©νλ€.
μ¬μ©μλ λ²νΌμ ν΅ν΄μλ§ κ°μ²΄μ μνλ₯Ό μ‘°ννκ±°λ λ³κ²½μ "μμ²"ν μ μλ€. μ΄λ€ λ°©μμ μ¬μ©ν μ§λ κΈ°κ³ μ€μ€λ‘ κ²°μ νλ€. μ΄λ κ°μ²΄μ μμ¨μ±κ³Ό κ΄λ ¨λμ΄ μλ€.
κΈ°κ³λ₯Ό λ―μ΄λ³΄μ§ μλ μ΄μ, κΈ°κ³κ° μ΄λ€ μλ¦¬λ‘ λ‘μ§μ μννλμ§ μ μ μλ€. λν 쿼리 λ²νΌμ μ μΈνκ³ λ κ°μ²΄μ μνλ₯Ό μ μ μλ€. μ΄λ μΊ‘μνμ κ΄λ ¨λμ΄ μλ€.
μλ‘ λ€λ₯Έ λ κΈ°κ³κ° μμ λ, μ΄ κΈ°κ³λ€μ λ€λ₯Ό μλ°μ μλ€. μ¦, κ°μ²΄κ° κ΅¬λΆ κ°λ₯ν μλ³μλ₯Ό κ°μ§λ€λ κ²μ μλ―Ένλ€.
κΈ°κ³λ μ°κ²°λ λ€λ₯Έ κΈ°κ³μκ² μμ²μ μ μ‘ν μ μλ€. μ΄λ κ°μ²΄ κ°μ λ©μμ§ μ μ‘μ ν΅ν΄ νλ ₯νκ³ μλ κ²μ μλ―Ένλ€.
νλμ΄ μνλ₯Ό κ²°μ νλ€
μνλ₯Ό μ€μ¬μΌλ‘ κ°μ²΄λ₯Ό λ°λΌλ³΄λ νμ (μνλ₯Ό λ¨Όμ κ²°μ νκ³ κ·Έμ λν νλμ κ²°μ νλ νμ)λ μ€κ³μ λμ μν₯μ λ―ΈμΉλ€.
μνλ₯Ό λ¨Όμ κ²°μ ν κ²½μ° μΊ‘μνκ° μ ν΄λλ€.
κ°μ²΄μ μνκ° κ³΅μ© μΈν°νμ΄μ€μ λ ΈμΆλ νλ₯ μ΄ λμ΄λλ€.
κ°μ²΄λ₯Ό κ³ λ¦½λ μ¬μΌλ‘ λ§λ λ€.
κ°μ²΄μ μ‘΄μ¬ μ΄μ λ λ€λ₯Έ κ°μ²΄μ νλ ₯νκΈ° μν΄μλ€.
κ°μ²΄μ μ¬μ¬μ©μ±μ΄ μ ν΄λλ€.
κ°μ²΄μ μ¬μ¬μ©μ±μ κ°μ²΄κ° λ€μν νλ ₯μ μ°Έμ¬ν μ μλ κ²μμ λμ¨λ€. κ°μ²΄λ₯Ό κ³ λ¦½λ μ¬μΌλ‘ λ§λ¦μΌλ‘μ¨ κ°μ²΄λ₯Ό νλ ₯μ μ°Έμ¬νκΈ° λΆμ μ ν μμλ‘ λ§λ€κΈ° λλ¬Έμ κ°μ²΄μ μ¬μ¬μ©μ± λν μ ν΄λλ€.
λ°λΌμ μνκ° μλλΌ νλμ μ€μ¬μΌλ‘ κ°μ²΄λ₯Ό λ°λΌλ΄μΌ νλ€.
κ°μ²΄μ§ν₯ μ€κ³λ λ€μκ³Ό κ°μ λ°©μμΌλ‘ μ§νλμ΄μΌ νλ€.
- μ ν리μΌμ΄μ μ νμν νλ ₯μ μκ°νλΌ.
- νλ ₯μ νμν νλλ€μ μκ°νλΌ.
- νλμ μνν μ μ ν κ°μ²΄λ₯Ό μ ννλΌ.
- νλμ΄ κ²°μ λλ©΄ κ·Έ νλμ μνν λ νμν μ λ³΄κ° λ¬΄μμΈμ§ κ³ λ €νκ² λλ€.
- μ΄λ νμν μνκ° κ²°μ λλ€. μ¦, νλμ΄ μνλ₯Ό κ²°μ νλ€.
μ΄λ μ± μ μ£Όλ μ€κ³ (Responsibility Driven Design)μ κ΄λ ¨ μλ€. μ± μ μ£Όλ μ€κ³λ νλ ₯μ΄λΌλ λ¬Έλ§₯ μμμ κ°μ²΄μ νλμ μκ°νλλ‘ λμμΌλ‘μ¨ μμ§λ λκ³ μ¬μ¬μ© κ°λ₯ν κ°μ²΄λ₯Ό λ§λ€ μ μκ² νλ€.
μμ μ κ°μ²΄
κ°μ²΄μ§ν₯μ΄ λ¨μν νμ€ μΈκ³μ λͺ¨λ°©μ΄ μλ μ΄μ μ€ νλλ νμ€ μμμ μλμ μΈ μ‘΄μ¬κ° κ°μ²΄μ§ν₯ μΈκ³μμλ λ₯λμ μΈ μ‘΄μ¬κ° λ μ μκΈ° λλ¬Έμ΄λ€. μ΄λ κ°μ²΄λ₯Ό μμΈν (anthropomorphism) νμκΈ° λλ¬Έμ΄λ€.
κ³μ μΈκΈνλ―μ΄ λͺ¨λ κ°μ²΄λ μΆ©λΆν μμ¨μ±μ 보μ₯λ°λλ€.
μ ν΅μ μΌλ‘λ νμ€ μΈκ³μ κ°μ²΄λ₯Ό μμΈν κ΄μ°°νκ³ κ·Έμ€μμ μννΈμ¨μ΄ κ°μ²΄μ μ ν©ν μμ±λ§ μΆλ €λ΄λΌλ κ²μ μ‘°μΈνμλ€.
κ·Έλ¬λ μ΄ μκ°μ κ°μ²΄ μ§ν₯μ μΈκ³κ° νμ€μ λ°μν΄μΌ νλ€λ μλλ₯Ό λ΄ν¬νκ³ μλ€.
λ§νλ―μ΄, κ°μ²΄ μ§ν₯ μΈκ³λ μλ‘μ΄ μΈκ³λ₯Ό μ°½μ‘°νλ κ²μ΄λ€. κ·Έλ λ€λ©΄ νμ€ μΈκ³μ μμ ν λΆλ¦¬λ μΈκ³λ₯Ό μ°½μ‘°νλ κ²μΈκ°? κ·Έκ²μ μλλ€. λ¨μ§ κ°μ²΄ μ§ν₯ μΈκ³λ νμ€ μΈκ³λ₯Ό μμ (metaphor)ν λΏμ΄λ€.
μμ λ₯Ό μ¬μ©νλ μ΄μ λ 무μμΈκ°? μμ λ₯Ό μ¬μ©νμ¬ νμ€ μΈκ³μ κ°μ²΄λ₯Ό κ°μ²΄ μ§ν₯ μΈκ³μμ μ¬μ©ν κ²½μ°, κ·Έ μλ―Έλ₯Ό μ°λ¦¬κ° μ½κ² νμ νκ³ μ μΆν μ μκΈ° λλ¬Έμ΄λ€. μΌλ‘λ‘ μ νκΈ° κ°μ²΄λ μ΄ κ°μ²΄κ° μ νλ₯Ό κ±Έ μ μλ€λ μ¬μ€μ μ μΆν μ μμ κ²μ΄λ€. λ°©νλ²½ κ°μ²΄λ μ΄ κ°μ²΄κ° μ΄λΆμ μΉ¨μ μ 보νΈν μ μλ€λ μ¬μ€μ μ μΆν μ μμ κ²μ΄λ€.
μ΄λ μ½λλ₯Ό μμ±ν λ μ μ§λ³΄μλ μ©μ΄νκ² ν΄ μ€λ€.
λ€λ§ μ΄λ νμ€ μΈκ³μ κ΄λ ¨μ΄ μμ λ μ¬μ©νλ λ°©μμ΄λ€. λ§μ½ νμ€ μΈκ³μ μ μ¬μ±μ΄ μλ€λ©΄ νμ€μ 무μνκ³ μμ λ‘κ² μΈκ³λ₯Ό ꡬμΆνλΌ.
μμ½
- κ°μ²΄μ μνλ₯Ό κ²°μ νλ κ²μ νλμ΄μ§λ§ νλμ κ²°κ³Όλ₯Ό κ²°μ νλ κ²μ μνλ€.
- κ°μ²΄λ μν, νλ, μλ³μλ₯Ό κ°μ§λ€.
- κ°μ²΄λ₯Ό μ΄λ£¨κ³ μλ μμλ λ¨μν κ°κ³Ό λ€λ₯Έ κ°μ²΄λ‘ ꡬλΆλλ€.
- μν μ€μ¬μΌλ‘ μ€κ³ν기보λ€λ νλ μ€μ¬μΌλ‘ μ€κ³νλΌ. κ°μ²΄μ μ‘΄μ¬ μ΄μ λ νλ ₯μ ν΅ν΄ μ ν리μΌμ΄μ μ ꡬμΆνκΈ° μν΄μμ΄λ©°, νλ ₯μ νκΈ° μν λ°©λ²μ΄ 곧 νλμ΄κΈ° λλ¬Έμ΄λ€.
- νμν νλ ₯μ μκ°νκ³ , κ·Έ νλ ₯μ μ΄λ£¨κΈ° μν νλλ€μ μκ°νκ³ , νλνκΈ°μ μ μ ν κ°μ²΄λ₯Ό μ ννλ©°, νλμ μνν λ νμν μνλ₯Ό κ²°μ νλ λ°©μμΌλ‘ μ ν리μΌμ΄μ μ μ€κ³νλΌ.
- νμ€ μΈκ³μ κ°μ²΄ μ§ν₯ μΈκ³μ κ΄κ³λ μμ μ΄λ€. μ΄λ κ°μ μ μΈ κ²μ΄ μλλ€. λ¨μ§ κ·Έ μλ―Έλ₯Ό μ½κ² νμ ν μ μκΈ° λλ¬Έμ΄λ€. νμνμ§ μλ€λ©΄ μ¬μ©νμ§ μμλ λλ€.
'λμ π > π κ°μ²΄μ§ν₯μ μ¬μ€κ³Ό μ€ν΄' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
6μ₯: κ°μ²΄ μ§λ (0) | 2023.11.08 |
---|---|
5μ₯: μ± μκ³Ό λ©μμ§ (0) | 2023.11.07 |
4μ₯: μν , μ± μ, νλ ₯ (0) | 2023.11.05 |
3μ₯: νμ κ³Ό μΆμν (1) | 2023.11.02 |
1μ₯: νλ ₯νλ κ°μ²΄λ€μ 곡λ체 (2) | 2023.10.31 |