Kako učiniti svoj kod čitljivijim apstrakcijom

Dok učite kako programirati, uobičajeno je vidjeti ljude koji koriste izraz koji se naziva apstrakcija. Počinjete se preispitivati: što je apstrakcija i zašto je važna?

U ovom ću vam članku objasniti pojam apstrakcije i kako se njome služiti, a dat ću nekoliko primjera u Pythonu.

Prvo najprije: što je apstrakcija?

Prema mojim osnovama učitelja programiranja:

"Apstrakcija je pojednostavljena specifikacija entiteta"

To znači da je apstrakcija prikaz računskog entiteta. To je način da se prikriju njegove određene informacije, a programeru daju samo najrelevantnije informacije.

Apstrakcija je također situacijska: svaka odgovara potrebi, tako da dobru apstrakciju možete povezati s određenom uporabom tog entiteta.

Pogledajmo binarno stablo pretraživanja (ako ne znate što su, pogledajte moj članak o njima). Čvor možemo definirati kao entitet sa sljedećim svojstvima:

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

Ovdje bismo rekli da Čvor ima dva pokazivača na druge čvorove i int vrijednost. Ali koliko je ovo nekome korisno u usporedbi s funkcijom insert(node, value)i samo bi je ispravno umetnulo? Na taj način, samo biste ga trebali nazvati i bilo je gotovo. Jednostavan.

Ovako je apstrakcija korisna. Sve knjižnice koje koristite u svojim programima koriste je tako da knjižnica postaje stvarno jednostavna.

Ok, ali koliko je dobra apstrakcija podataka?

Apstrakcija podataka omogućuje nam da složenu strukturu podataka transformiramo u onu jednostavnu i jednostavnu za upotrebu. Učinak je toga da se program s visokom razinom složenosti koda može transformirati u onaj koji izgleda poput engleskog (nazovimo ga kodom visoke razine ).

Vrsta podataka sastoji se od dvije stvari: svojstava i metoda, koje mogu biti javne ili privatne. Javni su jedini način korištenja podataka. Oni bi trebali obuhvaćati sve funkcionalnosti za koje želite da podaci mogu raditi.

Što se onda događa ako koristite apstraktni kod? Zapravo nije važno mijenjaju li se vaša unutarnja svojstva sve dok metode još uvijek primaju iste argumente i rade isto kao i prije. Ako nešto nije u redu, to trebate samo jednom promijeniti.

Odaberimo primjer i radimo s njim: Vektori

Pretpostavit ćemo da su Vektori:

  • Objekti s 2 vrijednosti, x i y
  • x i y su oba negativni brojevi

Na ovaj način Vektori su nešto poput (2, 5), (0, 19), i tako dalje.

Dobar način za stvaranje apstrakcija je korištenje objekata. Pružaju prikrivanje informacija i anonimnost predstavljanja. To korisniku omogućuje zadržavanje apstrakcije.

Počnimo s definiranjem naše klase (neću definirati provjeru valjanosti da bi kôd bio čistiji, ali trebali biste to učiniti):

Dakle, definirali smo više metoda i sada imamo puno stvari koje možemo učiniti:

Za 2D vektor ovo se može činiti jednostavno. Ako ovo počnete primjenjivati ​​u većim i složenijim programima, primijetit ćete da vam jako dobro dođu.

Napravimo sada drugačiju implementaciju vektora klase (promijenimo njegovo unutarnje stanje) na nešto s istim metodama, ali s različitim kodom:

Ako pokrenemo iste naredbe, izlaz će i dalje biti isti. To je zbog apstrakcije koju smo koristili, čak i ako se kôd u potpunosti promijenio. Zbog toga je vrlo važno koristiti apstrakciju. Omogućuje fleksibilnost vašeg koda i neovisnost tuđeg koda.

Koristimo sada još jedan primjer, ovaj put s 2 razreda: Grad i Građanin.

I dobivamo sljedeće:

### OUTPUT ###City population is 1000, random: Citizen is a female 20 years oldCity population is 1000, random: Citizen is a male 74 years old

Ali zamislite sada da želimo promijeniti način na koji klasa Citizen djeluje iznutra. Da nismo koristili apstrakciju, morali bismo promijeniti cijeli kôd! To je puno posla!

Ako se kôd ponovo pokrene, znamo da radi, iako su rezultati drugačiji. Kao što vidite, promijenili smo cijeli razred, ali sve funkcionira!

Završavati

U početku apstrakcija može izgledati kao da nije potrebna. Što je niža razina jezika koji koristite, to je važnije koristiti apstrakciju. Time se izbjegava imati složeni kôd, a zapravo sve čini jednostavnim. Na jezicima poput C to je stvarno korisno. Ako sumnjate, provjerite ovaj projekt koji sam izradio gdje sam primijenio apstrakciju i bilo je stvarno lako razumjeti što se događa.

Ako imate pitanja ili nešto o čemu želite razgovarati ili raspraviti, ostavite komentar ispod!

Ne zaboravite me pratiti na Instagramu i Twitteru!