Skip to content

Archives

  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年10月
  • 2021年9月

Categories

  • カテゴリーなし
Trend RepositoryArticles and guides
Articles

オブジェクト指向プログラミングの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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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 キーワードを追加してください。

コメントを残す コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

アーカイブ

  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年10月
  • 2021年9月

メタ情報

  • ログイン
  • 投稿フィード
  • コメントフィード
  • WordPress.org
  • DeutschDeutsch
  • NederlandsNederlands
  • SvenskaSvenska
  • DanskDansk
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • RomânăRomână
  • PolskiPolski
  • ČeštinaČeština
  • MagyarMagyar
  • SuomiSuomi
  • 日本語日本語

Copyright Trend Repository 2022 | Theme by ThemeinProgress | Proudly powered by WordPress