νλ‘ν νμ (prototype)μ΄λ, 무μΈκ° μ νμ λ§λλ κ³Όμ μμ μνμ©μΌλ‘ 미리 λ§λ€μ΄λ³΄λ 물건μ μλ―Ένλ€. μ μ ν νκ΅μ΄ ννμ γμμ νγ(試製ε), ‘μνκΈ°’, ‘μ΄κΈ°ν’, ‘μμν’μ΄λ€.
μμ νμ΄λΌκ³ νλ©΄ λκ° μλμ κ²½μ° μ€ νλ λλ 2κ° νλͺ© μ΄μμ ν΄λΉλλ μ νμ κ°λ₯΄ν¨λ€.
- μ€λ¦¬μ§λ, λλ κΈ°λ°μ΄ λ λͺ¨λΈ.
- λνμ μΌλ‘ μ μν μ μλ μκ° λλ λͺ¨λΈ.
- μ’ λ₯μ κΈ°μ΄κ° λλ λͺ¨λΈ.
- μμ μ μλ λͺ¨λΈ.
-wiki
c++κ³Ό κ°μ μΈμ΄λ ν΄λμ€λ₯Ό κΈ°λ°μΌλ‘ κ°μ²΄λ₯Ό λ§λλλ€.
κ·Έλ λ€λ©΄ ν΄λμ€λ 무μμΌκΉμ?
κ°μ²΄ μ§ν₯κΈ°λ° μΈμ΄ μ± λ€μ 보면 “λΆμ΄λΉ΅νκ³Ό λΆμ΄λΉ΅” μ΄λ°μμΌλ‘ ν΄λμ€λ νμ μΈμ€ν΄μ€λ κ·Έ νμμ λ§λ€μ΄μ§ 물건μΌλ‘ λΉλμ΄ νννλ κ²½μ°κ° λ§μ΅λλ€.
μλ°μ€ν¬λ¦½νΈλ μ νλ‘ν νμ μ μ ννμκΉ
μλ°μ€ν¬λ¦½νΈλ μ νλ‘ν νμ μ μ ννμκΉ
νλ‘ν νμ μΌλ‘ κ²μνλ©΄ μΌλ λμ€λ μλμ²λΌ μ λν μλ°μ€ν¬λ¦½νΈλ₯Ό μ²μ μ νμ λ κ°μ₯ λΉν©μ€λ¬μ λ κ² νλ‘ν νμ μ΄μμ΅λλ€.
medium.com
μμ κΈμ λ³΄κ³ λλ©΄ μ°λ¦¬κ° κΈ°μ‘΄μ λ°°μ λ κ°λ λ€μ λ λ¨λ¨νκ³ μ ννκ² μ μ μλλ°, νλ² νμ΄μ μ€λͺ ν΄ λ³΄κ² μ΅λλ€.
νλΌν€κ³Ό μ΄λ°μ
κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ μ€μΈκ³μ μ€μ²΄λ₯Ό μΈμνλ μ² νμ μ¬κ³ λ₯Ό νλ‘κ·Έλλ°μ μ λͺ©νλ €λ μλμμ λΆν° μμν©λλ€.
- μλ₯Ό λ€μ΄ μ¬λμ μ΄λ¦, μ£Όμ, μ±λ³ λ± λ€μν μμ±μ κ°λλ° μ΄λ μμ± κ΅¬μ²΄μ μΌλ‘ νννλ©΄ νΉμ ν μ¬λκ³Όμ ꡬλ³μ μΈμν μ μμ΅λλ€.
- κ°μ²΄ μ§ν₯μ 곡λΆνλ€λ³΄λ©΄ μ΄λ° λ§μ λ§μ΄ λ€μ΄ λ³΄μ ¨μ κ²λλ€. “곡ν΅λλ μμλ€μ λ¬Άμ΄ μΆμνν΄λΌ” 곡ν΅λ μμλ€μ λ¬ΆμΌλ©΄ μ€λ³΅λλ μ½λλ₯Ό μ€μΌ μ μκ³ λ³΄κΈ°μλ μ’μ κ²λλ€.
μμμ² νμ μ΄λΆλ²μ μΈκ³κ΄μ κ°κ³ μμ΅λλ€.
- μνΌ / μ‘체
- μΆμμ / ꡬ체μ
- μ΄λ°μ / νλν°μ€
λμμ μ€μ λ‘, ꡬ체μ μΌλ‘ μ‘΄μ¬νλ μ¬λ¬Όμ΄ μλ€λ©΄ λ°λμ κ·Έκ²μ λ³Έμ§μ΄ μ‘΄μ¬νλ€λ κ²μ΄ νλΌν€μ μ£Όμ₯μ λλ€.
μμλ₯Ό μλ₯Ό λ€μ΄λ³΄λ©΄ λ€μν μμλ€μ λͺ¨μ΅λ€μ΄ 머리λ₯Ό μ€μ³μ§λκ° κ²λλ€. λ°ν΄κ° λ¬λ¦°μμ, μλͺ©μμ, κ²μ΄λ° μ²΄μ΄ λ±λ± λ§μ΄μ£ .
μ΄λ¬ν μλ§μ μμκ° μ€μ λ‘ μ‘΄μ¬νλ€λ©΄ λ°λμ κ·Έ λ³Έμ§μ μ΄κ³ μΆμμ μΈ ‘μμ’λΌλ κ²μ΄ μ‘΄μ¬νλ€λ κ²μ΄μ§μ. μ΄λ¬ν λ³Έμ§ μΈκ³λ₯Ό μ΄λ°μ(Idea) λΌκ³ ν©λλ€.
(λ§μ΄ μ°Έ μ΄λ ΅μ£ ?. μ½κ² μ°λ¦¬κ° μ΄λ€ 물체λ₯Ό μκ°νμ λ λ μ€λ₯΄λ 무μμΈκ°λ μΆμμ μΌλ‘ μ‘΄μ¬νλ κ² μ΄λΌκ³ μκ°νμλ©΄ λ κ² κ°μ΅λλ€.)
μ΄λ¬ν μ¬κ³ λ°©μμ΄ νλ‘κ·Έλλ° μΈμ΄μλ μμ°μ€λ½κ² λ Ήμλ€μ΄ μκΈ΄ μΈμ΄κ° “ν΄λμ€ κΈ°λ° κ°μ²΄μ§ν₯ νλ‘κ·Έλλ° μΈμ΄”μ λλ€.
λΆλ₯(Classification)
μ΄λ¬ν νλΌν€μ μ΄λ°μ μ΄λ‘ μ κ·Έμ μ μ μ리μ€ν ν λ μ€μ μν΄μ ‘λΆλ₯(classification)'λ κ°λ μΌλ‘ μ 립λ©λλ€. class λΌλ ν€μλκ° μ΄λμ λμ¨ μ§ μ μ μκ² μ£ ?
(μ΄ λλͺ©μμ μ λ μ λ§ κ°λ?! λ°μμ΅λλ€. μ΄λ κ² ν΄λμ€λΌλ κ²μ΄ μκΈ΄ κ²μ΄κ΅¬λ νꡬμ!)
- μκΉ μ²μ μμλ₯Ό μΆμν μμλ₯Ό λλ Έλ “μ¬λ”κ°μ²΄μμ “μ¬λ”μ΄λΌλ ν€μλλ‘ “μ¬λ”κ°μ²΄μ μμλ€μ μ νμ¬ λΆλ₯ ν κ²μ΄μ£ . μ΄ν΄κ° λμλμ?
κ·Έλμ νλ‘ν νμ μ λλ°?
μμ κΈμμλ κ²μκ³Ό λ³ΈμΈμ΄ μΌμ ν λ λλΌμ ¨λ κ²μ μμλ‘ λμ ¨λλ°, μ λ 곡κ°μ΄ μ μλΌμ….
μ μΉλ‘ μλ₯Ό λ€μ΄ λ³΄κ² μ΅λλ€.
“μ°ν” “μ’ν”λΌλ λ§ λ€μ΄ λ³΄μ ¨μ£ ???? μ°λ¦¬λ μΌμͺ½ μ€λ₯Έμͺ½ μ΄λΆλ²μ μΈ κ΄μ μΌλ‘ μ μΉμ 견ν΄λ₯Ό νννκ³€ ν©λλ€. κ·Έλ°λ° κ·Έ μ€κ°μ μμλ μ¬λμ μμ κΉμ????. λΉμ°ν μκ² μ£ ?
μ΄κ² classificationμ μ½μ μ λλ€. μΈμμ κ²°μ½ 2κ°μ§λ‘ λλ μ§ μ μκΈ° λλ¬Έμ΄μ£ .
μ΄μ²λΌ 2κ°μ§λ‘ λλ μ μμ κ²½μ°λ μ΄λ»κ² ν΄μΌ ν κΉμ??? μ΄λ λ±μ₯ν κ²μ΄ μ§κΈλΆν° μ€λͺ ν νλ‘ν νμ (prototype) μ λλ€.
1975λ μ Rosch λ ν κ°μ§ μ€νμ ν©λλ€.
- μ€ν μ°Έκ°μλ€μκ² μ¬λ¬ λ²μ£Ό ꡬμ±μ(μ¬κ³Ό, μ½μ½λ, μ€λ μ§)μ μμ±μ μ μ΄λ³΄λΌκ³ ν¨
- κ° λ²μ£Ό ꡬμ±μμ λν΄ λ²μ£Όμ λ€λ₯Έ ꡬμ±μκ³Ό 곡μ νλ μμ±μ κ°μλ₯Ό λμΆν¨
- μ¬κ³Ό, μ€λ μ§ : 2μ (λ₯κΈλ€. μ¦μ΄ μλ€.)
- μ½μ½λ : 1μ (λ₯κΈλ€)
μ μκ° λμμλ‘ μ ν΅μ μΈ λΆλ₯μμ λͺ¨λ κ³ΌμΌλ‘ λ³Ό μ μμ§λ§, νλ‘ν νμ μ΄λ‘ μμλ μ¬κ³Όμ μ€λ μ§κ° κ°μ₯ μ νμ μΈ λ¬΄μΈκ°λΌκ³ λ³Ό μ μμ΅λλ€. λ°λ©΄μ μ½μ½λμ μ μ€μμ κ°μ₯ λΉμ νμ μΈ κ²μΌλ‘ λ³Ό μ μμ΅λλ€.
μ΄ μ€νμ ν΅ν΄ λ‘μ¬λ “μΈκ°μ ‘λ±κΈμ΄ λ§€κ²¨μ§ (κ°λ ) ꡬ쑰(graded structure)’λ₯Ό κ°μ§λ€”λΌκ³ μ£Όμ₯ν©λλ€.
μΈκ°μ μ¬λ¬Όμ λΆλ₯ν λ μμ°μ€λ½κ² κ°μ₯ μ μ¬μ± λμ κ² μμλλ‘ λ±κΈμ λ§€κΈ΄λ€λ μλ―Έλ‘ λ³Ό μ μμ΅λλ€.
μ΄λ κ² λΆλ₯νμ λ κ°μ₯ λμ λ±κΈμ κ°μ§ λ μμ΄ λμ¬ ν λ°μ, μ΄κ²μ΄ λ°λ‘ μν(Prototype)μ΄λ€. λ μ£Όμ₯μ΄ νλ‘ν νμ μ΄λ‘ μ λλ€.
맨μμμ “μμ νμ΄λΌκ³ νλ©΄ λκ° μλμ κ²½μ° μ€ νλ λλ 2κ° νλͺ© μ΄μμ ν΄λΉλλ μ νμ κ°λ₯΄ν¨λ€.” λΌκ³ νλ‘ν νμ μ μ μλ₯Ό μ μ νμ΅λλ€.
- μ€λ¦¬μ§λ, λλ κΈ°λ°μ΄ λ λͺ¨λΈ.
- λνμ μΌλ‘ μ μν μ μλ μκ° λλ λͺ¨λΈ.
- μ’ λ₯μ κΈ°μ΄κ° λλ λͺ¨λΈ.
- μμ μ μλ λͺ¨λΈ.
μ΄μ λ¬΄μ¨ λ§μ ν μ§ μμμ΄ λμμ£ ??
κΈ°μ‘΄μ λ κ±°μ λΆλ₯λ μ½μ μ΄ λ§μ΅λλ€.
μ¬λμ΄ κ·Έμ λΉμ·νλ€κ³ μκ°ν κ²λ€μ λ¬Άμ΄ μΆμν νκ²μΈλ°, μ΄κ²μ΄ μ νν λ€μ΄ λ§λ κ²λ μ°ΎκΈ° νλ€κ³ μ¬λλ§λ€ λλΌλμ μ΄ λ€λ₯΄κΈ°μ μ λ§€ν κ²λ€μ΄ λ무 λ§κΈ° λλ¬Έμ΄μ£ .
κ·Έλ κΈ° λλ¬Έμ μ΄λ€ μν(prototype)μ κΈ°μ€μΌλ‘ μΌλ§λ μνκ³Ό κ°κΉμ΄μ§ νΉμ λ¨Όμ§λ₯Ό μμΉλ‘ λνλ΄λ κ²μ΄ μμΌλ‘ μ€λͺ ν νλ‘ν νμ μ λλ€.
νλ‘ν νμ κΈ°λ° κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°
μμκ° μ’μμ λ€ λ€κ³ μμ΅λλ€.
function μ°Έμ(){
this.λ κ°κ°―μ = 2;
this.λ μμλ = true;
}
const μ°Έμ1 = new μ°Έμ();
console.log("μ°Έμμ λ κ° κ°―μ : ", μ°Έμ1.λ κ°κ°―μ); // 2
function λ(){
this.λ²Όμ¬ = true;
}
λ.prototype = μ°Έμ1; // reference(μ€λ₯Έμͺ½μ΄ μΈμ€ν΄μ€μΈ μ μ£Όλͺ©)
const λ1 = new λ();
console.log("λ1 λ κ° : ", λ1.λ κ°κ°―μ, ", λ μμλ? ", λ1.λ μμλ); // 2, true
λ1.λ μμλ = false;
console.log("λ€μ λ¬Όμ΄λ³Έλ€. λ1μ λ μ μλ? :", λ1.λ μμλ); // false
// μλλ κ³ μ μ μΈ λ°©μμ νλ‘ν νμ
μ°κ²°
function νκ·(){
μ°Έμ.call(this); // copy properties
}
νκ·.prototype = Object.create(μ°Έμ.prototype); // νλ‘ν νμ
μ°κ²°
const νκ·1 = new νκ·();
console.log("νκ·1 λ κ° : ", νκ·1.λ κ°κ°―μ, ", λ μμλ? ", νκ·1.λ μμλ); // 2, true
νκ·1.λ μμλ = false;
console.log("λ€μ λ¬Όμ΄λ³Έλ€. νκ·1μ λ μ μλ? :", νκ·1.λ μμλ); // false
μ μ½λλ μλμ²λΌ λμνν μ μμ΅λλ€.
- λ1 μ μν(νλ‘ν νμ )μ μ°Έμ1μ΄λ€
- λ1μ μλ μμ±(λ κ°κ°―μ)μ νλ‘ν νμ 체μΈμ ν΅ν΄ μ°Έμ‘°λλ€
- λ1μ λμΌν μμ±λͺ (λ μμλ)μ μΆκ°ν΄λ μνμ λ³νμ§ μλλ€(μμ)> μ리μ μΌλ‘λ λ1μ ν΅ν΄ μν(prototype)μ λ³κ²½νλ건 λΆκ°λ₯ν΄μΌ νλ€. νμ§λ§ JS μμ λ¬Έλ²μ μΌλ‘ κ°λ₯. (κΆμ₯νμ§ μμ)
ν΄λμ€λ‘ μμ μ½λλ₯Ό μ§€ μλ μκ² μ§λ§, μ°ΈμλΌλ μν(νλ‘ν νμ )μ λλ©΄ μ‘°κΈ λ μ§κ΄μ μΌλ‘ μ¬λμ΄ μΈμν μ μκ³ , λκ³Ό νκ·κ³Ό νλ‘ν νμ μΈ μ°Έμμ μ°¨μ΄κ° μ‘°κΈ λ μ§κ΄μ μΌλ‘ λ€μ΄μ΅λλ€.
λ€μμ νλ‘ν νμ μ μ¬μ©νκ³ μ‘°κΈ λ λ―Έμμ μΈ κ΄μ (μ½λμ , js λ΄λΆ)κ³Ό μ¬μ©λ²μ λν΄ μμ λ³΄κ² μ΅λλ€!.
'κ°λ° μλλΈλ‘' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
promise (0) | 2023.05.21 |
---|---|
λΈλΌμ°μ λ λλ§ (1) | 2023.05.13 |
this (1) | 2023.04.23 |
ν΄λ‘μ (closure) (0) | 2023.04.20 |
μ€ν 컨ν μ€νΈ (0) | 2023.04.08 |