μλ° νλ‘κ·Έλλ° = κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°
OOP
Object Oriented Programming
κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°
κ°μ²΄λ λ§ κ·Έλλ‘ λμμ λνλ΄λ λ¨μ΄
μλ₯Ό λ€μ΄, μ¬λ κ°μΈ ν λͺ ν λͺ μ λͺ¨λ κ°μ²΄λΌ ν μ μκ³ , μ± ν κΆ ν κΆμ κ°μ²΄λΌ ν μ μλ€.
ν΄λμ€
μ¬λλ€μ μΌλ°μ μΌλ‘ κ°μ μμ±λ€μ κ°κ³ μλλ°, μ¬κΈ°μ μμ±μ΄λ λ, μ½, μ , μ, λ°, λ±μ μ 체λ€μ μλ―Ένλ€.
μ¬λκ°μ κ°μ²΄λ€μ΄ 곡ν΅μ μΌλ‘ κ°λ μμ±λ€μ λͺ¨μμ μ μλ΄λ¦° κ²μ ν΄λμ€λΌκ³ νλ€.
κ°μ²΄ = λΆμ΄λΉ΅
ν΄λμ€ = λΆμ΄λΉ΅ ν
oopνλ©΄ μλμΌλ‘ 4κ°μ§ μμ±μ΄ λ μ¬λΌμΌ νλ€.
OOP μμ±
1. μΊ‘μν Encapsulation
μΊ‘μνλ νλμ κ°μ²΄μ λν΄ κ·Έ κ°μ²΄κ° νΉμ ν λͺ©μ μ μν΄ νμν λ³μλ λ©μλλ₯Ό νλλ‘ λ¬Άλ κ²μ μλ―Ένλ€.
λ°λΌμ ν΄λμ€λ₯Ό μ°λ¦¬κ° λ§λ€ λ νλ μ΄ν΄λμ€μμ λ§λ€μ΄μ§ κ°μ²΄κ° νΉμ ν λͺ©μ μ κ°μ§κ³ μ¬μ©ν΄μΌν λ³μμ κ·Έ λ³μλ₯Ό κ°μ§κ³ νΉμ ν μ‘μ μ¦ λ©μλ λλ ν¨μλ₯Ό κ΄λ ¨μ± μκ² ν΄λμ€μ ꡬμ±ν΄μΌνλ€.
μλ₯Ό λ€μλ©΄, μνμ΄λΌλ ν΄λμ€λ μκ³ λΌλ λ³μκ° μκ³ κ·Έ μκ³ λ₯Ό μ‘°ννκ±°λ, μκ³ λ₯Ό μμ ν μ μλ λ©μλλ±μ΄ μλ€κ³ μΉλ κ²μ΄λ€.
κ·Όλ° μΊ‘μνλ₯Ό νλ μ€μν λͺ©μ μ λ°λ‘ μ 보μ μλνμ΄λ€. μκ³ λΌλ λ³μκ° λ§μ½ public μΌλ‘ μ μΈλμ΄μλ€κ³ μΉμ. 200λ§μμΈ λμ μκ³ κ° λκ΅°κ° μ κ·Όμ μν΄ 0μμ΄ λ μλ μλ κ²μ΄λ€. λ°λΌμ μκ³ λΌλ λ³μλ₯Ό λ°λ‘ μ κ·Όν μ μλλ‘ privateλ‘ μ μΈνκ³ λ°μ΄ν°λ₯Ό 보νΈνλ κ²μ΄λ€.
μ΄λ κ² λ³΄νΈλ λ³μλ getterλ setterλ±μ λ©μλλ₯Ό ν΅ν΄μλ§ κ°μ μ μΌλ‘ μ κ·Όμ΄ κ°λ₯νλλ‘ νλ κ²μ΄ λ°λ‘ μΊ‘μνμ μ€μν λͺ©μ μ΄λ€.
2. μΆμν Abstraction
μΆμμ μΌλ‘ μκ°ν΄ μΌλ¨ ν°νμ ν΄λμ€λ₯Ό ꡬννκ³ κ±°κΈ°μ μ΅μ μ΄λ¬ν 곡ν΅μ μΈ μμλ νμμ μΈ μμλ λ€μ΄κ°μΌλ©΄ νλ λ°λ¨μμ λ§λ κ²μ΄ μΆμν΄λμ€μ΄λ€.
μ΄ κ³Όμ μμ 곡ν΅μ μΈ μμλ νΉμ§μ μΆμΆνλ κ³Όμ μ΄ μΆμν μΈκ² κ°λ€.
μλ₯Ό λ€μλ©΄, λ²€μΈ ,μμ°λ,μλν,ν°μ½,λ°΄ν리 λ±λ± μ°λ¦¬κ° μκ°νλ μ¬λ¬μ’ λ₯μ μλμ°¨μ΄ μλ€. μ΄κ²μ λ€ ν΄λμ€ννκ³ λ³μμ λ©μλ λ±μ κ°λ³μ μΌλ‘ λ§λλ κ²μ 무λͺ¨ν μ§μ΄λ€. (κ±°λμ λ―Ένκ³ λ§νλ©΄ νμ₯μ±λλ¬Έμ μΆμνν νμκ° μλ€.)
λ°λΌμ λ°©κΈ λμ΄ν μλμ°¨λ€μ 곡ν΅μ μΈ μμλ νΉμ§μ μΆμΆνλ κ³Όμ μΈ μΆμνλ₯Ό κ±°μ³ μμλ₯Ό λμ§μ΄ λ΄λ©΄, λ°ν΄,λ°°κΈ°ν΅,νΈλ€,μ°¨λ¬Έ,μ 리창,λ± νμμ μΈ λΆνμ΄ μκ³ λ°ν΄λ κ΅΄λ¬κ°μΌνλ©°, νΈλ€μ μ’μ°λ‘ λμκ°μΌνκ³
μ°¨λ¬Έμ μ΄λ €μΌνλ€λ 곡ν΅μ μΈ νλ± μ¦ μ΄λ€ μ°¨λ νμμ μΌλ‘ νμν λ©μλκ° μΆμΆλλ€.
3. λ€νμ± Polymorphism
λ€νμ±μ μμμ ν΅ν΄ κΈ°λ₯μ νμ₯νκ±°λ λ³κ²½νλ κ²μ κ°λ₯νκ² ν΄μ€λ€. μ΄λ₯Ό ν΅ν΄ μ½λμ μ¬μ¬μ©, μ½λκΈΈμ΄ κ°μκ° λμ΄ μ μ§λ³΄μκ° μ©μ΄νλλ‘ λμμ£Όλ κ°λ μ΄λ€.
μ½κ² κ°μ λμμ΄μ§λ§ λ€λ₯Έκ²°κ³Όλ¬Όμ λμ¬λ μ΄λ₯Ό λ€νμ±μ΄λΌκ³ μκ°νλ©΄ λλ€.
ν¬κ² μλ°νλ‘κ·Έλλ° κ°μ²΄μ§ν₯μμ λ€νμ±μ κ°λ μ λ Ήμ¬λ΄λ λ°©λ²μ λκ°μ§μΈλ°, λ°λ‘
μ€λ²λΌμ΄λ©(Overriding) κ³Ό μ€λ²λ‘λ©(Overloading) μ΄λ€.
μ€λ²λΌμ΄λ©μ λΆλͺ¨ν΄λμ€μμ μμλ°μ μλΈν΄λμ€ μ¦ μμν΄λμ€μμ λΆλͺ¨ν΄λμ€,μ¦ μμν΄λμ€μμ λ§λ€μ΄μ§ λ©μλλ₯Ό μμ μ μ λ§λλ‘ λ€μ μ¬μ°½μ‘°ν΄μ μ¬μ©νλ κ²μ λ§νλ€.
μ€λ²λ‘λ©μ νλμ ν΄λμ€ μμμ κ°μμ΄λ¦μ λ©μλλ₯Ό μ¬μ©νμ§λ§ κ° λ©μλλ§λ€ λ€λ₯Έ μ©λλ‘ μ¬μ©λλ©° κ·Έ κ²°κ³Όλ¬Όλ λ€λ₯΄κ² ꡬνν μ μκ² λ§λλ κ°λ μΈλ° μ€λ²λ‘λ©μ΄ κ°λ₯νλ €λ©΄ λ©μλλΌλ¦¬ μ΄λ¦μ κ°μ§λ§ 맀κ°λ³μμ κ°―μλ λ°μ΄ν°νμ μ΄ λ€λ₯΄λ©΄ μ€λ²λ‘λ©μ΄ μ μ©λμ΄ λ©μλ μ΄λ¦μ΄ κ°μλ
λ¬Έλ² μλ¬κ° λμ§μλλ€..
4. μμμ±, μ¬μ¬μ© Inheritance
μμμ κ°μ²΄μ§ν₯μ κ½μ΄λΌκ³ ν μ μλ€. μμμ΄λ κΈ°μ‘΄ μμν΄λμ€μ κ·Όκ±°νμ¬ μλ‘κ² ν΄λμ€μ νμλ₯Ό μ μν μ μκ² λμμ£Όλ κ°λ μ΄λ€.
κΈ°μ‘΄ν΄λμ€μ κΈ°λ₯μ κ°μ Έμ μ¬μ¬μ©ν μμμΌλ©΄μλ λμμ μλ‘κ² λ§λ ν΄λμ€μ μλ‘μ΄ κΈ°λ₯μ μΆκ°ν μ μκ² λ§λ€μ΄ μ€λ€.
* μλ°μμ μμμ λ¨μΌμμλ°μ μ§μμ΄ μλλ€.
κ·Έλ¬λ λ€μ€μμμ΄ νμν μ μλ€κ³ μΈμ νμ¬ λλΉμ± μΌλ‘ μΈν°νμ΄μ€λ₯Ό λ€μ€μμ(ꡬν) ν μ μκ²ν΄μ μμμ μΈ λ€μ€ μμμ λν νλ‘λ λ«μ΄μ€¬λ€. κ·Έλ μ§λ§ μΈν°νμ΄μ€μ μ‘΄μ¬μ΄μ κ° λ€μ€μμμ μ§μνκΈ° μν¨μ΄λ€ λΌκ³ μκ°νλ©΄ μλλ€.
'π₯ > JAVA' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JAVA] JVM λμ μ리 λ° κΈ°λ³Έ κ°λ (0) | 2021.12.11 |
---|---|
[JAVA] μλ°κ°μλ¨Έμ , JVMμ΄λ? (0) | 2021.08.11 |
[JAVA] HashMapκ³Ό HashTableμ μ°¨μ΄μ (0) | 2021.08.04 |
[JAVA] Hashλ? (0) | 2021.08.04 |