Skip to content

Archives

  • ianuarie 2022
  • decembrie 2021
  • noiembrie 2021
  • octombrie 2021
  • septembrie 2021

Categories

  • Nicio categorie
Trend RepositoryArticles and guides
Articles

Cei patru piloni ai programării orientate pe obiecte

On septembrie 27, 2021 by admin

În acest blog voi explica cei 4 piloni ai programării orientate pe obiecte și voi oferi mici exemple. Exemple suficient de mici pentru ca tu și eu să le putem înțelege cu ușurință.

Abstracția este în esență „nevoia de a ști”. Ascundem detaliile majore de implementare, păstrând în același timp utilizarea evidentă în prim plan. Așa că țineți minte acest „ascundeți detaliile, arătați relevanța”.

Exemplu de abstractizare…

Acesta este un formular de înscriere al unei aplicații la care lucrez (relevanța).

Aceasta este logica de implementare a depunerii formularului. (necesitatea de a ști).

Polimorfism

Polimorfismul este atunci când folosești un bloc de cod, schimbi versiunea codului folosit în funcție de intrările care i se dau. Deci, pentru a fi un pic mai clar, clase diferite pot fi folosite cu aceeași interfață, dar pot furniza propria implementare a acelei interfețe.

Exemplu de polimorfism…

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
Intră în modul ecran complet Iese din modul ecran complet

Clasele Pisică, Câine și Vacă moștenesc din clasa Animal. Acest lucru permite clasei Pisică, Câine și Vacă să utilizeze interfața Animal. Totuși, ele au la dispoziție doar metoda speak. Dacă am lăsa metoda „vorbește” în afara clasei Pisică, Câine și Vacă și apoi am crea instanțe ale clasei Pisică, Câine și Vacă, am putea totuși să apelăm metoda „vorbește” pentru aceste instanțe. Singura problemă ar fi că s-ar tipări „Animals „makes sound”” în loc de sunetele corespunzătoare pe care le scoate o pisică, un câine sau o vacă („meow”, „woof”, „moo”).

Aici intervine suprascrierea metodelor. Dacă redefinim metoda speak în clasele Pisică, Câine și Vacă, o putem personaliza pentru a imprima sunetele pe care le scot pisicile și câinii.

Încapsularea

Încapsularea leagă datele și funcțiile care manipulează datele, iar acest lucru le ține pe ambele la adăpost de interferențe exterioare și de utilizare greșită. Un bun exemplu de încapsulare este o clasă. De fapt, ne putem referi la exemplul de mai sus, în care vorbim despre Câini, Pisici și Vaci, cu câteva mici modificări.

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
Intră în modul fullscreen Ieșire din modul fullscreen

Rețineți că atunci când creăm instanțe pentru fiecare animal îi atribuim și un nume fiecăruia. Ceea ce trebuie reținut aici este că ‘.name’ după fiecare instanță creată (de exemplu, dog1.name) sunt toate diferite. Aceste „.name” sunt încapsulate în clasele corespunzătoare. Atribuirea unui nume unei instanțe nu modifică valoarea numelui niciunei alte instanțe.

Moștenirea

Moștenirea este probabil cea mai ușor de înțeles. Moștenirea este conceptul de utilizare (moștenire) de către o clasă a interfeței unei alte clase. Aceasta devine atunci un copil sau o subclasă, în timp ce clasa de la care moștenește este părintele sau superclasa. De fapt, în al doilea exemplu de mai sus am moștenit câteva clase. Clasele Pisică, Câine și Vacă moștenesc din clasa Animal pentru a avea acces la metoda speak. Aveți grijă să adăugați cuvântul cheie extends.

Lasă un răspuns Anulează răspunsul

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Arhive

  • ianuarie 2022
  • decembrie 2021
  • noiembrie 2021
  • octombrie 2021
  • septembrie 2021

Meta

  • Autentificare
  • Flux intrări
  • Flux comentarii
  • 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