κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°(OOP) μ΄λ ?
κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° (Object-Oriented Programming, OOP)μ νλ‘κ·Έλλ°μμ νμν λ°μ΄ν°λ₯Ό μΆμν μμΌ μνμ νμλ₯Ό κ°μ§ κ°μ²΄λ‘ λ§λ€κ³ , κ°μ²΄λ€κ°μ μ κΈ°μ μΈ μνΈμμ©μ ν΅ν΄ λ‘μ§μ ꡬμ±νλ νλ‘κ·Έλλ° λ°©λ².
(μ°Έκ³ λ‘, μ μ°¨ μ§ν₯ νλ‘κ·Έλλ°μ΄λ μμ°¨μ μΈ μ²λ¦¬κ° μ€μμλλ©° νλ‘κ·Έλ¨ μ μ²΄κ° μ κΈ°μ μΌλ‘ μ°κ²°λλλ‘ λ§λ νλ‘κ·Έλλ°, λ°λ³΅λλ λμμ ν¨μ λ° νλ‘μμ ννλ‘ λͺ¨λννμ¬ μ¬μ©νλ λ°©μ)
κ±°κΈ°μ λ, κ°μ²΄(λλ ν΄λμ€)λ?
ν΄λμ€ : μ΄λ€ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν λ°μ΄ν°λ₯Ό λ§λ€κΈ° μν΄ μΆμνλ₯Ό κ±°μ³ μ§λ¨μ μνλ μμ±(attribute)κ³Ό νμλ₯Ό λ³μμ λ©μλλ‘ μ μν κ²
κ°μ²΄(μΈμ€ν΄μ€) : ν΄λμ€μμ μ μν κ²μ ν λλ‘ μ€μ λ©λͺ¨λ¦¬μ ν λΉλ κ²μΌλ‘ μ€μ νλ‘κ·Έλ¨μ μ¬μ©λλ λ°μ΄ν°
κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ νΉμ§ (4κ°μ§)
1. μΆμν (Abstraction)
: κ°μ²΄λ€λΌλ¦¬ 곡ν΅μ μΈ νΉμ§(κΈ°λ₯, μμ±)μ μΆμΆνμ¬ μ μ. μ¦, ν΄λμ€λ₯Ό μ μνλ κ².
ex) κ°μ²΄1(μΌμ±ν°), κ°μ²΄2(μμ΄ν°), κ°μ²΄3(LGν°)... => ν΄λμ€(ν΄λν°)
μΆν λ€λ₯Έ λΈλλκ° μΆκ°λ μ μλ€. μ΄ λ, μΆμνλ‘ 'ν΄λν°'μ ꡬνν΄λμΌλ©΄ λ€λ₯Έ κ³³μ μ½λλ μμ ν νμ μμ΄ μΆκ°λ‘ λ§λ€ λΆλΆλ§ μλ‘ μμ±ν΄μ£Όλ©΄ λλ€.
2. μμ (Ingeritance)
: μ΄λ―Έ μ μλ μμ ν΄λμ€(λΆλͺ¨ν΄λμ€)μ λͺ¨λ μμ±κ³Ό μ°μ°μ νμ ν΄λμ€(μμν΄λμ€)κ° λ¬Όλ €λ°μ.
κΈ°μ‘΄ μ½λ μ¬νμ©, μ½λ μ€λ³΅ μ κ±°. μμ°μ± λμ.
3. λ€νμ± (Polymorphism)
: νλμ λ³μ λλ ν¨μκ° μν©μ λ°λΌ μλ‘ λ€λ₯Έ λ°©μμΌλ‘ λμ. κ°μ μ°κ²°λ κ°μ²΄μ μμ‘΄.
ex) λ©μλ μ€λ²λΌμ΄λ©, λ©μλ μ€λ²λ‘λ©
4. μΊ‘μν (Encapsultation)
: κ΄λ ¨μλ λ°μ΄ν°μ λ©μλλ₯Ό νλμ λ¨μλ‘ λ¬Άμ΄, μΈλΆμμ μ½κ² μ κ·Όνμ§ λͺ»νλλ‘ ν¨. λ°μ΄ν° μλ/보νΈ.
ex) μ κ·Ό μ νμ private
λνμ μΈ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° μΈμ΄
JAVA, Python, C++, C# ..
μ₯μ κ³Ό λ¨μ
μ₯μ : λν νλ‘μ νΈμ μ ν©. μ μ§λ³΄μμ μ©μ΄. μ½λ μ¬μ¬μ©μ μ©μ΄.
λ¨μ : μλκ° μλμ μΌλ‘ λλ¦Ό. κ°μ²΄ μκ° λ§μμ§μ λ°λΌ μ©λμ΄ μ»€μ§. μ½λλ₯Ό μ€κ³νκ³ μμ±νλλ°μ λ§μ μκ° μμ.
getter, setterλ₯Ό μ¬μ©νλ μ΄μ ?
getter, setterλ₯Ό μ¬μ©νλ©΄ λ©μλλ₯Ό ν΅ν΄μ μ κ·ΌνκΈ° λλ¬Έμ, λ©μλ μμμ λ§€κ°λ³μ κ°μ΄ μ΄λ€ μ¬λ°λ₯΄μ§ μμ μ λ ₯μ λν΄ μ¬μ μ μ²λ¦¬ν μ μκ² μ ννκ±°λ μ‘°μ ν μ μλ€.
μ νλΈ λ³΄λ€κ° μ΄ν΄νκΈ° μ¬μ΄ κ°μ²΄μ§ν₯ κ°λ μ°Έκ³ !!
μ’μ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ΄λ? (λ€νμ±.. SOLID μμΉ..)
κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ νλ‘κ·Έλ¨μ μ μ°νκ³ λ³κ²½ μ©μ΄νκ² λ§λ λ€! * μλ° μΈμ΄μ λ€νμ±(Polymorphism)- μν κ³Ό ꡬνμΌλ‘ ꡬλΆν΄λ³΄μex) μ΄μ μ - μλμ°¨μ΄μ μλ μλμ°¨μ μ’ λ₯κ° λ°κ»΄λ μ΄μ μ
rabo93.tistory.com
'λ°±μλ(Back-End) κ°λ° > Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
JAVAλ? μλ°μ ꡬλ μ리 (JVMμ νΉμ§) (1) | 2025.01.19 |
---|---|
μΏ ν€(Cookie) vs μΈμ (Session) (0) | 2025.01.19 |
μλ°(JAVA) μμ½ μ 리 (0) | 2025.01.10 |
form νκ·Έ μ λ ₯λ°μ λ°μ΄ν°λ₯Ό νλΌλ―Έν° νμμΌλ‘ νκΊΌλ²μ 리ν΄λ°κΈ°($("form").serialize() ν¨μ) (0) | 2025.01.08 |
μΈμ (Session) vs μΏ ν€(Cookie) (0) | 2024.11.18 |