OOP
Last updated
Last updated
βοΈ νλ‘κ·Έλ¨μ μλ§μ κ°μ²΄ (Object)λ‘ λλκ³ ,κ·Έ κ°μ²΄λ€κ°μ μνΈμμ©μ ν΅νμ¬ λ‘μ§μ ꡬμ±νλ κ²
μ΄λΌκ³ μ μλμ΄ μλλ° μ²μ λ΄€μ λλ μ΄ν΄κ° μ μκ°μ λͺλ²μ λ€μ λ΄€λμ§ λͺ¨λ₯΄κ² λ€. μ¬μ€ λ΄κ° μ§κΈκ» 곡λΆνκ³ , μμ±νλ μ½λκ° λͺ¨λ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ΄λ€.
νμ¬ μ§νμ€μΈ λΈλ‘κ·Έ νλ‘μ νΈμ ν΄λμ΄λ€.
νλ‘κ·Έλ¨μ ꡬμ±νλ νμΌλ€μ ν¬κ² μν μ λ°λΌ ν΄λλ‘ λλμ΄ μλκ²μ νμΈ ν μ μλ€. pages ν΄λμλ κ° νμ΄μ§κ° λνλ΄μΌ ν νλͺ©λ€μ νλ‘κ·Έλλ° νλλ°, κ° νμΌλ€μ
μ΄λ κ² μ¬λ¬ ν¨μλ€λ‘ μ΄λ£¨μ΄μ Έ μκ³ , κ·Έ ν¨μμμλ λ³μ, λ©μλ λ± μ¬λ¬ κ°μ²΄λ‘ μ΄λ£¨μ΄μ Έ μλ€.
μμμ μ μλ λ§μ νλ² λ€μ 보μ. νλ‘κ·Έλ¨μ μλ§μ κ°μ²΄ (Object)λ‘ λλκ³ ,κ·Έ κ°μ²΄λ€κ°μ μνΈμμ©μ ν΅νμ¬ λ‘μ§μ ꡬμ±νλ κ²
λμΌνλ€.
λΈλ‘κ·Έλ₯Ό ꡬμ±νλ νλ‘κ·Έλ¨μ μμ²λκ² λ§μ ν¨μλ€λ‘ μ΄λ£¨μ΄μ Έ μκ³ , κ·Έ ν¨μμμλ μ¬μ©λλ λ³μλ λ©μλ κ°μ²΄λ€μ΄ μ μλμ΄ μλ‘ μνΈμμ©νλ©° νλ‘κ·Έλ¨μ λ‘μ§μ ꡬμ±νλ€.
μ½κ² λ€μ λ§νλ©΄ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ νλ‘κ·Έλ¨μ κ°μ²΄λ€μ λͺ¨μ
μΌλ‘ 보λκ²μΌλ‘ μ΄ν΄νλ€
μ μλ₯Ό λ¨Όμ 보μλ©΄
κ°μ²΄μμ 곡ν΅λ μμ±κ³Ό νμλ₯Ό μΆμΆνλ κ²
μμλ μ μλ§ λ³΄κ³ λ νλμ μ΄ν΄νκΈ°λ νλ κ² κ°λ€. κ°λ¨ν μλ₯Ό λ€μ΄ μ΄ν΄ν΄λ³΄μ
μμ°λ, λμΌ, 볼보λ λ€λ₯Έ μΈν, λ€λ₯Έ λ΄λΆ ꡬμ±μ μ§λ
μ§λ§ κ²°κ΅ κ°μ μλμ°¨
μ΄λ€. μλμ°¨κ° κ°μ§λ 곡ν΅μ μΈ νΉμ§(μ μ§, νμ§, λΈλ μ΄ν¬ λ±)μ κ°μ§ κ°κΈ° λ€λ₯Έ κ°μ²΄
λΌκ³ λ³Ό μ μλ€. μΆνμ λ€λ₯Έ μλμ°¨ λΈλλκ° μΆμ λλλΌλ μλμ°¨
λΌλ κ°μ²΄κ° κ°λ 곡ν΅μ μΈ νΉμ§μ κ°μ§κ³ μΆμ λλ€.
μμ°λ, λμΌ, 볼보 (κ°μ²΄λ€)μμ 곡ν΅λ μμ±(μλμ°¨)μ νμ(μ /νμ§, λΈλ μ΄ν¬ λ±)μ μΆμΆνλ κ². μ΄κ²μ΄ μΆμνμ΄λ€.
μΊ‘μνμ μ μ λ¨Όμ νμΈν΄λ³΄μ
κ°μ²΄μ λν ꡬ체μ μΈ μ 보λ₯Ό λ ΈμΆμν€μ§ μλλ‘ νκΈ° μν΄ λ°μ΄ν° ꡬ쑰μ λ°μ΄ν°λ₯Ό λ€λ£¨λ λ°©λ²λ€μ κ²°ν©μμΌ λ¬Άλ κ² || λΉμ·ν μν μ νλ μμ±κ³Ό λ©μλ λ€μ νλμ ν(ν΄λμ€)μ λ¬Άλ κ²
μμ§μ λμ§ μ λͺ¨λ₯΄κ² μ§λ§ 무μμΈκ°λ₯Ό λ¬Άλ κ²μΈκ±° κ°λ€. μλ°μ€ν¬λ¦½νΈμμμ κ°λ¨ν μμλ₯Ό λ€μ΄λ³΄μ
μμ μ½λλ₯Ό 보면 Scoreλ‘ μ μΈλ μμ±μ ν¨μ μμ getMathμ getEngλΌλ λ©μλλ thisλ‘ μ μΈλμ΄ κ°μ²΄μ νλ‘νΌν°λ‘ μ μ©λμ΄ μμ λ 벨μμλ μ°Έμ‘°κ° κ°λ₯νλ€. νμ§λ§ coefλΌλ λ³μλ μ κ·Όμ΄ λΆκ°λ₯νλ€.
μΊ‘μνλ₯Ό ν΅νμ¬ coefλΌλ κ°μ²΄μ μ€μν λ³μλ₯Ό μ¨κΈ°κΈ° μν΄ ScoreλΌλ νλμ κ°μ²΄λ‘ λ¬Άμλ€κ³ λ³Ό μ μλ€.(μλ°μ€ν¬λ¦½νΈμ ν΄λ‘μ μ°Έμ‘°)
μ€λλ§μ μ΅μν λ¨μ΄κ° λμμ§λ§ μμ μ μ λ¨Όμ νμΈν΄λ³΄μ
ν΄λμ€μ μμ±κ³Ό νμλ₯Ό νμ ν΄λμ€μ λ¬Όλ €μ£Όκ±°λ νμ ν΄λμ€κ° μμ ν΄λμ€μ μμ±κ³Ό νμλ₯Ό λ¬Όλ €λ°λ κ²
λ€ννλ λ΄κ° μκ³ μλ μμκ³Ό κ°μ μλ―Έλ€. μλ°μ€ν¬λ¦½νΈμμλ extends
λ₯Ό μ¬μ©νμ¬ μλ‘ μμ±λλ μμ ν΄λμ€κ° λΆλͺ¨ ν΄λμ€μ μμ±μ κ·Έλλ‘ μ΄μ΄λ°μ μ¬μ© ν μ μλ€.
νλμ λ³μλͺ , ν¨μλͺ μ΄ μν©μ λ°λΌ λ€λ₯Έ μλ―Έλ‘ λ³νν μ μλ€λ κ²
μ½κ² λ§ν΄μ, ν κ°μ²΄μ μμ±/κΈ°λ₯μ΄ λ§₯λ½μ λ°λΌ λ€λ₯Έ μν μ μν ν μ μλ€λ κ²μ΄λ€. λνμ μΈ μλ‘λ λ©μλ μ€λ²λΌμ΄λ©μ΄ μλ€.
μ€λ²λΌμ΄λ©(Overriding) : μμ ν΄λμ€μμ λΆλͺ¨ ν΄λμ€μ κΈ°λ₯μ μ¬μ μ ν λ μ¬μ©λλ κΈ°λ₯
κ°λ¨ν μ½λ μμλ₯Ό 보μ
testScoreλΌλ λΆλͺ¨ ν΄λμ€μμ μ μλ getScoreλΌλ λ©μλκ° testScoreλ₯Ό μμν μμ ν΄λμ€μμ μ¬μ μ λμλ€.
μ¦, νλμ ν¨μλͺ (getScore)κ° μμμκ² μμλμ΄ μ¬μ μλ¨μΌλ‘μ¨, λ€λ₯Έ κ°μ κ°μ§κ² λμλ€.
μμμ μ΄ν΄λ³Έ 4κ°μ§μ νΉμ§μ λ² μ΄μ€λ‘ν κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ μ₯/λ¨μ μ μ΄ν΄λ³΄μ
λ¨Όμ μΆμνλ₯Ό ν΅ν΄ κ°μ²΄ λ¨μλ‘ λͺ¨λννμ¬ νλ‘κ·Έλ¨μ μ€κ³νκΈ° λλ¬Έμ, μ 무 λΆλ΄μ΄ μ€μ΄λ€κ³ μ΄λ‘μΈν΄ λκ·λͺ¨ νλ‘κ·Έλλ°μ μ ν©νλ€.
λν, μμκ³Ό λ€νμ±μ ν΅νμ¬ μ½λ μ¬μ¬μ©μ΄ μ©μ΄νμ¬ νλ‘κ·Έλ¨μ μ μ§λ³΄μκ° νΈν΄μ§λ€.
λ§μ§λ§μΌλ‘ μΊ‘μνλ₯Ό ν΅νμ¬ κ³΅κ°λ₯Ό μμΉ μλ μ 보λ₯Ό μλν μ μκΈ° λλ¬Έμ 보μμ± μΈ‘λ©΄μμ λμ μμΉλ₯Ό λνλΈλ€.
κ°μ²΄λ€μ μνΈμμ©μΌλ‘ νλ‘κ·Έλ¨μ΄ ꡬμ±λκΈ°μ μ΄κΈ° μ€κ³μ λμ΄λκ° μ¬λΌκ°λ€. λν, νλ‘κ·Έλ¨μ λͺ¨λ κ²μ΄ κ°μ²΄μ΄κΈ° λλ¬Έμ μΆκ°μ μΈ ν¬μΈν°μ ν¬κΈ°μ λ©λͺ¨λ¦¬ μ°μ°μ λν λΉμ©μ΄ λ€μ΄κ°λ€.
λ§μ§λ§μΌλ‘ κ°μ²΄ μ§ν₯ μ€κ³μμΉ 5κ°λ₯Ό μ΄ν΄λ³΄κ³ ν¬μ€νΈλ₯Ό λ§λ¬΄λ¦¬ νκ² λ€.
λͺ¨λ ν΄λμ€λ νλμ μ± μμ κ°μ ΈμΌ νλ€. μ¦, ν΄λμ€λ κ·Έ μ± μμ μμ ν μΊ‘μν ν΄μΌ νλ€. κ°λ¨ν λ§ν΄, `νλμ ν΄λμ€λ νλμ κΈ°λ₯λ§μ μνν΄μΌ νλ€λ κ²μ΄λ€.
κΈ°μ‘΄μ μ½λλ λ³νμ§ μμΌλ©΄μ (Closed) κΈ°λ₯μ μΆκ° ν μ μλλ‘(Open) μ€κ³κ° λμ΄μΌ νλ€λ μμΉμ΄λ€.
μ€κ³λλ νλ‘κ·Έλ¨μ κ°μ²΄λ μ νμ±μ κΉ¨λ¨λ¦¬μ§ μμμ± νμ νμ μ μΈμ€ν΄μ€λ‘ μΉνλ μ μμ΄μΌ νλ€.
κ°λ¨ν λ§ν΄ μμ ν΄λμ€λ μΈμ λ μ§ λΆλͺ¨ ν΄λμ€λ₯Ό λ체 ν μ μμ΄μΌ νλ€λ λ§μ΄λ€. λΆλͺ¨ ν΄λμ€ μ리μ μμ ν΄λμ€λ₯Ό λ£μ΄λ μ΄μ μμ΄ μ μλν΄μΌ νλ€.
λ²μ©μ μΈ μΈν°νμ΄μ€ νλλ³΄λ€ ν΄λΌμ΄μΈνΈλ₯Ό μν μ¬λ¬κ°μ μΈν°νμ΄μ€κ° λ«λ€λ μμΉμ΄λ€. ν΄λΌμ΄μΈνΈκ° νμλ‘ νλ μΈν°νμ΄μ€λ₯Ό λΆλ¦¬νμ¬ κ°κ°μ ν΄λΌμ΄μΈνΈκ° μ¬μ©νμ§ μλ μΈν°νμ΄μ€μ λ³κ²½μ΄ μμ΄λ μν₯μ λ°μ§ μλλ‘ λ§λ€μ΄μΌ νλ€
μμ‘΄ κ΄κ³λ₯Ό λ§Ίμλ, λ³νκ° μ¬μ΄ κ²λ³΄λ€ λ³ννκΈ° μ΄λ €μ΄κ²μ μμ‘΄νλΌλ μμΉ μ¦, ꡬ체μ μΈ ν΄λμ€λ³΄λ€, μΆμνλ μΈν°νμ΄μ€μ μμ‘΄νλΌλ κ²