-
λ°μν
λ€μ΄κ°κΈ°
μ΄ κΈμ "λ©΄μ μ μν CS μ 곡μ§μ λ ΈνΈ" μμ μ ν΅ν΄ λ°°μ΄ λ΄μ© μ€ 1μ₯ λμμΈ ν¨ν΄μ κ΄ν λ΄μ©μ λλ€.
- λ ΈμΆλͺ¨λ ν¨ν΄(Revealing Module Pattern)
λ ΈμΆλͺ¨λ ν¨ν΄μ μ¦μ μ€ν ν¨μλ₯Ό ν΅ν΄ private, public κ°μ μ κ·Ό μ μ΄μλ₯Ό λ§λλ ν¨ν΄μ λ§νλ€.
- public
ν΄λμ€μ μ μλ ν¨μμμ μ κ·Ό κ°λ₯νλ©° μμ ν΄λμ€μ μΈλΆ ν΄λμ€μμ μ κ·Ό κ°λ₯ν λ²μ
- protected
ν΄λμ€μ μ μλ ν¨μμμ μ κ·Ό κ°λ₯νλ©° μμ ν΄λμ€μμμ μ κ·Ό κ°λ₯νμ§λ§, μΈλΆ ν΄λμ€μμ μ κ·Ό λΆκ°λ₯ν λ²μ
- private
ν΄λμ€μμ μ μλ ν¨μμμλ§ μ κ·Ό κ°λ₯(μμ ν΄λμ€μ μΈλΆ ν΄λμ€μμ μ κ·Ό λΆκ°λ₯ν λ²μ)- MVC ν¨ν΄
MVC ν¨ν΄μ λͺ¨λΈ(Model), λ·°(View), 컨νΈλ‘€λ¬(Controller)λ‘ μ΄λ£¨μ΄μ§ λμμΈ ν¨ν΄μ΄λ€. μ ν리μΌμ΄μ μ κ°λ° ν λ κ΅¬μ± μμλ₯Ό λΆλ¦¬ν΄μ κ°λ°ν μ μλ€. λ°λΌμ μ¬μ¬μ©μ±κ³Ό νμ μ±μ΄ μ©μ΄νλ€. νμ§λ§, 볡μ‘ν μ ν리μΌμ΄μ μ κ°λ°ν κ²½μ°μ λͺ¨λΈκ³Ό λ·°μ κ΄κ³κ° 볡μ‘ν΄μ§λ λ¨μ μ΄ μλ€.
컨νΈλ‘€λ¬ -> λ·°
λ·° -> 컨νΈλ‘€λ¬
컨νΈλ‘€λ¬ -> λͺ¨λΈ
λͺ¨λΈ -> 컨νΈλ‘€λ¬
μ μ²λΌ μν΅νλ€.
- λͺ¨λΈ(Model)
λͺ¨λΈμ μ ν리μΌμ΄μ μ λ°μ΄ν°μΈ λ°μ΄ν°λ² μ΄μ€, μμ, λ³μ λ±μ λ§νλ€. 컨νΈλ‘€λ¬λ₯Ό ν΅ν΄ λͺ¨λΈμ μμ±νκ±°λ μμ νλ€.
- λ·°(View)
λ·°λ μ¬μ©μ μΈν°νμ΄μ€ μμλ₯Ό λνλΈλ€. νλ§λλ‘ μ¬μ©μκ° λ³Ό μ μλ νλ©΄μ λ§νλ€. λ³κ²½μ΄ μΌμ΄λλ©΄ 컨νΈλ‘€λ¬μ μ λ¬νλ€.
- 컨νΈλ‘€λ¬(Controller)
컨νΈλ‘€λ¬λ νλ μ΄μμ λͺ¨λΈκ³Ό νλ μ΄μμ λ·°λ₯Ό μλ λ€λ¦¬μ μν μ νκ³ λ©μΈ λ‘μ§μ λ΄λΉνλ€.- MVP ν¨ν΄
MVP ν¨ν΄μ MVC ν¨ν΄μΌλ‘λΆν° νμλ κ²μΌλ‘, 컨νΈλ‘€λ¬κ° νλ μ ν°(Presenter)λ‘ κ΅μ²΄λ λμμΈ ν¨ν΄μ΄λ€. μ΄λ, λ·°μ νλ μ ν°λ μΌλμΌ κ΄κ³λ₯Ό κ°κ² λλ€.
νλ μ ν° <-> λ·°
νλ μ ν° <-> λͺ¨λΈ
μ μ²λΌ μν΅νλ€.
- MVVM ν¨ν΄
MVVM ν¨ν΄μ MVC ν¨ν΄μΌλ‘λΆν° νμλ κ²μΌλ‘, 컨νΈλ‘€λ¬κ° λ·° λͺ¨λΈ(View Model)λ‘ λ°λ λμμΈ ν¨ν΄μ΄λ€. MVC ν¨ν΄κ³Όλ λ€λ₯΄κ² 컀맨λ(Command)μ λ°μ΄ν° λ°μΈλ©(Data Binding)μ κ°μ§λ€. λ·°μ λ·° λͺ¨λΈ μ¬μ΄μ μλ°©ν₯ λ°μ΄ν° λ°μΈλ©μ μ§μνλ€. μ΄ ν¨ν΄μ κ°μ§ λνμ μΈ νλ μμν¬λ‘λ Vue.jsκ° μλ€.
- λ·° λͺ¨λΈ(View Model)
λ·° λͺ¨λΈμ λ·°λ₯Ό λ μΆμνν κ³μΈ΅μ΄λ€.
- 컀맨λ(Command)
μ¬λ¬ κ°μ§ μμμ λν μ²λ¦¬λ₯Ό νλμ μ‘μ μΌλ‘ μ²λ¦¬ν μ μκ² νλ κΈ°λ²
- λ°μ΄ν° λ°μΈλ©(Data Binding)
νλ©΄μ 보μ΄λ λ°μ΄ν°μ μΉ λΈλΌμ°μ μ λ©λͺ¨λ¦¬ λ°μ΄ν°λ₯Ό μΌμΉμν€λ κΈ°λ²μ΄λ€. λ·° λͺ¨λΈμ λ³κ²½νλ©΄ λ·°κ° λ³κ²½λλ€.- μ μΈνκ³Ό ν¨μν νλ‘κ·Έλλ°
μ μΈν νλ‘κ·Έλλ°(Declarative Programming)μ΄λ "νλ‘κ·Έλ¨μ ν¨μλ‘ μ΄λ£¨μ΄μ§ κ²μ΄λ€."λΌλ λͺ μ κ° λ΄κ²¨ μλ ν¨λ¬λ€μμ΄λ€. μ΄ νλ‘κ·Έλλ°μ μΌμ’ μΌλ‘ ν¨μν νλ‘κ·Έλλ°(Functional Programming)μ΄ μλ€.
ν¨μν νλ‘κ·Έλλ°μ μμ ν¨μλ€λ‘ λ‘μ§μ ꡬννκ³ κ³ μ°¨ ν¨μλ₯Ό ν΅ν΄ μ¬μ¬μ©μ±μ λμΈ νλ‘κ·Έλλ° ν¨λ¬λ€μμ΄λ€. νΉμ§μΌλ‘ 컀λ§, λΆλ³μ± λ±μ΄ μλ€.
- μμ ν¨μ
μΆλ ₯μ΄ μ λ ₯μλ§ μμ‘΄νλ κ²μ μλ―Έ
- κ³ μ°¨ ν¨μ
ν¨μκ° ν¨μλ₯Ό κ°μ²λΌ 맀κ°λ³μλ‘ λ°μ λ‘μ§μ μμ±ν μ μλ κ²- κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°
κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°(Object-Oriented Programming)μ λ°μ΄ν°λ₯Ό κ°μ²΄λ‘ μ·¨κΈνμ¬ κ°μ²΄ λ΄λΆμ μ μΈλ λ©μλλ₯Ό νμ©νλ λ°©μμ λ§νλ€. νΉμ§μΌλ‘ μΆμν, μΊ‘μν, μμμ±, λ€νμ±μ΄ μλ€.
- μΆμν(Abstraction) : 볡μ‘ν μμ€ν μΌλ‘λΆν° ν΅μ¬μ μΈ κΈ°λ₯μ κ°μΆλ €λ΄λ κ²
- μΊ‘μν(Encapsulation) : κ°μ²΄μ μμ±κ³Ό λ©μλλ₯Ό νλλ‘ λ¬Άκ³ μΌλΆλ₯Ό μΈλΆμ κ°μΆμ΄ μλνλ κ²
- μμμ±(Inheritance) : μμ ν΄λμ€μ νΉμ±μ νμ ν΄λμ€κ° μ΄μ΄λ°μμ μ¬μ¬μ©νκ±°λ μΆκ°, νμ₯νλ κ²
- λ€νμ±(Polymorphism) : νλμ λ©μλλ ν΄λμ€κ° λ€μν λ°©λ²μΌλ‘ λμνλ κ²(ex : μ€λ²λ‘λ©, μ€λ²λΌμ΄λ©)
- μ€λ²λ‘λ© (Overloading)
κ°μ μ΄λ¦μ κ°μ§ λ©μλλ₯Ό μ¬λ¬κ° λλ κ²μ λ§νλ€. λ©μλμ νμ , 맀κ°λ³μμ μ νμ΄λ κ°μλ‘ κ΅¬λΆνλ€.
public void hello(String s) { System.out.println("Hello " + s); } public void hello(String s1, String s2) { System.out.println("Hello " + s1 + "and " + s2); }β
- μ€λ²λΌμ΄λ©(Overriding)
μ£Όλ‘ λ©μλ μ€λ²λΌμ΄λ©μ λ§νλ€. μμ ν΄λμ€λ‘λΆν° μμλ°μ λ©μλλ₯Ό νμ ν΄λμ€κ° μ¬μ μ νλ κ²μ λ§νλ€.class Animal { public void shout() { System.out.println("Wal Wal!"); } } class Cat extends Animal { @Override public void shout() { System.out.println("Meow!"); } }
κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ μ€κ³ν λλ SOLID μμΉμ μ§μΌμΌ νλ€.
- λ¨μΌ μ± μ μμΉ(Single Responsibility Principle) : λͺ¨λ ν΄λμ€λ κ°κ° νλμ μ± μλ§ κ°μ ΈμΌ νλ€. μλ₯Ό λ€μ΄ μ΄λ€ ν΄λμ€κ° Aμ κ΄λ ¨λ λ‘μ§μ΄λΌλ©΄ μ΄λ₯Ό μμ ν΄λ Aμ κ΄λ ¨λ μμ μ΄μ¬μΌ νλ€.
- κ°λ°©-νμ μμΉ(Open Closed Principle) : μ μ§ λ³΄μ μ¬νμ΄ μκΈ΄λ€λ©΄ μ½λλ₯Ό μ½κ² νμ₯ν μ μλλ‘ νκ³ , μμ ν λλ λ«ν μμ΄μΌ νλ μμΉμ΄λ€. λ€μ λ§ν΄μ κΈ°μ‘΄μ μ½λλ₯Ό λ³κ²½νλ κ²μ μ§μν΄μΌ νλ€λ κ²μ΄λ€.
- 리μ€μ½ν μΉν μμΉ(Liskov Substitution Principle) : νλ‘κ·Έλ¨μ κ°μ²΄λ νλ‘κ·Έλ¨μ μ νμ±μ κΉ¨λ¨λ¦¬μ§ μμΌλ©΄μ νμ νμ μ κ°μ²΄λ‘ λ°κΏ μ μμ΄μΌ νλ€. μ΄λ€ ν΄λμ€λ₯Ό λ λ€λ₯Έ ν΄λμ€κ° μμνλ€λ©΄ μμ ν΄λμ€, νμ ν΄λμ€κ° λκ² λλ€. μ΄ λ, μμ ν΄λμ€ κ°μ²΄μ νμ ν΄λμ€ κ°μ²΄λ₯Ό λ£μ΄λ λ¬Έμ κ° μλλ‘ ν΄μΌ νλ€λ κ²μ΄λ€.
- μΈν°νμ΄μ€ λΆλ¦¬ μμΉ(Interface Segregation Principle) : νλμ μΌλ°μ μΈ μΈν°νμ΄μ€λ₯Ό λ§λλ κ² λ³΄λ€ κ΅¬μ²΄μ μΌλ‘ μ¬λ¬ κ°μ μΈν°νμ΄μ€λ₯Ό λ§λ€μ΄μΌ νλ μμΉμ΄λ€.
- μμ‘΄ μμ μμΉ(Dependency Inversion Principle) : μμ κ³μΈ΅μ νμ κ³μΈ΅μ λ³νμ λν ꡬνμΌλ‘λΆν° λ 립ν΄μΌ νλ€.
- μ μ°¨ν νλ‘κ·Έλλ°
μ μ°¨ν νλ‘κ·Έλλ°(Procedural Programming)μ λ‘μ§μ΄ μνλμ΄μΌ ν μ°μμ μΈ κ³μ° κ³Όμ μΌλ‘ μ΄λ£¨μ΄μ§λ€. λͺ¨λννκΈ°κ° μ΄λ ΅κ³ μ μ§λ³΄μμ±μ΄ λ¨μ΄μ§λ λ¨μ μ΄ μλ€.
λ°μν