Skip to content

Archives

  • Leden 2022
  • Prosinec 2021
  • Listopad 2021
  • Říjen 2021
  • Září 2021

Categories

  • Žádné rubriky
Trend RepositoryArticles and guides
Articles

Čtyři pilíře objektově orientovaného programování

On 27 září, 2021 by admin

V tomto blogu vysvětlím 4 pilíře OOP a uvedu malé příklady. Dostatečně malé příklady, které vy i já snadno pochopíme.

Abstrakce je v podstatě „potřeba vědět“. Skrýváme hlavní implementační detaily, zatímco zřejmé použití ponecháváme v popředí. Takže si pamatujte toto „skrýt detaily, ukázat význam“.

Příklad abstrakce…

Toto je registrační formulář aplikace, na které pracuji (význam).

Toto je implementační logika odeslání formuláře. (potřebnost).

Polymorfismus

Polymorfismus je, když používáte jeden blok kódu, měníte verzi použitého kódu na základě vstupů, které mu dáváte. Takže aby to bylo trochu jasnější, různé třídy mohou používat stejné rozhraní, ale mohou poskytovat vlastní implementaci tohoto rozhraní.

Příklad polymorfismu…

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
Vstup do celoobrazovkového režimu Ukončení celoobrazovkového režimu

Třídy Kočka, Pes a Kráva dědí od třídy Zvíře. Díky tomu mohou třídy Kočka, Pes a Kráva používat rozhraní třídy Zvíře. Mají však k dispozici pouze metodu speak. Pokud bychom vynechali metodu speak ze třídy Cat, Dog a Cow a poté vytvořili instance třídy Cat, Dog a Cow, stále bychom mohli volat metodu speak na těchto instancích. Jediným problémem je, že by se místo příslušných zvuků, které vydávají Kočka, Pes a Kráva („mňau“, „haf“, „mňau“), vypsalo Animals „makes sound“.

Tady přichází na řadu přepisování metod. Pokud předefinujeme metodu speak ve třídách Cat, Dog a Cow, můžeme ji přizpůsobit tak, aby vypisovala zvuky, které vydávají kočky a psi.

Zapouzdření

Zapouzdření svazuje dohromady data a funkce, které s daty manipulují, a to obojí chrání před vnějšími zásahy a zneužitím. Dobrým příkladem zapouzdření je třída. Můžeme se vlastně vrátit k výše uvedenému příkladu, kde hovoříme o Psech, Kočkách a Krávách s drobnými úpravami.

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
Vstup do celoobrazovkového režimu Ukončení celoobrazovkového režimu

Všimněte si, že když vytváříme instance pro jednotlivá zvířata, přiřazujeme jim také jména. Z toho plyne, že ‚.name‘ za každou vytvořenou instancí (tj. dog1.name) je u všech jiné. Tato ‚.name‘ jsou zapouzdřena v rámci příslušných tříd. Přiřazení jména instanci nemění hodnotu jména žádné jiné instance.

Dědičnost

Dědičnost je asi nejjednodušší na pochopení. Dědičnost je koncept jedné třídy, která používá(dědí) rozhraní jiné třídy. Stává se pak potomkem nebo podtřídou, zatímco třída, od které dědí, je rodičem nebo nadtřídou. V našem druhém příkladu výše jsme skutečně nějaké dědění provedli. Třídy Kočka, Pes a Kráva dědí od třídy Zvíře, aby měly přístup k metodě speak. Jen se ujistěte, že jste přidali klíčové slovo extends.

Napsat komentář Zrušit odpověď na komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Archivy

  • Leden 2022
  • Prosinec 2021
  • Listopad 2021
  • Říjen 2021
  • Září 2021

Základní informace

  • Přihlásit se
  • Zdroj kanálů (příspěvky)
  • Kanál komentářů
  • Česká lokalizace
  • 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