Când mănânci un burrito, fiecare dintre receptorii tăi de gust cântă de bucurie. Fiecare mușcătură aduce o combinație de diferite tipuri de arome, cum ar fi sărat, dulce, picant și umami. Fiecare mușcătură de după aceea are un gust ușor diferit, deoarece o nouă colecție de ingrediente își îmbină aromele.
Poate ai citit ingredientele din meniu, dar nu știi exact cum se face salsa. Condimentele pe care le folosesc pentru legumele lor ar putea fi un amestec secret. Totuși, nu trebuie să cunoști exact fiecare ingredient. Este suficient să știi că este delicios.
Ingredientele pe care le cunoașteți, precum orezul alb simplu, sunt beton. Celelalte elemente sunt abstracte. Știi că e salsa, dar ce fel? Sau, dacă cineva doar îți dă un burrito de nicăieri, atunci întregul burrito este abstract.
Abstracția în abstract
Alături de moștenire, abstractizarea este un concept important în programarea orientată pe obiecte. Teoria este că fiecare obiect ar trebui să ofere rezultate simple și previzibile. De asemenea, obiectele ar trebui să împărtășească doar ceea ce trebuie să fie partajat.
Vă puteți gândi la un burrito ca la un obiect. În interiorul burrito-ului, aveți câteva alte obiecte, cum ar fi fasole, orez, brânză și sos iute. Fasolea poate fi asezonată. Brânza ar putea fi un amestec. Iar sosul iute ar putea fi o combinație de ardei învechiți în oțet.
Nu trebuie să știți cum au fost făcute toate ingredientele dintr-un burrito. Și în cazul hot-dog-urilor, probabil că nu vrei să știi. Tot ce contează este că nu se destramă când îl mănânci și că este super gustos.
Abstracția este strâns legată de încapsulare
Este același lucru cu obiectele de programare. Când instanțiați un obiect (creați-l dintr-o clasă), este ca și cum ați comanda un burrito de la ghișeul camionului cu alimente. Ai acces la unele date, dar nu la toate. Nu trebuie să știți cum funcționează obiectul, atâta timp cât funcțiile returnează datele corecte. Iată un burrito în JavaScript/Typescript:
Limba specificată: tsx nu există”Generarea codului a eșuat!!
'
Poti jucați cu acest cod în sandbox-ul TypeScript.
În exemplul de mai sus, ingredientele de salsa și brânză sunt extrase. În primul rând, sunt încapsulate, pentru a ascunde ingredientele speciale. Apoi se adaugă getters pentru a accesa ingredientele. Dar ingredientele returnează doar o reprezentare abstractă a ceea ce sunt cu adevărat.
Abstracția în beton
Cu toate acestea, abstracția este mai mult decât un concept. Clasele pot fi și abstracte. Asta înseamnă că pot defini alte clase. Dar ei nu pot fi instanțiați singuri.
De ce orele ar trebui să fie uneori abstracte
Imaginează-ți că mergi la un restaurant și te așezi. Chelnerul vă dă un meniu. Îl deschideți pentru a descoperi că există un singur articol: mâncarea.
Este destul de abstract. L-ai comanda? L-ai mânca? Probabil că nu ai face-o. A spune că ceva este mâncare nu este suficient. Trebuie să se descompună în ceva mai concret.
Dar pastele? Ei bine, acesta este un tip de mâncare mai specific. Și știm că probabil are tăiței și sos. Dar există o mulțime de feluri diferite de paste acolo, așa că sunt încă abstracte.
Ce este abstract și ce este concret?
Fettuccine Alfredo este un exemplu concret atât de mâncare, cât și de paste. Același lucru este valabil și pentru clase. Nu fiecare clasă ar trebui să fie instanțiată. Unele clase ar trebui să definească doar structura altor clase.
Iată un exemplu cu un rezumat Alimente clasa și un copil Nuci de macadamia clasă:
Limba specificată: tsx nu există”Generarea codului a eșuat!!
'
Iată codul.
Clasele abstracte spun altor clase cum ar trebui să se comporte. În exemplul de mai sus, dacă urmează să fii o clasă de alimente, trebuie să ai funcții care să permită accesul la numele, aroma, descrierea și caloriile tale.
Observați că Nuci de macadamia clasă se extindeAlimente. Asta înseamnă că Nuci de macadamia este de acord să respecte regulile de Alimente. De asemenea, observați că constructorul apelează super. Această comandă instanțiază clasa părinte înainte ca constructorul să instanțieze Nuci de macadamia.
Dacă înveți să programezi, poți distrează-te mai mult cu aceste jocuri de programare.
Practica abstracției
- Vizitați linkul de mai sus și utilizați sandbox-ul pentru a crea o clasă abstractă numită Supă.
- Creați un copil concret al Supă clasa, numit Cereale.
- Utilizare console.log pentru a-ți testa codul. Ce se întâmplă dacă dvs Cereale clasa lipsește una dintre funcțiile definite în Supă?
Dar ce rost are o clasă pe care nu o poți instanția?
La început, clasele abstracte pot părea inutile. La urma urmei, nu le poți folosi de fapt pentru a face un obiect. Și nu e ca și cum își transmit funcțiile. Funcțiile trebuie rescrise în fiecare clasă de copii.
Există două motive principale pentru care aveți nevoie de clase abstracte. Îți păstrează codul consecvent și se asigură că și alți dezvoltatori scriu cod consistent. Nu vei lucra întotdeauna singur. Întreaga echipă trebuie să respecte aceleași reguli. Puteți învăța mai multe de la documentația TypeScript despre clasele abstracte.
Cum să vă organizați codul orientat pe obiecte cu moștenire
Citiți în continuare
Subiecte asemănătoare
- Programare
- Programare
- Programare orientată pe obiecte
Despre autor
Lee este un nomad cu normă întreagă și un erudit cu multe pasiuni și interese. Unele dintre aceste pasiuni gravitează în jurul productivității, dezvoltării personale și scrisului.
Aboneaza-te la newsletter-ul nostru
Alăturați-vă buletinului nostru informativ pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!
Click aici pentru a te abona