Composed Method ¶
μΈκ°κ³Ό μμ¬μν΅μ΄ μλλ νλ‘κ·Έλ¨μ μνλκ°? λ©μλμ μ΄λ¦μ μ§μλ μλκ° μ λλ¬λκ² μ§μ.
λ©μΈμ§λ₯Ό 보λ΄λ λ°μλ μκ°μ΄ κ±Έλ¦°λ€. μ¦ ν¨μ νΈμΆμλ μ€λ²ν€λκ° λ€λ°λ₯Έλ€. κ·Έλ¬λ―λ‘ μ΅κ³ μ μλλ₯Ό λ΄λ €λ©΄ νλμ λ©μλμ λͺ¨λ κ±Έ λλ €λ£μ μλ μλ€. νμ§λ§? λκ°λ ν΄κ²μ΄λ€.(μΈλ ₯λλΉ, λΉκ΅¬μ‘°μ νλ‘κ·Έλ¨ μμ°)
μ΄λ³΄μλ€μ μμ ν¬κΈ°μ λ§μ λ©μλλ₯Ό λ³΄κ³ λ, νλ‘κ·Έλ¨μ μ§ν μν©μ μ λͺ¨λ₯Έλ€κ³ ν μλ μλ€. νμ§λ§ κ²½νμ΄ μμΌμλ‘, μ μ§μ΄μ§ μ΄λ¦μ λ©μΈμ§λ μ½λμ νλ¦μ μκΈ° μ½κ² ν΄μ€λ€. λ©μλ μ΄λ¦μ μλκ° λλ¬λκ² μ§λκ²μ νλμ λ©μλ ν¬κΈ°λ₯Ό μκ² νλ κ°μ₯ ν° μ΄μ κ° λλ€. κ·Έ μ½λλ₯Ό 보λ μ¬λλ€μ νλ νλμ μμ λΆλΆμ μ΄ν΄ν¨μΌλ‘μ¨, λ ν° λΆλΆμ μ΄ν΄ν μ μκ² λλ€. λν λ©μλλ₯Ό μκ² νλ©΄ λ²κ·Έκ° λ°μνμλλ κ±°κΈ°μ κ΅νμν¬ μκ° μλ€. λκ° κ°μ νκΈ°κ° μ¬μμ§ κ²μ΄λ€. λ¬Όλ‘ μμλ μμ°μ€λ½κ² ν μ μλ€.
λΉμ μ νλ‘κ·Έλ¨μ νλμ λμΌνλ μμ μ μνν μ μλ λ©μλλ€λ‘ λλ λΌ. λͺ¨λ λ©μλλ κ°μ μμ€μ μΆμνλ₯Ό μ μ§ν΄μΌ νλ€. μ΄λ μμ°μ€λ½κ² μ¬λ¬κ°μ μμ λ©μλλ₯Ό λ§λ€μ΄λ΄κ² λ κ²μ΄λ€.
λΉμ μ νλ‘κ·Έλ¨μ νλμ λμΌνλ μμ μ μνν μ μλ λ©μλλ€λ‘ λλ λΌ. λͺ¨λ λ©μλλ κ°μ μμ€μ μΆμνλ₯Ό μ μ§ν΄μΌ νλ€. μ΄λ μμ°μ€λ½κ² μ¬λ¬κ°μ μμ λ©μλλ₯Ό λ§λ€μ΄λ΄κ² λ κ²μ΄λ€.
λΉμ μ΄ κ°μ₯ μ€μνκ² Composed Methodλ₯Ό μΈλλ, λΉμ μ΄ λκ°λ₯Ό ꡬννκ³ μμλ μλ‘μ΄ μ±
μμ λ°κ²¬νμλμ΄λ€. λΉμ μ΄ λ μ΄μμ λ©μΈμ§λ₯Ό λ€λ₯Έ κ°μ²΄λ‘ 보λΌλ, μμ κ°μ²΄μμλ κ·Έ λ©μΈμ§λ€μ ν©μΉλ Composed Methodλ₯Ό λ§λ€ μ μλ€. μ΄λ¬ν Methodλ€μ λΉμ μ μμ€ν
μ λ€λ₯Έ λΆλΆμμλ μ μ©νκ² μ°μΌ κ²μ΄λ€.
~cpp class Controller { private : /* ... */ void controlInitialize() {/* ... */} void controlLoop() {/* ... */} void controlTerminate() {/* ... */} public : void controlActivity() { controlInitialize(); controlLoop(); controlTerminate(); } };
κ°μΈμ μΌλ‘, κ°λ¨ν΄λ³΄μ΄μ§λ§ μμ£Ό μ€μν μ΄μΌκΈ°λΌ μκ°ν¨. ProgrammingByIntention μ μ
μ₯μμ, λν 'κ°μ λ 벨μ μΆμνλ₯Ό μ μ§νλΌ'λΌλ λλͺ©μμ. (StepwiseRefinement λ₯Ό νλ©΄ μμ°μ€λ½κ² μ§νλ¨) --1002