μ€ν°λ44 [μ€λΈμ νΈ] 8μ₯ 'μμ‘΄μ± κ΄λ¦¬νκΈ°' 8μ₯μμλ μμ‘΄μ±μ κ΄λ¦¬νλ λ°©λ²μ λν΄μ λ€λ£¬λ€. μμ‘΄μ±μ λ°νμ μμ‘΄μ±κ³Ό μ»΄νμΌνμ μμ‘΄μ±μΌλ‘ λλ μ μλ€. λ°νμ μμ‘΄μ±(run-time dependency) - κ°μ²΄ μ¬μ΄μ μμ‘΄μ± μ»΄νμΌνμ μμ‘΄μ±(compile-time dependency) - ν΄λμ€ μ¬μ΄μ μμ‘΄μ± μ μ°νκ³ νμ₯ κ°λ₯ν μ€κ³λ₯Ό λ§λ€κΈ° μν΄μλ μ»΄νμΌνμ μμ‘΄μ±κ³Ό λ°νμ μμ‘΄μ±μ΄ λ¬λΌμΌ νλ€(p.260) κ·ΈλΌ μ΄λ»κ² μ»΄νμΌνμ μμ‘΄μ±κ³Ό λ°νμ μμ‘΄μ±μ λ€λ₯΄κ² ν μ μμκΉ? μμ‘΄μ±μ ν΄κ²°νλ λ°©λ²μ λ€μκ³Ό κ°μ΄ 3κ°μ§κ° μλ€. 1. κ°μ²΄λ₯Ό μμ±νλ μμ μ μμ±μλ₯Ό ν΅ν΄ μμ‘΄μ± ν΄κ²° 2. κ°μ²΄ μμ± ν setter λ©μλλ₯Ό ν΅ν΄ μμ‘΄μ± ν΄κ²° 3. λ©μλ μ€ν μ μΈμλ₯Ό μ΄μ©ν΄ μμ‘΄μ± ν΄κ²° μ¬κΈ°μ 2λ² setter λ©μλλ§ μ¬μ©νλ.. 2022. 12. 2. [μ€λΈμ νΈ] 7μ₯ 'κ°μ²΄ λΆν΄' 7μ₯μμλ μΆμνμ ν κ°μ§ λ°©λ²μΈ λΆν΄μ μμ¬μ λν΄ λ°°μΈ μ μλ€. μΆμνλ νλ‘μμ μΆμν(procedure abstraction)μ λ°μ΄ν° μΆμν(data abstraction)λ‘ λλ μ μλλ° κ°μ²΄μ§ν₯μ νλ‘μμ μΆμνμ΄λ€. κ°μ²΄μ§ν₯μμλ νμ λ³μλ₯Ό μ΄μ©ν 쑰건문μ λ€νμ±μΌλ‘ λ체νλ€. -> replace type code with class μ€κ³μ λ³κ²½μ νμ μΆκ°μ μ€νΌλ μ΄μ μΆκ°λ‘ ꡬλΆν μ μκ³ νμ μΆκ°μ κ²½μ°, κ°μ²΄μ§ν₯ μ€κ³λ μλ‘μ΄ ν΄λμ€λ₯Ό μμ κ³μΈ΅μ μΆκ°νλ κ²μΌλ‘ μ½κ² λ³κ²½μ΄ κ°λ₯νλ€. μ€νΌλ μ΄μ μΆκ°μ κ²½μ°, μμ κ³μΈ΅μ μνλ λͺ¨λ ν΄λμ€λ₯Ό νλ²μ μμ ν΄μΌ νλ κ°μ²΄μ§ν₯μ μ€κ³λ³΄λ€λ μΆμ λ°μ΄ν° νμ μ΄ λ³κ²½μ μ©μ΄νλ€. μΆμ λ°μ΄ν°λ μ 체 νμ μ λν ꡬν μ½λκ° νλμ.. 2022. 11. 25. [μ€λΈμ νΈ] 6μ₯ 'λ©μμ§μ μΈν°νμ΄μ€' 6μ₯μμλ νΌλΈλ¦ μΈν°νμ΄μ€(κ°μ²΄κ° μμ νλ λ©μμ§)λ₯Ό μμ±νκΈ° μν μ€κ³ μμΉμ μλ €μ€λ€. - λλ―Έν° λ²μΉ - λ¬»μ§ λ§κ³ μμΌλΌ - μλλ₯Ό λλ¬λ΄λ μΈν°νμ΄μ€ - λͺ λ Ή-쿼리 λΆλ¦¬ μμΉ μ€κ³ μμΉμ μ‘°ν©νλ©΄ μ§κ΄μ μ΄κ³ , μμΈ‘ κ°λ₯νλ©°, μ μ°ν νΌλΈλ¦ μΈν°νμ΄μ€λ₯Ό λ§λ€ μ μλ€. λ©μμ§ = μ€νΌλ μ΄μ λͺ + μΈμ λ©μμ§ μ μ‘ = μ€νΌλ μ΄μ λͺ + μΈμ + λ©μμ§ μμ μ μκ·Έλμ² = μ€νΌλ μ΄μ (λ©μλ)λͺ + νλΌλ―Έν°λͺ©λ‘ λλ―Έν° λ²μΉ νλ ₯νλ κ°μ²΄μ λ΄λΆ ꡬ쑰μ λν κ²°ν©μΌλ‘ μΈν΄ λ°μνλ μ€κ³ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ μ μλ μμΉ -> μ (.)μ νλλ§ μ¬μ©νμ use only one dot // μμ’μ μ (train wreck) screening.getMovie().getDiscountConditions(); .. 2022. 11. 18. [μ€λΈμ νΈ] 5μ₯ 'μ± μ ν λΉνκΈ°' 5μ₯μ GRASP μ± μν λΉν¨ν΄μ λν΄μ μ€λͺ νκ³ , μ± μμ μ€μ¬μΌλ‘ μ€κ³λ₯Ό νλ κ²μ΄ μΊ‘μν, μμ§λ, κ²°ν©λ κ΄μ μμ μ€κ³λ₯Ό κ°μ ν μ μλ€λ κ²μ 보μ¬μ€λ€. κ°μ²΄ λμμΈμμ κ°μ₯ κΈ°λ³Έμ΄ λλ κ² μ€μ νλλ μ± μμ μ΄λμ λ μ§λ₯Ό κ²°μ νλ κ²μ΄λ€. λλ μλ μ΄μ κ°μ²΄λ₯Ό κ°μ§κ³ μΌνμ§λ§ μ²μ μμν λλ μ¬μ ν μ λΉν μμΉλ₯Ό μ°Ύμ§ λͺ»νλ€. λ μ΄λ° μ μ΄ λλ₯Ό κ΄΄λ‘νμ§λ§, μ΄μ λ μ΄λ° κ²½μ°μ 리ν©ν°λ§μ μ¬μ©νλ©΄ λλ€λ κ²μ μκ² λμλ€ [Fowler 1999a](p.166). GRASP "General Responsibility Assignment Software Pattern (μΌλ°μ μΈ μ± μ ν λΉμ μν μννΈμ¨μ΄ ν¨ν΄)" INFORMATION EXPERT(μ 보 μ λ¬Έκ°) ν¨ν΄ - μ± μμ μνν μ 보λ₯Ό .. 2022. 11. 11. [μ€λΈμ νΈ] 4μ₯ 'μ€κ³ νμ§κ³Ό νΈλ μ΄λμ€ν' 4μ₯μμλ μν μ맀 μμ€ν μ μ μ°¨μ νλ‘κ·Έλλ°(λ°μ΄ν° μ€μ¬)μΌλ‘ ꡬννκ³ μΊ‘μν, μμ§λ, κ²°ν©λλ‘ μ½λλ₯Ό νκ°ν΄ λ³Έλ€. 2μ₯ μ½λκ° μ΄λ €μμ 4μ₯λ 미리 κ²λ¨Ήμλλ° μκ°λ³΄λ€ μ΄ν΄νκΈ° μ¬μ λ€. νμ€ν λΉκ΅ν΄μ 보λκΉ μ κ°μ²΄μ§ν₯μ μΌλ‘ μ½λλ₯Ό μμ±ν΄μΌ νλμ§ μ μ μμλ€. μ§μ ν μΊ‘μνλ? λ¨μν μΈμ€ν΄μ€ λ³μλ₯Ό privateλ‘ λ³κ²½νκ³ ν΄λΉ λ°μ΄ν°λ₯Ό λ³κ²½ν μ μλλ‘ public κ²ν°/μΈν°λ₯Ό λ§λ€μ΄ λλ건 μ§μ ν μλ―Έμ μΊ‘μνλ μλλ€. μΊ‘μνλ λ³κ²½λ μ μλ μ΄λ€ κ²μ΄λΌλ κ°μΆλ κ²μ΄κ³ , λ΄λΆ μμ±μ μΈλΆλ‘λΆν° κ°μΆλ κ²μ 'λ°μ΄ν° μΊ‘μν'μ΄λ€. νμ§λ§ μ± μμ μ€λͺ νλ―μ΄ μΈλΆμμ μ κ·Όν μ μλ λ©μλλ₯Ό ν΅ν΄ κ°μ²΄κ° κ°μ§κ³ μλ λ΄λΆ μμ±μ μ μ μλ€λ 건 λ΄λΆ ꡬνμ λ³κ²½ν κ²½μ°, μ΄ λ©μλλ₯Ό.. 2022. 11. 4. [μ€λΈμ νΈ] 3μ₯ 'μν , μ± μ, νλ ₯' 3μ₯μμλ κ°μ²΄μ§ν₯ μ€κ³μ ν΅μ¬μΈ μν , μ± μ, νλ ₯μ λν΄ μ€λͺ νλ€. κ°μ²΄μ§ν₯ ν¨λ¬λ€μμ ν΅μ¬μ? μν (role) : κ°μ²΄λ€μ΄ νλ ₯ μμμ μννλ μ± μλ€μ΄ λͺ¨μ¬ κ°μ²΄κ° μννλ μν κ΅¬μ± μ± μ(responsibility) : κ°μ²΄κ° νλ ₯μ μ°Έμ¬νκΈ° μν΄ μννλ λ‘μ§(νλ) λ©μμ§κ° κ°μ²΄λ₯Ό κ²°μ νκ³ , νλμ΄ μνλ₯Ό κ²°μ ν¨ νλ ₯(collaboration) : κ°μ²΄λ€μ΄ μ ν리μΌμ΄μ μ κΈ°λ₯μ ꡬννκΈ° μν΄ λ©μμ§λ₯Ό μ£Όκ³ λ°μΌλ©΄μ μνΈμμ©νλ κ² μ± μμ΄λ? κ°μ²΄κ° '무μμ μκ³ μλκ°' + 무μμ ν μ μλκ°'λ‘ κ΅¬μ±λ¨ μ¦ 'νλ κ²' + 'μλ κ²'μΌλ‘ λλ μ μμ μν μ ꡬννλ λ°©λ²μ? μΆμ ν΄λμ€μ μΈν°νμ΄μ€λ₯Ό μ¬μ©νλ€ -> ꡬ체 ν΄λμ€λ€μ΄ λ°λΌμΌ νλ μ± μμ μ§ν©μ μμ ν¨ CRC μΉ΄λ (Candi.. 2022. 10. 27. μ΄μ 1 Β·Β·Β· 4 5 6 7 8 λ€μ