JavaScriptオブジェクト向け


オブジェクト向けプログラミング


JavaScriptの基本概念:オブジェクト向けをまとめました.
✔要了解的部分
-クラスとオブジェクト/作成方法
- Instance
-オブジェクト向けプロパティ(パッケージ、継承、多形、抽象)
🔷 クラスとオブジェクトの違い
クラスオブジェクトonly template、テンプレートロールonly of a classは、新しいインスタンスの作成を一度に宣言して複数のtimesno dataindata inを作成し、実際にデータを作成するのはオブジェクトです.
例:
インスタンス化時に呼び出されるメソッド.
コンピュータのストレージスペースに割り当てられたエンティティ
// 1-1 클레스 선언 
class Person {
 // constructor
 constructor(name, age) {
     // fields
     this.name = name;
     this.age = age;
 }
 // methods
 speak() {
     console.log(`${this.name}: hello!`);
 }
}

// 1-2 오브젝트 생성

const bonnie = new Person('bonnie',3);
console.log(bonnie.name); // bonnie
console.log(bonnie.age); // 3
bonnie.speak(); //bonnie: hello!
🔷 オブジェクト向けのプロパティの理解
「パッケージング」(Encapsulation):オブジェクトの特定の部分を非表示にすることで使用を制限するテクノロジー

  • 再使用性の向上
    同じオブジェクトを作成し続ける必要がないため、スクリプトの再利用性が向上します.

  • 可読性の向上

  • 隠匿性
    これを内部可視変数(private)と外部可視変数(public)に分け、privateについては外部で見ることはできないので、漏洩の心配はありません.
  • Getter and Setters
    class User {
    constructor(firstName, lastName, age){
      this.firstName = firstName;
      this.lastName = lastName;
      this.age = age;
    }
    
    get age() {
      returen this._age;
    }
    set age(value) {
      this._age = value < 0 ? 0 : value;
    }
    }
    const user1 = new User('Steve', 'job',-1);
    console.log(user1.age) // 0
    継承:1つ以上のクラスを特殊なバージョンのクラスとして作成するテクノロジー.
    継承は、親クラスのインスタンスを子クラスに割り当てることによって実現されます.
  • extendsキーワード:記載
  • superキーワード:継承を受け入れ、親クラスの作成者(constructor)を呼び出すと
  • に書き込まれる
    集約状態:1つのクラスまたはメソッドを複数の方法で操作できます.
    𗹺は、必要な関数のみを再定義できます.
    すなわち、overriding:サブクライアントは、親クライアントの1つに提供された方法の特定のタイプの実装を提供する.
    class Shape {
     constructor(width, height, color){
         this.width = width;
         this.height = height;
         this.color = color;
     }
     draw() {
         console.log(`drawing ${this.color} color if`)
     }
     getArea() {
         return this.width * this.height;
     }
    }
    // 상속 시 `extends`키워드 사용
    class Rectangle extends Shape{}
    class Triangle extends Shape{
     // `super`키워드를 사용해서 부모클래스의 생성자를 호출한다.
     super.draw();
     // 다형성
    // overriding
     draw() {
         console.log('🔺')
     }
    
     getArea() {
         return (this.width * this.height)/2;
     }
    }
    
    // 인스턴스 생성
    const rectangle = new Rectangle(20, 20, 'blue');
    rectangle.draw(); // drawing blue color of
    console.log(rectangle.getArea()); // 400
    const triangle = new Triangle(20, 20, 'red');
    triangle.draw(); // drawing blue color of, 🔺- 다형성 특성 반영
    console.log(triangle.getArea()); // 200 - 다형성 특성 반영
    
    抽象:各オブジェクトの共通プロファイルとメソッドを抽出する
  • 抽象資格要件
    1.設計宣言部分のみ(フィールドが空の方法).
    2.各オブジェクトには、共通のプロパティが含まれている必要があります.

    同じ属性間で区別し、classに結合します.
  • 注意:
    https://www.youtube.com/watch?v=_DLhUBWsRtw&list=PLv2d7VI9OotTVOL4QmPfvJWPJvkmv6h-2&index=6
    https://developer.mozilla.org/ko/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript
    https://webclub.tistory.com/137
    https://medium.com/@viktor.kukurba/object-oriented-programming-in-javascript-1-abstraction-c47307c469d1