Python - Objekti

Sadržaj
U Objektno orijentirano programiranje, objekti su apstraktni prikazi elemenata koje definiramo kroz njihove atribute i koji imaju niz metoda koje nam omogućuju manipulaciju i pristup tim atributima.
postoje 3 značajke koji nam daju razlog da koristimo vlastite objekte umjesto da ovisimo o funkcijama, knjižnicama i globalima koje nam jezik stavlja na raspolaganje, a to su:
  • Polimorfizam: korištenje istih operacija na različitim objektima različitih klasa.
  • Inkapsulacija: sakriti svoje atribute od entiteta izvan objekta kako bi ih mogao zaštititi.
  • Nasljeđivanje- Stvoriti specifičnije objekte koji nasljeđuju osnovne atribute i metode općenitije više klase.

Ovaj izraz znači da ima mnogo oblika, to znači da možemo izvesti operacije koje će raditi drugačije ovisno o vrsti ili klasi objekta. Uzmimo jednostavan primjer, zamislimo da imamo košaricu za kupnju, zatim definiramo kako želimo da se dobiju podaci o cijeni i željeni proizvod, kao što na sljedećoj slici vidimo da stvaramo tuple.

Što bi se dogodilo ako se proširi funkcionalnost košarice za kupnju i sada radimo s aukcijama, na neki bismo način trebali navesti vrijednosti koje se moraju primiti i kako postupiti pri korištenju istih metoda, na način na koji bi mnogi mislili je učiniti funkciju sljedećeg oblika, međutim, nije prikladno.

Kao što možemo vidjeti na slici, pokrivamo mogućnosti trenutka, međutim, ono što se događa s povećanjem funkcionalnosti, morat ćemo stalno ažurirati ovaj kôd, tu dolazi do polimorfizma i ono što radimo je definirati da svaki objekt vraća svoju cijenu bez obzira na to kako se izračunava jer je to nešto interno za svaku klasu, što bi bilo sljedeće:

Tada možemo vidjeti da nam to pomaže pri stvaranju koda koji je s vremenom sve trajniji i lakši za održavanje.
Ovaj sastoji se u skrivanju unutarnjih detalja klase od vanjskog svijeta, tako da joj se može pristupiti samo putem njezinih vlastitih objekata i metoda, na taj način možemo raditi s klasama bez poznavanja njihovog unutarnjeg rada, eliminirajući složenost implementacije i štiteći logiku unutar naših objekata.
Također nam dopušta raditi sa uvjerenjem da se podaci unutar našeg objekta neće promijeniti, jer ako rade na apstraktan način, moći ćemo instancirati više puta, a svaka je instanca potpuno individualna.
Pogledajmo primjer objekta koji nije inkapsuliran:

Ovdje to vidimo iako je bilo o1 koji je napravio skup imena, o2 pristupiti istom imenu bez da ste ga postavili, ovo bi u aplikaciji bilo problematično, zamislimo da nam je potrebna cijena nekoliko proizvoda, a svaki će prebrisati cijenu prethodnog.
Sada s enkapsulacijom, pogledajmo kako bi cijeli tijek programa funkcionirao.

Ovdje vidimo da svaki objekt zadržava svoje ime, tako da znamo da možemo sigurno raditi dobivanjem ispravnih vrijednosti za svaki od naših objekata.
wave wave wave wave wave