オブジェクト指向プログラミングの4つの柱
On 9月 27, 2021 by adminこのブログでは、オブジェクト指向の4つの柱を説明し、小さな例を紹介します。
抽象化とは、本質的に「知る必要がある」ことです。 主要な実装の詳細を隠す一方で、明白な使用法を前面に押し出すのです。
抽象化の例…
これは、私が取り組んでいるアプリのサインアップフォームです (関連性).
これはフォームの送信実装論理です。 (知る必要性).
Polymorphism
ポリモーフィズムとは、コードの 1 ブロックを使用するときに、それに与えられる入力に基づいて使用するコードのバージョンを変更することです。
ポリモーフィズムの例…
class Animal { speak = () => console.log('makes sound')}class Dog extends Animal { speak = () => console.log('woof')}class Cat extends Animal { speak = () => console.log('meowww')}class Cow extends Animal { speak = () => console.log('moooooo')}let dog1 = new Dog()let cat1 = new Cat()let cow1 = new Cow()dog1.speak() // => woofcat1.speak() // => meowwwcow1.speak() // => moooooo
Cat, Dog, Cow クラスは Animal クラスから継承されています。 これにより、Cat、Dog、CowクラスはAnimalのインターフェイスを使用することができます。 しかし、それらはspeakメソッドしか利用できません。 もし、Cat, Dog, Cowクラスからspeakメソッドを外して、Cat, Dog, Cowクラスのインスタンスを作成しても、それらのインスタンスに対してspeakメソッドを呼び出すことは可能です。 唯一の問題は、Cat、Dog、Cowが発する適切な音(’meow’、’woof’、’moo’)ではなく、Animals ‘makes sound’を出力してしまうことです。
ここで、メソッドのオーバーライドが登場します。 Cat、Dog、Cow クラスの speak メソッドを再定義すると、猫や犬が発する音を出力するようにカスタマイズできます。
Encapsulation
カプセル化は、データとデータを操作する関数を結合し、外部の干渉や誤用から両方を安全に保つものです。 カプセル化の良い例はクラスです。
class Dog { constructor(name) { this.name = name } printName = () => console.log(this.name)}class Cat { constructor(name) { this.name = name } printName = () => console.log(this.name)}class Cow { constructor(name) { this.name = name } printName = () => console.log(this.name)}let dog1 = new Dog()dog1.name = "Max"dog1.printName() // => Maxlet cat1 = new Cat()cat1.name = "Mark"cat1.printName() // => Marklet cow1 = new Cow()cow1.name = "Tom"cow1.printName() // => Tom
Notice when we create instances for each animal, also assign a name to each.This can refer back the example where we talk about Dogs, Cats, and Cows with some slight modification.「Dogs、Cats、Competitive」[1] を参照して、上記の例では、いくつかの小さな変更で、「犬、牛」について話しています。 ここで重要なのは、作成された各インスタンスの後の「.name」(たとえば dog1.name) はすべて異なるということです。 これらの’.name’はそれぞれのクラスの中にカプセル化されています。
Inheritance
Inheritance は、おそらく最も簡単に理解できるものでしょう。 継承とは、あるクラスが他のクラスのインターフェイスを使用する(継承する)概念です。 そのクラスは子クラスまたはサブクラスになり、継承するクラスは親クラスまたはスーパークラスとなります。 上の2番目の例では、実際にいくつかの継承を行いました。 Cat、Dog、Cowの3つのクラスはAnimalクラスを継承してspeakメソッドを使えるようにしています。 extends キーワードを追加してください。
コメントを残す