Skip to content

Archives

  • 2022 január
  • 2021 december
  • 2021 november
  • 2021 október
  • 2021 szeptember

Categories

  • Nincs kategória
Trend RepositoryArticles and guides
Articles

Az objektumorientált programozás négy pillére

On szeptember 27, 2021 by admin

Ebben a blogban az OOP 4 pillérét fogom elmagyarázni, és kis példákat fogok mutatni. Elég kicsi példákat ahhoz, hogy te és én is könnyen megérthessük.

Az absztrakció lényegében a “kell tudni”. Elrejtjük a főbb implementációs részleteket, miközben a nyilvánvaló használatot tartjuk előtérben. Tehát emlékezz erre: “rejtsd el a részleteket, mutasd meg a relevanciát”.

Elvonatkoztatási példa…

Ez egy regisztrációs űrlap egy alkalmazáshoz, amin dolgozom (a relevancia).

Ez az űrlap benyújtási implementációs logikája. (a szükségesség).

Polimorfizmus

A polimorfizmus az, amikor egy kódblokkot használunk, és a neki adott bemenetek alapján megváltoztatjuk a használt kód változatát. Tehát, hogy egy kicsit érthetőbbé tegyük, különböző osztályok használhatják ugyanazt az interfészt, de az interfész saját implementációját biztosíthatják.

Polymorfizmus példa…

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
Belépés teljes képernyős módba Kilépés teljes képernyős módból

A Cat, Dog és Cow osztályok az Animal osztályból örökölnek. Ez lehetővé teszi, hogy a Macska, a Kutya és a Tehén osztály használhassa az Állat interfészt. Nekik azonban csak a speak metódus áll rendelkezésükre. Ha a Macska, Kutya és Tehén osztályból kihagynánk a speak metódust, majd létrehoznánk a Macska, Kutya és Tehén osztály példányait, akkor is meg tudnánk hívni a speak metódust ezeken a példányokon. Az egyetlen probléma az lenne, hogy a Cat, Dog és Cow megfelelő hangok (‘meow’, ‘woof’, ‘moo’, ‘moo’) helyett az Animals ‘makes sound’ hangot írná ki.

Itt jön a képbe a metódus felülbírálása. Ha a Macska, Kutya és Tehén osztályokban újra definiáljuk a speak metódust, akkor testre szabhatjuk, hogy kiírja a macskák és kutyák által kiadott hangokat.

Kapszulázás

A kapszulázás összeköti az adatokat és az adatokat manipuláló függvényeket, és ez mindkettőt biztonságban tartja a külső beavatkozástól és a visszaélésektől. A kapszulázásra jó példa egy osztály. Tulajdonképpen visszautalhatunk a fenti példára, ahol a kutyákról, macskákról és tehenekről beszélünk, némi módosítással.

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
Belépés a teljes képernyős módba Kilépés a teljes képernyős módból

Megjegyezzük, hogy amikor minden állathoz példányokat hozunk létre, mindegyikhez nevet is rendelünk. A lényeg itt az, hogy a ‘.name’ az egyes létrehozott példányok után (pl. dog1.name) mind különbözőek. Ezek a ‘.name’ a megfelelő osztályokba vannak zárva. A név hozzárendelése egy példányhoz nem módosítja a többi példány névértékét.

Öröklődés

Az öröklődés talán a legkönnyebben felfogható. Az öröklés az a koncepció, hogy egy osztály egy másik osztály interfészét használja(örökli). Ekkor gyermek vagy alosztály lesz, míg az osztály, amelytől örököl, a szülő vagy szuperosztály. A fenti második példánkban valóban végeztünk némi öröklést. A Macska, a Kutya és a Tehén osztály az Állat osztálytól örököl, hogy hozzáférjen a speak metódushoz. Csak győződjünk meg róla, hogy hozzáadjuk az extends kulcsszót.

Vélemény, hozzászólás? Kilépés a válaszból

Az e-mail-címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

Archívum

  • 2022 január
  • 2021 december
  • 2021 november
  • 2021 október
  • 2021 szeptember

Meta

  • Bejelentkezés
  • Bejegyzések hírcsatorna
  • Hozzászólások hírcsatorna
  • WordPress Magyarország
  • 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