Hoppa till innehåll

Archives

  • januari 2022
  • december 2021
  • november 2021
  • oktober 2021
  • september 2021

Categories

  • Inga kategorier
Trend RepositoryArticles and guides
Articles

De fyra pelarna i objektorienterad programmering

On september 27, 2021 by admin

I den här bloggen kommer jag att förklara de fyra pelarna i OOP och ge små exempel. Tillräckligt små exempel som du och jag lätt kan förstå.

Abstraktion är i huvudsak ”need to know”. Vi döljer de stora implementeringsdetaljerna, samtidigt som vi håller den uppenbara användningen i förgrunden. Så kom ihåg detta ”hide the details, show the relevance”.

Abstraktionsexempel….

Detta är ett anmälningsformulär i en app jag arbetar med (relevansen).

Detta är formulärets implementeringslogik för inlämning. (behovet av att veta).

Polymorfism

Polymorfism är när du använder ett kodblock, du ändrar versionen av koden som används baserat på de ingångar som ges till den. Så för att göra det lite tydligare kan olika klasser användas med samma gränssnitt men kan tillhandahålla sin egen implementering av det gränssnittet.

Polymorfism exempel…

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

Klasserna Cat, Dog och Cow ärver från klassen Animal. Detta gör att klasserna Cat, Dog och Cow kan använda djurets gränssnitt. De har dock bara speak-metoden tillgänglig för dem. Om vi skulle utelämna speak-metoden ur klasserna Cat, Dog och Cow och sedan skapa instanser av klasserna Cat, Dog och Cow skulle vi fortfarande kunna anropa speak-metoden på dessa instanser. Det enda problemet är att det skulle skriva ut Animals ”makes sound” i stället för de lämpliga ljud som en katt, hund och ko gör (”meow”, ”woof”, ”moo”).

Det är här som metodöverstyrning kommer in. Om vi omdefinierar speak-metoden i klasserna Cat, Dog och Cow kan vi anpassa den så att den skriver ut de ljud som katter och hundar ger ifrån sig.

Inkapsling

Inkapsling binder samman data och funktioner som manipulerar data, vilket gör att båda är skyddade från yttre inblandning och missbruk. Ett bra exempel på inkapsling är en klass. Vi kan faktiskt hänvisa tillbaka till exemplet ovan där vi pratar om hundar, katter och kor med några små ändringar.

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

Notera att när vi skapar instanser för varje djur så tilldelar vi också ett namn till varje. Det som är viktigt här är att ’.name’ efter varje skapad instans (t.ex. dog1.name) är olika. Dessa ’.name’ är inkapslade i sina respektive klasser. Att tilldela ett namn till en instans ändrar inte någon annan instans namnvärde.

Arv

Arv är förmodligen det enklaste att förstå. Arv är konceptet att en klass använder (ärver) gränssnittet för en annan klass. Den blir då ett barn eller en underklass medan klassen som den ärver från är föräldra- eller superklass. Vi gjorde faktiskt lite arv i vårt andra exempel ovan. Klasserna Cat, Dog och Cow ärver från klassen Animal för att få tillgång till speak-metoden. Se bara till att lägga till nyckelordet extends.

Lämna ett svar Avbryt svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *

Arkiv

  • januari 2022
  • december 2021
  • november 2021
  • oktober 2021
  • september 2021

Meta

  • Logga in
  • Flöde för inlägg
  • Flöde för kommentarer
  • 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
  • 日本語日本語

Upphovsrätt Trend Repository 2022 | Tema av ThemeinProgress | Drivs med WordPress