Klasičan stil programiranja koji smo učili u prvom i drugom razredu naziva se proceduralno programiranje. Po tom modelu program se sastoji od niza uzastopnih koraka. Ako ima dosta koraka, možemo napraviti procedure ili funkcije koje će raditi neke podzadatke. Pošto koristimo programske strukture kao što su petlje, if -then-else naredbe, potprograme, i slično, često se koristi i naziv struktuirano programiranje.

Mana ovakvog pristupa programiranju je veliki stepen povezanosti delova složenog sistema. To otežava održavanje i unapređivanje sistema. Da bi se unele nove mogućnosti često je potrebno preraditi veliki deo već gotovih delova programa.

Dva programska jezika koji podržavaju proceduralno programiranje su Pascal i C.

Objektno orijentisano programiranje (OOP) predstavlja sasvim nov način razmišljanja. Ključna razlika između klasičnog proceduralnog programiranja i objektno orijentisanog programiranja je nepostojanje jasne podele na podatke i funkcije koje treba nad podacima izvršiti.

Naime, u objektno orijentisanom programiranju polazi se od toga da i podatak i funkcije koje obrađuju taj podatak čine deo neke celine. U ovakvom konceptu takvu celinu posmatramo kao objekat koji ima neka moguća stanja i ponašanja. Stanja predstavljaju vrednosti podataka koji se nalaze u okviru objekata, koji vremenom mogu da se menjaju i nazivaju se polja. Ponašanja predstavljaju pravila menjanja stanja, reakciju na uticaje okoline i načina uticanja na okolinu. Opisuju se funkcijama i nazivaju se metode.

Ako bi u proceduralnom C jeziku hteli da ispitamo da li se string s1 nalazi u stringu s2, pozvali bismo standardnu bibliotečku funkciju i prosledili joj argumente:

     strstr(s2,s1);

U OOP konceptu metoda (funkcija) je ugrađena u sam objekat-string i poziva se preko njega:

     s2.Contains(s1);

Objekti nastaju na osnovu definisanog šablona – klase. Klasa je tip podataka, a objekat je njen primerak (instanca klase). Na osnovu jedne klase moguće je kreirati proizvoljan broj objekata. Svi ti objekti imaju polja  i metode koji su definisani u klasi. Objekti su nezavisni jedni od drugih, a njihova polja mogu imati nezavisne vrednosti. Na primer, na jednom komandnom dugmetu može stajati tekst OK, na drugom IZLAZ, mogu biti različitih dimenzija itd. Polja i metode klase se zajedničkim imenom nazivaju članovi klase. Odnos klase i objekta možemo uporediti sa odnosom arhitektonskog projekta i gotove građevine. Na osnovu jednog projekta može se napraviti neograničen broj objekata istog tipa.

Po nekoj formalnoj definiciji objektno orijentisano programiranje je koncept u kojem jedan ili više objekta međusobno rade na rešavanju istih problema. Najpopularniji objektno orijentisani jezici su: Java, C#, C++, PHP, JavaScript/TypeScript, Ruby...

Program koji pišemo se sastoji od objekata koji imaju neka moguća stanja i ponašanja. Stanja predstavljaju vrednosti, koje vremenom mogu da se menjaju. Ponašanja predstavljaju pravila menjanja stanja, reakcije na uticaje okoline i načine uticanja na okolinu. Celokupna obrada ostvaruje se u obliku međusobnih delovanja objekata u programu.

Jedna stvar koju za početak treba da razjasnimo je razlika između klase i objekta, ova dva pojma čine suštinu OOP-a:

Klasa je složeni tip podatka, korisnički definisana koja predstavlja "templejt" prema kojem kreiramo objekte. Takođe možemo reći da je klasa definicija i opis onoga što predstavlja, dok sama po sebi nema posebnu funkciju. Na primer, nacrt za gradnju kuće - u njemu imamo definisane sve potrebne stvari: kako će naša kuća izgledati, koje će funkcije imati, te kakve će osobine imati, kako će se ponašati u određenim uslovima... ali na kraju krajeva to je samo nacrt koji nam je jako koristan, ali ne možemo u njemu stanovati. Pa nam je tako potrebna instanca te klase tj kuća.

Svaka klasa ima dve ključne stvari, a to su: atributi (pojedinačni podaci unutar nje) i njeno ponašanje (funkcije/metode).

Pa tako npr. klasa "čovek" bi kao atribute imala: ime, godine, visinu, težinu, pol.. itd, dok bi ponašanje ili funkcije/metode te klase bili: hoda, jede, skače, spava, priča, gleda... itd.

OOP je donelo modularnost u razvoj aplikacija, pa tako ako kreiramo klasu čovek sa svim potrebnim atributima i funkcijama, nama klasa ne znači puno ako mi te vrednosti ne inicijalizujemo, a da bi smo to uradili potreban nam je objekat tj. instanca te klase.

Koraci u objektno orijentisanom pristupu bi bili da kreiramo klasu po imenu Covek sa svim atributima koji karakterišu njega, nakon toga sa funkcijama članicama možemo opisati radnju i ponašanje našeg objekta čovek.. sada kada nam god zatreba novi čovek, radimo instance i objekte klase Covek i imamo modularan i optimizovan rad sa podacima u samoj aplikaciji.

Pojam klase i objekta najlakše se shvata kroz primere iz svakodnevnog života. Pas (klasa) je životinja sa svima poznatim opštim osobinama i ponašanjem. Lesi (objekat) je jedan tačno određeni pas sa konkretnim osobinama (boja, težina, starost) i ponašanjem koje se uklapa u ponašanje svih pasa. Drugi primer: automobil je opšte ime (klasa) za sva prevozna sredstva te vrste, dok je automobil BG 172AX jedan tačno određeni automobil (objekat).


Da rezimiramo:

Klase su složeni tipovi podataka.

Stanja objekata predstavljaju se podacima unutar objekata koji se nazivaju polja (fields). Polja mogu da budu podaci prostih i složenih tipova. U proste tipove podataka spadaju celi brojevi, realni brojevi itd., a u složene tipove nizovi i klase.

Ponašanje objekata ostvaruje se postupcima unutar klasa koji se nazivaju metode (methods). Metode odgovaraju funkcijama i procedurama u klasičnim programskim jezicima.

Polja i metode klasa zajedničkim imenom nazivaju se članovi (members) klasa.

Prednosti objektno-orijentisanog programiranja ogledaju se u tome što je pri menjanju mogućnosti programskog sistema potrebno prerađivati samo mali deo već gotovog programa. Ako se prošire mogućnosti neke klase nije potrebno promeniti i deo programa koji koristi tu klasu. Naravno, pod uslovom da se ništa ne promeni u načinu korišćenja mogućnosti klase koje su postojale i pre promene. Takođe, ako se u programski sistem uvode nove klase, deo programa koji koristi samo stare klase ne treba promeniti.

Najviše zastupljeni jezici za objektno-orijentisano programiranje su C++, Java i, u novije vreme, C#.


Last modified: Thursday, 5 November 2020, 12:22 AM