コンテンツにスキップ

オブジェクト指向プログラミング (Object Oriented Programming)

構造化プログラミングのあとに、構造化プログラミングを発展させたオブジェクト指向プログラミングが編み出された。

オブジェクト指向プログラミングには以下の三大要素がある。

  • カプセル化 (Encapsulation)
  • ポリモーフィズム (Polymorphism) / 多態性 / 多相性
  • 継承 (Inheritance)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
interface Person {
  sayHello(): void;
}

class Japanese implements Person {
  private name = "Japanese"; // カプセル化
  sayHello(): void {
    console.log(`こんにちは。私は${this.name}です。`); // ポリモーフィズム
  }
}

class English implements Person {
  private name = "English"; // カプセル化
  sayHello(): void {
    console.log(`Hi. My name is ${this.name}.`); // ポリモーフィズム
  }
}

// 継承
class JapaneseChild extends Japanese {
  sayHello(): void {
    console.log("子供です。"); // ポリモーフィズム
  }
}

const j = new Japanese();
j.sayHello(); // こんにちは。私はJapaneseです。

const e = new English();
e.sayHello(); // Hi. My name is English.

const c = new JapaneseChild();
c.sayHello(); // 子供です。

カプセル化 (Encapsulation)

オブジェクトの内部を外部から直接アクセスできないようにする。データが不正に変更されることを防ぐ。

インターフェースと実装を分ける。内部の実装が変更されてもインターフェースが変わらなければ他のコードに影響を与えない。

ポリモーフィズム (Polymorphism) / 多態性 / 多相性

異なるオブジェクトが同じメソッドで実行できる。呼び出す側は共通のインターフェースで操作を行うことができる。

継承 (Inheritance)

既存のクラスから機能を引き継ぐ。コードの再利用、拡張を行うことができる。