1. μ μ°¨μ νλ‘κ·Έλλ°(Procedural Programming)
μ μ°¨μ νλ‘κ·Έλλ°μ΄λ λ¬Όμ΄ μμμ μλλ‘ νλ₯΄λ κ²μ²λΌ μμ°¨μ μΈ μ²λ¦¬κ° μ€μμλλ©° νλ‘κ·Έλ¨ μ μ²΄κ° μ κΈ°μ μΌλ‘ μ°κ²°λλλ‘ λ§λλ νλ‘κ·Έλλ° κΈ°λ²μ΄λ€.
- μΈμ΄: C
1) μ₯μ
μ»΄ν¨ν°μ μμ μ²λ¦¬ λ°©μκ³Ό μ μ¬νκΈ° λλ¬Έμ κ°μ²΄μ§ν₯ μΈμ΄λ₯Ό μ¬μ©νλ κ²μ λΉν΄ λ 빨리 μ²λ¦¬λμ΄ μκ°μ μΌλ‘ μ 리νλ€.
2) λ¨μ
- νλ‘κ·Έλ¨ λΆμμ΄ μ΄λ €μ λλ²κΉ μ΄ νλ€λ€.
- μ μ§ λ³΄μλ μ½λμ μμ μ΄ μ΄λ ΅λ€.
2. κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°(Object Oriented Programming)
κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ΄λ νλ‘κ·Έλλ°μμ νμν λ°μ΄ν°λ₯Ό μΆμνμμΌ μν(μμ±, μ νΈλ¦¬λ·°νΈ)μ νμ(μ°μ°)λ₯Ό κ°μ§ νλμ λ 립λ κ°μ²΄λ₯Ό λ§λ€κ³ κ·Έ κ°μ²΄λ€ κ°μ μ κΈ°μ μΈ μνΈμμ©μ ν΅ν΄ λ‘μ§μ ꡬμ±νλ νλ‘κ·Έλλ° λ°©λ²μ΄λ€.
- νμ€ μΈκ³μ κ°μ²΄λ₯Ό κΈ°κ³μ λΆνμ²λΌ νλμ κ°μ²΄λ‘ λ§λ€μ΄ κΈ°κ³μ μΈ λΆνλ€μ 쑰립νμ¬ μ νμ λ§λ€ λ―μ΄ μννΈμ¨μ΄λ₯Ό κ°λ°ν λ κ°μ²΄λ€μ 쑰립ν΄μ νλ‘κ·Έλ¨μ μμ±ν μ μλλ‘ ν λ°©λ²μ΄λ€.
- μΈμ΄: C++, JAVA
1) Classμ Object
- ν΄λμ€(Class): μ΄λ€ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν λ°μ΄ν°λ₯Ό λ§λ€κΈ° μν΄ μΆμν(Abstract)λ₯Ό κ±°μ³ μ§λ¨μ μνλ μμ±(attribute)κ³Ό νμ(behavior)λ₯Ό λ³μμ λ©μλλ‘ μ μν κ²μΌλ‘ κ°μ²΄λ₯Ό λ§λ€κΈ° μν λ©ν μ 보λΌκ³ λ³Ό μ μλ€.
- κ°μ²΄(Object): ν΄λμ€μμ μ μν κ²μ ν λλ‘ μ€μ (Instance) λ©λͺ¨λ¦¬μ ν λΉλ κ²μΌλ‘ μ€μ νλ‘κ·Έλ¨μμ μ¬μ©λλ λ°μ΄ν°μ΄λ€.
- ν΄λμ€(Class) = κ°λ (Concept) = νμ (Type)
- κ°μ²΄(Object) = μ€μ²΄(Instance) = λ³μ(Variable)
- μμ±(Attribute) = Data = Member Variable = State = Field
- λμ(Behavior) = Operation = Member Function = Method
2) νΉμ§
- μΆμν(Abstraction): λΆνμν λΆλΆμ μλ΅νκ³ κ°μ²΄μ μμ± μ€ μ€μν κ²μλ§ μ€μ μ λμ΄ λͺ¨λΈν νλ κ²μΌλ‘ λ°μ΄ν°μ 곡ν΅λ μμ±μ΄λ κΈ°λ₯μ λ¬Άμ΄ μνΌ ν΄λμ€λ₯Ό μ μ νλ κ°λ μ΄λ€.
- μΊ‘μν(Encapsulation): λ°μ΄ν°μ λ°μ΄ν°λ₯Ό μ²λ¦¬νλ ν¨μλ₯Ό ν΄λμ€λΌλ μΊ‘μμ λΆλ₯ν΄μ λ£λ κ²μ΄λ€. μΊ‘μνλ κ°μ²΄μ μΈλΆ λ΄μ©μ μΈλΆμ μν(μ 보 μλ)νκ³ μμ μ μ°μ°λ§ μ κ·Όμ νμ©νμ¬ λ°μ΄ν°λ₯Ό 보νΈνλ€. λΏλ§ μλλΌ κ°μ²΄ μ¬μ¬μ©μ±μ΄ μνν΄μ§λ€.
- μμμ±(Inheritance): μ΄λ―Έ μ μλ μμ(λΆλͺ¨) ν΄λμ€μ λͺ¨λ μμ±κ³Ό μ°μ°μ νμ(μμ) ν΄λμ€κ° λμΌνκ² μ¬μ©νλ κ²μΌλ‘ μ€λ³΅λλ μμ±κ³Ό κΈ°λ₯μ λ°λ³΅μ μΌλ‘ ꡬννμ§ μμλ μ½κ² μ μ©ν μ μλ€.
- λ€νμ±(Polymorphism): μμκ³Ό μ°κ΄μ΄ μλ κ°λ μΌλ‘ ν κ°μ²΄κ° λ€λ₯Έ μ¬λ¬ ννμ κ°μ²΄λ‘ μ¬κ΅¬μ±λλ κ²μ λ§νλ€. μ¦, λμΌν μμ²μ΄ λ€μ΄μμ λ κ·Έκ²μ ꡬννλ λ°©λ²μ μ°¨μ΄λ₯Ό λμ΄ λ€λ₯Έ κ²°κ³Όλ₯Ό λ§λ€μ΄ λ΄λ κ²μΌλ‘ λνμ μΈ μλ‘ μ€λ²λΌμ΄λ©, μ€λ²λ‘λ©μ΄ μλ€.
3) μ₯μ
- μ½λ μ¬μ¬μ©μ± μ¦κ°μ μμ€ν νμ₯ μ©μ΄: μ΄λ―Έ λ§λ€μ΄μ§ ν΄λμ€λ₯Ό κ°μ Έμμ μ¬μ©νκ±°λ μμμ ν΅ν΄ νμ₯ν μ μλ€.
- μ¬μ΄ μ μ§ λ³΄μ: μμ ν΄μΌ ν λΆλΆμ΄ ν΄λμ€ λ΄λΆμ μκΈ° λλ¬Έμ ν΄λΉ λΆλΆλ§ μμ νλ©΄ λλ€.
- λν νλ‘μ νΈμ μ ν©: ν΄λμ€ λ¨μλ‘ λͺ¨λν μμΌμ κ°λ°ν μ μμ΄μ μ 무 λΆλ΄νκΈ° μ½λ€.
4) λ¨μ
- μ²λ¦¬ μλκ° μλμ μΌλ‘ λ리λ€.
- μ€κ³ μ λ§μ λ Έλ ₯κ³Ό μκ°μ΄ νμνλ€.
5) getterλ setterλ₯Ό μ¬μ©νλ μ΄μ λ?
λ³΄ν΅ λ©€λ² λ³μλ private μ κ·Ό μ§μ μλ‘ μ€μ νκ³ μ΄ λ³μλ₯Ό μ΄μ©νλ λ©€λ² ν¨μλ public μ κ·Ό μ§μ μλ‘ μ€μ νλ€. μ§μ μ μΌλ‘ μ κ·Όνλ©΄ 무λΆλ³ν μμ μΌλ‘ μλλμ§ μμ κ°μ΄ λ©€λ² λ³μμ μ μ₯λ μ μλ€. κ·Έλμ μ΄λ₯Ό λ°©μ§νκΈ° μν΄ λ©€λ² ν¨μλ‘ λ©€λ² λ³μμ μ κ·Όνλ©΄ μμΈ μ²λ¦¬λ μ¬μ μ²λ¦¬λ‘ κ°μ²΄μ 무결μ±μ 보μ₯ν μ μλ€.