κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°κ³Ό μ μ°¨μ§ν₯ νλ‘κ·Έλλ°μ λν΄μ μμ보λλ‘ νμ.
π 1. κ°μ²΄μ§ν₯ νλ‘κ·Έλλ° (Object Oriented Programming, OOP)
π 1. κ°λ
κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ΄λ κ°μ²΄λ€μ΄ λͺ¨μ¬μ μνΈ νλ ₯νλ©΄μ λ°μ΄ν°λ₯Ό μ²λ¦¬νλ λ°©μμ νλ‘κ·Έλλ° μ€κ³ λ°©λ²μ λ§νλ€.
π 2. νΉμ§
κ°μ²΄μ§ν₯μΈμ΄μ νΉμ§μΌλ‘λ μΊ‘μν(Encapsulation), μμ(Inheritance), λ€νμ±(Polymorphism), μΆμν(Abstraction)κ° μλ€.
π 1. μΊ‘μν(Encapsulation)
- λ΄λΆλ₯Ό μΊ‘μμ²λΌ κ°μΈμ κ·Έ λ΄λΆλ₯Ό 보νΈνκ³ λ³Ό μ μκ² νλ κ²μ λ§νλ€.
- λ°μ΄ν°μ κΈ°λ₯μ νλλ‘ λ¬Άμ΄μ κ΄λ¦¬νκ² λλ€.
- μ€μ λ‘ κ΅¬νλλ λΆλΆμ μΈλΆλ‘ λλ¬λμ§ μλλ‘ νμ¬ μ 보λ₯Ό μλν μ μλ€.
π 2. μμ(Inheritance)
- μμ ν΄λμ€μ μμ±(λ³μ)κ³Ό κΈ°λ₯(λ©μλ)μ μ¬μ¬μ©νμ¬(μμ) νμ ν΄λμ€κ° μ λΆ λ¬Όλ €λ°λ κ²μ λ§νλ€.
- μμμ μ½λμ μ€λ³΅ μμ±μ λ°©μ§νκ³ , μ½λλ₯Ό μ¬μ¬μ©ν¨μΌλ‘μ¨ μ½λ μμ±μ λλ μκ°κ³Ό λΉμ©μ μ€μΈλ€.
π 3. λ€νμ±(Polymorphism)
- κ°μ μ΄λ¦μ λ©μλκ° ν΄λμ€ νΉμ κ°μ²΄μ λ°λΌ λ€λ₯΄κ² ꡬνλλ κ²μ λ§νλ€.
- κΈ°λ₯μ νμ₯νκ±°λ λ³κ²½νλ κ²μ κ°λ₯νκ² ν΄μ€λ€.
- Javaλ₯Ό μλ‘ λ€λ©΄, μμλ°μ νμ ν΄λμ€κ° λ©μλμ λ΄μ©λ§ λ³κ²½(μ¬μ μ) νλ μ€λ²λΌμ΄λ©(Overriding)κ³Ό λ©μλμ μ΄λ¦μ κ°κ³ 맀κ°λ³μμ κ°μλ νμ μ΄ λ€λ₯Έ ν¨μλ₯Ό μ¬μ μ νλ μ€λ²λ‘λ©(Overloading)μ΄ μλ€.
π 4. μΆμν(Abstraction)
- κ°μ²΄μ 곡ν΅μ μΈ μμ±κ³Ό κΈ°λ₯μ μΆμΆνμ¬ μ μνλ κ²μ μλ―Ένλ€.
- ν΄λμ€λ₯Ό μ μν λ λΆνμν λΆλΆλ€μ μλ΅νκ³ κ°μ²΄μ μμ± μ€ μ€μν κ²μλ§ μ€μ μ λμ΄ κ°λ΅ν νλ κ²μ λ§νλ€.
π 3. μ₯μ
- μ¬μ¬μ©μ±
μμμ ν΅ν΄ νλ‘κ·Έλλ° μ μ½λμ μ¬μ¬μ©μ λμΌ μ μλ€. - μμ°μ± ν₯μ
μ μ€κ³λ ν΄λμ€λ₯Ό λ§λ€μ΄μ λ 립μ μΈ κ°μ²΄λ₯Ό μ¬μ©ν¨μΌλ‘μ¨ κ°λ°μ μμ°μ±μ ν₯μν μ μλ€.
μμ°μ μΈ λͺ¨λΈλ§
μ°λ¦¬ μΌμμνμ λͺ¨μ΅μ κ΅¬μ‘°κ° κ°μ²΄μ μμ°μ€λ½κ² λ Ήμλ€μ΄ μκΈ° λλ¬Έμ μκ°νκ³ μλ κ²μ κ·Έλλ‘ μμ°μ€λ½κ² ꡬν κ°λ₯νλ€. - μ μ§λ³΄μμ μ°μμ±
νλ‘κ·Έλ¨ μμ μ μΆκ°, μμ μ νλλΌλ μΊ‘μνλ₯Ό ν΅ν΄ μ£Όλ³ μν₯μ΄ μ κΈ° λλ¬Έμ μ μ§λ³΄μκ° μ¬μμ λ§€μ° κ²½μ μ μ΄λΌ ν μ μλ€.
π 4. λ¨μ
- λλ¦° κ°λ° μλ
λͺ¨λ κ°μ²΄μ μν κ³Ό κΈ°λ₯μ μ΄ν΄ν΄μΌ νκΈ° λλ¬Έμ νλ‘κ·Έλλ°μ λ§μ μκ°μ΄ μμλλ€. - λλ¦° μ€ν μλ
κ°μ²΄μ§ν₯μΈμ΄μ μ²λ¦¬ μλλ μ μ°¨μ§ν₯μΈμ΄λ³΄λ€ λ립λλ€.
π 5. μ’ λ₯
C++, Java, Python, C#, Swift, Kotlin,...
π 2. μ μ°¨μ§ν₯ νλ‘κ·Έλλ° (Procedural Programming, PP)
π 1. κ°λ
μ μ°¨μ§ν₯ νλ‘κ·Έλλ°μ΄λ μμ°¨μ μΈ μ²λ¦¬κ° μ€μμλλ©° νλ‘κ·Έλ¨ μ μ²΄κ° μ κΈ°μ μΌλ‘ μ°κ²°λλλ‘ λ§λλ νλ‘κ·Έλλ° κΈ°λ²μ λ§νλ€.
π 2. νΉμ§
- νλ‘κ·Έλ¨μ μμμ νλ¦μ λ¨Όμ μΈμ°κ³ νμν μλ£κ΅¬μ‘°μ ν¨μλ€μ μ€κ³νλ€.
π 3. μ₯μ
- λΉ λ₯Έ μ€ν μλ
μ΄κΈ° νλ‘κ·Έλλ° μΈμ΄λ‘ μ»΄ν¨ν° μ²λ¦¬κ΅¬μ‘°μ λΉμ·νμ¬ μ€ν μλκ° λΉ λ¦
π 4. λ¨μ
- μ μ§λ³΄μμ λλ²κΉ
μ μ΄λ €μ
λͺ¨λ ꡬμ±μμκ° μ κΈ°μ μΌλ‘ μ°κ²°λμ΄ μλ€λ λ§μ, νλκ° κ³ μ₯ λ¬μ λ μμ€ν μ μ²΄κ° κ³ μ₯λλ€λ λ»μ΄λ€.
λν λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ μΌλΆλΆμ΄ μλ μμ€ν μ 체λ₯Ό μ리ν΄μΌ νλ€λ λ§μ΄κΈ°λ νλ€.
κ·Έλμ μ μ°¨μ§ν₯μΈμ΄λ μ΄λ¬ν μ μ§ λ³΄μκ° λ§€μ° κΉλ€λ‘μ΄ νΈμ΄λ©°, νΉν λλ²κΉ κ³Όμ μ΄ μ΄λ ΅λ€. - μ격ν μμκ° μ ν΄μ Έ μμ΄ λΉν¨μ¨μ
μ€ν μμκ° μ ν΄μ Έ μμΌλ―λ‘ μ½λμ μμκ° λ°λλ©΄ λμΌν κ²°κ³Όλ₯Ό 보μ₯νκΈ° μ΄λ ΅λ€.
μ¦, μΈμ΄μ μ΅ν΅μ±μ΄ λΆμ‘±νμ¬ μμ ν¨μ¨μ΄ λ¨μ΄μ§λ€.
π 5. μ’ λ₯
C, Visual Basic, Fortran, Pascal, ...
π 3. κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°κ³Ό μ μ°¨μ§ν₯ νλ‘κ·Έλλ° λΉκ΅
κ°μ²΄μ§ν₯μ λ°λλ μ μ°¨μ§ν₯μ΄ μλκ³ , μ μ°¨μ§ν₯μ λ°λλ κ°μ²΄μ§ν₯μ΄ μλλ€.
κ°μ²΄μ§ν₯ μΈμ΄λ₯Ό μ¬μ©νλ€λ©΄, νμν κ°μ²΄λ€μ μ’ λ₯μ μμ± λ±μ΄ λ μ€μ μ΄ λλ κ²μ΄κ³ , μ μ°¨μ§ν₯ μΈμ΄λ₯Ό μ¬μ©νλ€λ©΄, μ μ°¨κ° λ μ€μ μ΄ λλ κ²μ΄λ€.
κ°μ²΄λ λ³μμ ν¨μλ₯Ό μΆμν κ³Όμ μ ν΅ν΄ μ’ λ λͺ¨λν ν λꡬμ λΆκ³Όνλ€. λͺ¨λν ν¨μΌλ‘μ¨ κ°μ²΄μ§ν₯μ΄ μ§λ μ μλ κ°μ μΈ μ 보μλν, μμ λ° λ€νμ±μ ν΅ν νμ₯μ±κ³Ό μ¬μ¬μ©, μ΄λ₯Ό κΈ°λ°ν μμ°μ±κ³Ό μ μ§λ³΄μμ μ©μ΄μ±μ΄ OOPμ μ§μ ν νΉμ§μ΄μ μ 체μ±μΌμ§λ λͺ¨λ₯Έλ€.
νμ§λ§, κ°μ²΄μ§ν₯ μ€κ³λ λ§μ΄λμ€κ° λλ κ²½μ°κ° μλ€.
κ°μ²΄μ§ν₯λ νλ‘μ νΈκ° 컀μ§λ©΄ λ€λ₯Έ λ©΄μμ 볡μ‘ν΄μ§λ©°, μ»΄ν¨ν°μ κ΄μ μ΄ μλκΈ°μ μλμ μΌλ‘ λλ¦° κ²½μ°κ° μλ€. κ°μ²΄μ§ν₯μ κΈ°λ₯λ€μ λ§λ²μ΄ μλλΌ μ»΄ν¨ν° μμ 미리 ꡬνλμ΄ μλ μ½λ λμΉμ λΆκ³ΌνκΈ° λλ¬Έμ΄λ€. λ€λ§ λΌμ΄λΈλ¬λ¦¬νλμ΄ κΈ°λ₯μΌλ‘μ¨ μ 곡λκΈ°μ κ·Έκ±Έ μ¬μ©νλ νλ‘κ·Έλλ¨Έ μ μ₯μμ νΈν λΏμ΄λ€.
λν, κ°μ²΄ μ§ν₯ μ€κ³ μ λ΅μ λ°λμ κ°μ²΄ μ§ν₯ μΈμ΄(Java, kotlin λ±)μμλ§ μ¬μ©λλ κ²μ μλλ€. μλ°μ€ν¬λ¦½νΈλ κ°μ²΄ μ§ν₯ μΈμ΄λ μλμ§λ§, λ°λ‘ ν΄λμ€(class) λ¬Έλ²μ μ§μνλ κ²μ²λΌ λλΆλΆμ νλ‘κ·Έλλ° μΈμ΄λ κ°μ²΄ μ§ν₯ μΈμ΄ λ°©μμ μ§μνκ³ μλ€.
μ¦, κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° κ°λ μ λ°°μ°λ©΄, κ·Έ κΈ°μ μ λ€μν λ§μ μΈμ΄μ μ μ©ν μ μλ€λ λ»μ΄κΈ°λ νλ€.
ν΄λΉ κΈμ
TechYeon λμ 'κ°μ²΄μ§ν₯(OOP) VS μ μ°¨μ§ν₯(PP) νλ‘κ·Έλλ°',
HP_Factory λμ 'μ μ°¨μ§ν₯(Procedural Programming), κ°μ²΄μ§ν₯(Object Oriented Programming) μ₯λ¨μ λ° μ°¨μ΄μ ',
Blackvill λμ '[CS] μ μ°¨ μ§ν₯ vs κ°μ²΄ μ§ν₯',
Incheol λμ 'κ°μ²΄μ§ν₯κ³Ό μ μ°¨μ§ν₯',
Inpa λμ 'κ°μ²΄ μ§ν₯ κ°λ κ³Ό μΆμν μλ²½ μ΄ν΄νκΈ°'
λ₯Ό μ°Έκ³ νμμ΅λλ€.
'π νλ‘κ·Έλλ°' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
κ³μΈ΅ν μν€ν μ² (Layered Architecture) (0) | 2023.06.27 |
---|---|
CQS (Command Query Separation) (0) | 2023.06.27 |