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
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
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