πΊοΈ Design Pattern
Object-Oriented Programming (κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°, OOP)μ μ΄ν΄ κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°(Object-Oriented Programming, OOP)μ μ€μΈκ³μ μ¬λ¬Όμ΄λ κ°λ
μ κ°μ²΄λ‘ λͺ¨λΈλ§νμ¬ μννΈμ¨μ΄λ₯Ό κ°λ°νλ νλ‘κ·Έλλ° ν¨λ¬λ€μμ
λλ€. μ΄ μ κ·Ό λ°©μμ λ°μ΄ν°(μμ±)μ κ·Έ λ°μ΄ν°λ₯Ό μ²λ¦¬νλ λ° νμν κΈ°λ₯(ν¨μ λλ λ©μλ)μ νλμ λ¨μλ‘ λ¬Άμ΄μ μκ°ν©λλ€. μλ₯Ό λ€μ΄μ CarλΌλ κ°μ²΄κ° μμλ? μμ±: fuel: μ°¨λμ μ°λ£ μ, speed: μ°¨λμ νμ¬ μλ, steering wheel: νΈλ€μ μμΉ, coordinate: μ°¨λμ νμ¬ μμΉ ν¨μ: accelerate(): μ°¨λμ μλλ₯Ό μ¦κ°μν΅λλ€. takeLeft(): μ°¨λμ μΌμͺ½μΌλ‘ μ‘°ν₯ν©λλ€. takeRight(): ..
πΊοΈ Design Pattern
What is UML? UML(Unified Modeling Language, ν΅ν© λͺ¨λΈλ§ μΈμ΄)λ μμ€ν
μ ꡬ쑰μ λμμ μκ°ννκ³ , μ¬μ(specification)μ λ¬Έμννλ λ° μ¬μ©λλ νμ€νλ λͺ¨λΈλ§ μΈμ΄μ
λλ€. μμ€ν
μ μκ°ν νκ±°λ μμ€ν
μ μ¬μ, μ€κ³λ₯Ό λ¬Έμν νκΈ° μν νν λ°©λ²μ
λλ€. ν΅ν© λͺ¨λΈλ§ μΈμ΄λ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° μννΈμ¨μ΄ μ§μ μμ€ν
μ κ°λ°ν λ μ°μΆλ¬Όμ λͺ
μΈν, μκ°ν, λ¬Έμνν λ μ¬μ©ν©λλ€. μΌλ°μ μΌλ‘ UMLμ λ²μλ λ§€μ° λμ§λ§, μ¬κΈ°μλ ν΄λμ€ λ€μ΄μ΄κ·Έλ¨ λ° μνμ€ λ€μ΄μ΄κ·Έλ¨μ λν΄μλ§ μ€λͺ
ν΄ λ³΄κ² μ΅λλ€. Code Patternλ€μ ννν λλ μ μ©ν©λλ€. Class Diagram: ν΄λμ€μ κ³μΈ΅ κ΄κ³ ν΄λμ€ λ€μ΄μ΄κ·Έλ¨μ μμ€ν
μ μ μ ꡬ쑰λ₯Ό λνλ΄λ UML ꡬ쑰..
πΊοΈ Design Pattern
Solid Principles (μ리λ μμΉ) SOLID μμΉμ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°κ³Ό μννΈμ¨μ΄ μμ§λμ΄λ§μμ μ’μ μ½λ μ€κ³λ₯Ό μν λ€μ― κ°μ§ κΈ°λ³Έμ μΈ μμΉμ λ§ν©λλ€. μ΄ μμΉλ€μ μ½λμ μ μ§λ³΄μμ±μ ν₯μμν€κ³ , νμ₯μ±μ μ©μ΄νκ² νλ©°, 볡μ‘μ±μ κ΄λ¦¬νλ λ° λμμ μ€λλ€. 5κ°μ μμΉμ΄ μμ΅λλ€. S - Single Responsibility Principle (λ¨μΌ μ±
μ μμΉ) κ° ν΄λμ€λ νλμ μ±
μλ§μ κ°μ ΈμΌ ν©λλ€. μ¦, μμ€ν
μμ λ³κ²½μ΄ νμν ν κ°μ§ μ΄μ λ§μ κ°μ§κ³ μμ΄μΌ ν©λλ€. μ΄ μμΉμ μ½λμ μ¬μ¬μ©μ±μ λμ΄κ³ , λ³κ²½μ λν μ μ°μ±μ μ¦κ°μν΅λλ€. O - Open/Closed Principle (κ°λ°©/νμ μμΉ) μννΈμ¨μ΄μ μν°ν°(ν΄λμ€, λͺ¨λ, ν¨μ λ±)λ νμ₯μ λν΄μλ μ΄..
πΊοΈ Design Pattern
What is Design Pattern? λμμΈ ν¨ν΄μ μννΈμ¨μ΄ 곡νμμ μΌλ°μ μΈ λ¬Έμ λ€μ λν λ°λ³΅μ μ΄κ³ μ¬μ¬μ© κ°λ₯ν ν΄κ²°μ±
μ μ 곡νλ νμνλ λ°©λ²λ‘ μ
λλ€. μ΄λ¬ν ν¨ν΄λ€μ κ°λ°μλ€μ΄ νΉμ μν©μ΄λ λ¬Έμ μ λν΄ ν¨κ³Όμ μΌλ‘ λμν μ μλλ‘ λμμ€λλ€. λμμΈ ν¨ν΄μ μ£Όλ‘ κ°μ²΄ μ§ν₯ μννΈμ¨μ΄ μ€κ³μ μ μ©λλ©°, μ½λμ μ¬μ¬μ©μ±, μ μ°μ±, νμ₯μ±μ λμ΄λ λ° λμμ΄ λ©λλ€. λμμΈ ν¨ν΄μ κ·μΉμ΄ μλλ€. μΈμ΄ μ’
μμ μ΄μ§ μμ΅λλ€. νλ μ μν¬ κ°λ°μ μ μ©λ μ μμ΅λλ€. νΉμ μμμ μ’
μμ μ΄μ§ μκ³ μΌλ°μ μΌλ‘ νμ©ν μ μμ΅λλ€. μ’μ μ€κ³μ λν μ μμ΄κΈ°λ ν©λλ€. λμμΈ ν¨ν΄μ ν΄λμ€ λΌμ΄λΈλ¬λ¦¬κ° μλλ€. νλ‘κ·Έλλ° μΈμ΄(C++, Java, Python λ±)λ₯Ό μ¬μ©ν λ ν΄λμ€λ€μ΄ λͺ¨μΈ λΌμ΄λΈλ¬..