OOP μμ²΄κ° μΈμμ μλ κ²μ λ³Έλ° ν΄λμ€λ₯Ό λ§λ€κ³ κ·Έκ²λ€λ‘ νλ‘κ·Έλλ°μ νκ² λ€λ κ°λ μ΄κ³
μΊ‘μνμ μΆμνλ μμ΄λμ΄ μ체λ 곡μ νμ§λ§ μ¬λ κ°λκ° λ€λ₯Έ λλμ΄λ€.
μΊ‘μνλ μΈμμ μλ κ²μ λ³Έλ° ν΄λμ€λ₯Ό λ§λ€ λ νλμ κ°μ²΄μ λν΄ κ·Έ κ°μ²΄κ° νΉμ ν λͺ©μ μ μν νμν λ³μλ λ©μλλ₯Ό νλλ‘ λ¬Άλ κ²μ μλ―Ένλ€. [λ°λΌλμ€λ κ°λ : μ 보μλ, private/public/protected, getter/setter]
μΆμνλ μΈμμ μλ κ²μ λ³Έλ° ν΄λμ€λ₯Ό λ§λ€ λ μΆμμ μΌλ‘ μκ°ν΄ ν΄λμ€ μμ μ΅μ λ€μ΄κ°μΌκ² λ€ μΆμ 곡ν΅μ μΈ μμλ νμμ μΈ μμλ€μ λ£μ΄μ λ§λλ κ²μ΄λ€. [λ°λΌ λμ€λ κ°λ : μΆμν΄λμ€, μΈν°νμ΄μ€]
μΊ‘μνλ, νλμ κ°μ²΄μ νμν λ©μλμ λ³μλ€μ νλλ‘ λ¬Άλ κ²μ΄κ³ , μ 보 μλμ μ΄μ μ κ°μ§ μ μλ€.(private νμ©)
μΆμνλ, μΈμμ μλ κ²μ λ³Έλ° ν΄λμ€λ₯Ό λ§λ€ λ μ λ§ νμν λΆλΆλ§μ νννλ€λ κ°λ
μ΄λ€. μ΄ μμ
μ λ€λ₯΄κ² λ§νλ©΄, ν΄λμ€ μΈλΆμμ μ΄λ»κ² ν΄λΉ ν΄λμ€λ₯Ό μ΄λ€ ννλ‘ μ΄μ©νκ² ν κ²μΈκ°λ₯Ό κ³ λ―Ό,μκ°,μ 리νλ μ€λ
Έλ λ¨κ³κ° ν¬ν¨λ κ°λ
μΌ μκ° μλ€..
μΆμνμ λν΄μ μλ μμλ₯Ό 보면 ν μλΏμ μ μλ€.
μ΄λκ° μ΄μ€ν μΆμν
class Animal {
play() {}
}
class Cat extends Animal { }
λμ μ
λμ μ€ μ μλ λλ¬Ό ν΄λμ€λ€μ΄ 곡ν΅μ μΌλ‘ λ°λΌμΌ νλ ν¨μ, μΈν°νμ΄μ€ Playableλ₯Ό λ§λ€μ΄μ νμ©νμ
interface Playable {
play();
}
μ΄μ μ΄ μΈν°νμ΄μ€λ₯Ό ꡬννλ ν΄λμ€λ€μ λ€ λμμ€ μ μλ ν΄λμ€
class Cat implements Playable {
play() {
console.log("μ¬λ°λ€λ₯π±")
}
}
class Dog implements Playable {
play() {
console.log("μ¬λ°λ€λ©πΆ")
}
}
class Tiger {
}
Tigerμλ Playable μΈν°νμ΄μ€λ₯Ό ꡬννμ§ μλλ‘ νμ, μλ°λ¨Ήνλ€.(μ? java? )
μ΄λ°μμΌλ‘ μΈλΆμμ μ΄λ»κ² μ΄ ν΄λμ€λ₯Ό μ¬μ©ν μ μλμ§,
μΈν°νμ΄μ€λ λ€λ₯Έ λΆλͺ¨ ν΄λμ€λ₯Ό ν΅ν΄ 곡ν΅μ μΈ κΈ°λ₯λ€μ μΆμΆν΄μ μ μ©ν΄λ³΄λ μμ λ€λ μΆμν μμ μ μ°μ₯μ μμ μλ€κ³ λ³Ό μ μλ κ²μ΄λ€.
μΈν°νμ΄μ€μ μΆμν΄λμ€
μλ₯Ό λ€κ² λ€.
μλμ°¨λ€μ 곡ν΅μ μΈ μμλ νΉμ§μ μΆμΆνλ κ³Όμ μΈ μΆμνλ₯Ό κ±°μ³ μλμ°¨λΌλ μΆμν΄λμ€λ₯Ό λ§λ λ€κ³ μΉμ.
μΌλ¨ move(), stop(), private seat:number; λ±λ§ λ£μ.
μ΄λ κ² κ³΅ν΅μ μΈ νλ μ¦ μ΄λ€ μ°¨λ νμμ μΌλ‘ νμν λ©μλλ λ³μλ€μ΄ λ€μ΄κ°κ² λλ€.
μ΄λ¬ν κ³Όμ μ΄ μΆμννλ κ³Όμ μ΄λ€.
κ·Έλ°λ° λͺ¨λ μλμ°¨λ€μ΄ μ λΆ μ€νμΉ΄λ μλλ€.
κ·Έλ¬λ―λ‘ open() μλμ°¨ μΆμν΄λμ€μ open()μ λ£λ κ²μ μ΄μ€ν μ€κ³μ΄λ€.
μ΄λ κ² λ νΉν νμλ©μλμ΄μ§λ§ μ’ μ’ νμν λ©μλλ€μ μΈν°νμ΄μ€μ λ£μ΄μ£Όλ©΄
interface Openable{
open();
}
ν΄νΌν΄μ‘λ€.
μ΄λ λ― ν΄λμ€κ° κ° κ°μ²΄μ μμ ν μ€κ³λλΌκΈ° 보λ€λ, κ°μ²΄λ€μ΄ μ΄λ€ νΉμ§λ€μ΄ μμμ§λ₯Ό κ³°κ³°ν μκ°ν΄λ³΄λ©΄μ, μ΄λ€ νΉμ§λ€μ μΆμν΄λμ€μ, μ΄λ€ νΉμ§λ€μ μΈν°νμ΄μ€μ μ λΆλ°°ν΄μ μ μλ₯Ό ν΄λ³΄λ μΌλ ¨μ κ³Όμ μ΄ μ λΆ μΆμνλΌκ³ ν μ μλ€.
<μ¬μ΄ λ§λ‘ μ 리>
μΆμνμ νμ§μ΄ κΉμν΄μ§μλ‘ π μΈλΆμμ ν΄λμ€λ₯Ό κ°νΈνκ² μ μ°κΈ° μν΄μ 곡ν΅μ μ μ μ ν λͺ¨μλ μΈν°νμ΄μ€ νΉμ ν΅μ¬ λ³Έμ§μ 곡μ νλ λΆλͺ¨ν΄λμ€κ° μμλμ΄ νλ‘κ·Έλλ¨Έκ° λ³΄λ€ ν볡νκ² μμ ν μ μκ² λλ€
μΊ‘μνλ₯Ό μνλ κ³Όμ μ€μμ private/public λ±μ μ λΆλ°°νλ©΄ π μΈλΆμμ νμν λΆλΆμλ§ μ κ·Όν μ μκ² ν΅μ νμ¬ νλ‘κ·Έλλ¨Έμ μ λ¨Ό λ¦¬λ© μκ°μ μ€μ΄κ³ λ°μ΄ν°λ λ°μ΄ν°λλ‘ λ³΄νΈλ°κ² λλ κ²μ΄λ€.
'TypeScript > νμ μ€ν¬λ¦½νΈ TypeScript' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
TSλ‘ μ½λ°± ν¨μ, μ€μ²© ν¨μ, κ³ μ°¨ ν¨μ ꡬν (0) | 2022.04.20 |
---|---|
[νμ μ€ν¬λ¦½νΈ] μΆμνλ₯Ό μ΄μ©ν΄μ ν΄λμ€ κ°μ νκΈ° (0) | 2022.04.20 |
[νμ μ€ν¬λ¦½νΈ] λ¬Έλ§₯μ νμ ν (0) | 2022.04.20 |
[νμ μ€ν¬λ¦½νΈ] νΈμΆ μκ·Έλμ² (0) | 2022.04.20 |
[νμ μ€ν¬λ¦½νΈ] μ λλ μ΄ν°, λ°λ³΅μ(iterator) μΆλ‘ κ³Ό λͺ μ (0) | 2022.04.20 |