de Tiago Antunes

În timp ce înveți cum să programezi, este obișnuit să vezi oameni care folosesc un termen numit abstractizare. Începeți să vă puneți întrebări: ce este abstractizarea și de ce este importantă?

În acest articol, vă voi explica conceptul de abstractizare și cum să-l utilizați și voi da câteva exemple în Python.

Primele lucruri mai întâi: Ce este abstractizarea?

Potrivit meu Fundamentele profesorului de programare:

„Abstracția este o specificație simplificată a unei entități”

Ceea ce înseamnă acest lucru este că o abstractizare este o reprezentare a unei entități de calcul. Este o modalitate de a ascunde informațiile sale particulare și de a oferi cele mai relevante informații programatorului.

O abstractizare este, de asemenea, situațională: fiecare se potrivește unei nevoi, astfel încât să vă puteți asocia abstracție bună cu utilizarea particulară a acelei entități.

Să aruncăm o privire în Arborele de căutare binar (dacă nu știți ce sunt acestea, verificați articol despre ele). Putem defini un nod ca entitate cu următoarele proprietăți:

A Node has:    Node * left    Node * right    int val

Aici am spune că un nod are două indicii către alte noduri și o valoare int. Dar cât de util este pentru cineva în comparație cu o funcție insert(node, value) și l-ar insera corect? În acest fel, ar trebui doar să-l suni și s-a făcut. Simplu.

Așa este utilă abstractizarea. Toate bibliotecile pe care le utilizați în programele dvs. îl folosesc astfel încât să devină foarte simplu să utilizați o bibliotecă.

Bine, dar cât de bună este Abstracția datelor?

Abstracția datelor ne permite să transformăm o structură complexă de date într-una simplă și ușor de utilizat. Efectul acestui lucru este că un program cu un nivel ridicat de complexitate a codului poate fi transformat într-unul care arată aproape de limba engleză (să-l numim cod la nivel înalt).

Un tip de date este format din 2 lucruri: proprietăți și metode, care pot fi publice sau private. Cele publice sunt singura modalitate de utilizare a datelor. Acestea ar trebui să acopere toate funcționalitățile pe care doriți să le poată face datele.

Ce se întâmplă atunci dacă utilizați codul abstract? Nu contează cu adevărat dacă proprietățile dvs. interne se schimbă atâta timp cât metodele primesc în continuare aceleași argumente și fac același lucru ca înainte. Dacă ceva nu este în regulă, trebuie să-l schimbi o singură dată.

Să alegem un exemplu și să lucrăm cu el: vectori

Vom presupune că vectorii sunt:

  • Obiecte cu 2 valori, x și y
  • x și y sunt ambele numere non-negative

În acest fel, vectorii sunt ceva de genul (2, 5), (0, 19) și așa mai departe.

O modalitate bună de a crea abstracții este utilizarea obiectelor. Acestea oferă ascunderea informațiilor și anonimatul reprezentării. Acest lucru permite utilizatorului să păstreze abstractizarea.

Să începem prin a ne defini clasa (nu voi defini validarea tipului pentru a menține codul mai curat, dar ar trebui să o faceți):

Cum puteti face codul mai usor de citit prin abstractizare

Așa că am definit mai multe metode și avem o mulțime de lucruri acum că putem face:

1612165986 388 Cum puteti face codul mai usor de citit prin abstractizare

Pentru un vector 2D, acest lucru poate părea simplu. Dacă începeți să implementați acest lucru în programe mai mari și mai complexe, veți observa că acestea sunt foarte utile.

Să facem acum o implementare diferită a vectorului de clasă (schimbăm starea sa internă) la ceva cu aceleași metode, dar cu cod diferit:

1612165986 630 Cum puteti face codul mai usor de citit prin abstractizare
Implementarea este diferită, dar rezultatul este același

Dacă executăm aceleași comenzi, ieșirea va fi în continuare aceeași. Acest lucru se datorează abstractizării pe care am folosit-o, chiar dacă codul s-a schimbat complet. Acesta este motivul pentru care este foarte important să folosiți abstractizarea. Permite flexibilitate în codul dvs. și independența codului altor persoane.

Să folosim acum un alt exemplu, de data aceasta cu 2 clase: Oraș și Cetățean.

1612165986 723 Cum puteti face codul mai usor de citit prin abstractizare
Un oraș este format din cetățeni

Și primim următoarele:

1612165986 354 Cum puteti face codul mai usor de citit prin abstractizare
### OUTPUT ###City population is 1000, random: Citizen is a female 20 years oldCity population is 1000, random: Citizen is a male 74 years old

Dar imaginați-vă acum că vrem să schimbăm modul în care funcționează clasa Citizen în interior. Dacă nu am folosi abstractizarea, ar trebui să schimbăm întregul cod! E multă muncă!

1612165987 216 Cum puteti face codul mai usor de citit prin abstractizare
Acum am schimbat clasa Citizen, foarte repede – și totul funcționează în continuare!

Acum, dacă codul este rulat din nou, știm că funcționează, deși rezultatele sunt diferite. După cum puteți vedea, am schimbat o întreagă clasă, dar totul funcționează!

Înfășurându-se

La început, abstractizarea ar putea părea că nu este necesară. Cu cât nivelul limbii pe care îl utilizați este mai scăzut, cu atât este mai important să folosiți abstractizarea. Acest lucru evită să aveți cod complex și într-adevăr îl simplifică. În limbi precum C este foarte util. Dacă aveți îndoieli, verificați acest lucru proiect pe care l-am făcut unde am implementat abstractizarea și a fost foarte ușor să înțeleg ce se întâmplă.

Dacă aveți întrebări sau ceva despre care doriți să vorbiți sau să discutați, lăsați un comentariu mai jos!

Nu uita să mă urmărești mai departe Instagram și Stare de nervozitate!