Kada pravimo programe u jeziku C, sve gradimo od promenljivih, nizova, funkcija i struktura. To sasvim dobro radi za manje programe. Međutim, kako programi postaju složeniji, dolazi do problema: kod postaje nepregledan, teško je održavati ga, a ako nešto promenimo u jednom delu, može da se pokvari nešto sasvim drugo.

Objektno orijentisano programiranje, skraćeno OOP, nastalo je upravo iz potrebe da programi budu pregledniji i bliži načinu na koji mi, ljudi, razmišljamo o svetu oko sebe. Kada razmišljamo o stvarima u svakodnevnom životu, mi ih doživljavamo kao objekte. Na primer, auto na ulici, telefon u ruci ili učenik u učionici – svi su oni objekti sa određenim osobinama i ponašanjima. OOP pokušava da na sličan način predstavi stvari i u programiranju.

Klasa i objekat

Zamislimo da pravimo plan za kuću. Nacrt koji arhitekta nacrta nije sama kuća, nego opis kuće: koliko će imati soba, gde su vrata i prozori, kakav je raspored prostorija. Kada se taj nacrt primeni u praksi, mi dobijemo stvarnu kuću u kojoj ljudi mogu da žive.

Na isti način u programiranju: klasa je nacrt, a objekat je stvarni primerak tog nacrta. Ako imamo klasu „Automobil“, ona opisuje da svaki automobil ima boju, marku i godinu proizvodnje, i da svaki automobil može da se pokrene, da stane ili da skrene. Kada od te klase napravimo objekat, recimo „crveni Fiat Punto iz 2010. godine“, mi smo od nacrta napravili stvarni primerak – naš auto. Taj proces nazivamo instanciranje objekta.

Svojstva i metode

Svaka stvar koju poznajemo ima svoje osobine i svoja ponašanja. U OOP-u osobine nazivamo svojstvima, a ponašanja metodama. Ako govorimo o automobilu, njegova svojstva su boja, marka, godina proizvodnje. Njegove metode su radnje koje može da obavi: da se pokrene, da se zaustavi, da skrene. Ako govorimo o učeniku, svojstva su mu ime, prezime i razred, a metode su da uči, da piše test, da odgovara na času.

Ovakav način razmišljanja čini program bližim stvarnosti: ne razmišljamo više samo o brojevima i funkcijama, nego o objektima koji imaju i podatke i ponašanja zajedno.

Osnovni principi OOP

Prvi važan princip je enkapsulacija. To znači da se podaci i metode koji pripadaju nekom objektu drže zajedno, „u paketu“. Još važnije, spolja ne moramo da vidimo ili znamo sve detalje kako nešto radi. Zamislite vozača automobila: on vidi volan, pedale i menjač. Kada pritisne gas, auto ubrzava. Ali vozač ne mora da zna šta se tačno dešava u motoru. Ti detalji su „sakriveni“ – enkapsulirani unutar automobila.

Drugi princip je nasleđivanje. U stvarnom životu znamo da različite stvari mogu imati zajedničke osobine. Na primer, automobil, bicikl i autobus su svi vozila. Sva vozila imaju točkove, boju i mogu da se kreću. Ipak, svaki od ovih tipova vozila ima i nešto svoje posebno – autobus ima mnogo sedišta, bicikl nema motor. U OOP-u, mi možemo da napravimo opštu klasu „Vozilo“, a zatim nove klase „Automobil“, „Bicikl“ i „Autobus“ koje sve nasleđuju osobine vozila, ali dodaju i nešto svoje. To štedi vreme i čini kod preglednijim.

Treći princip je polimorfizam. Ova reč znači „više oblika“. U suštini, polimorfizam nam omogućava da jedna ista radnja može da ima različite oblike u zavisnosti od objekta koji je koristi. Ako zamislimo radnju „kreni se“, ona je zajednička za sva vozila. Ali za bicikl to znači da vozač okreće pedale, za automobil to znači da motor pali i okreće točkove, dok za avion znači da ubrzava i polako poleće. Iako se radnja zove isto, način na koji se obavlja zavisi od objekta.

Prednosti OOP u odnosu na klasično programiranje

Zahvaljujući ovim principima, programi napisani objektno su organizovaniji i lakši za održavanje. Možemo jednom da napišemo klasu i da je koristimo mnogo puta, kao što jednom napravimo nacrt i onda gradimo više kuća prema njemu. Kada program postane složen, lakše ga je razumeti ako je podeljen na objekte, a ne na hiljade funkcija i promenljivih. Zbog toga je OOP osnova većine savremenih programskih jezika i tehnologija, uključujući i jezik C# sa kojim ćemo raditi.


Pitanja za proveru znanja
  1. Objasniti razliku između klase i objekta koristeći primer iz svakodnevnog života (npr kuća, telefon, knjiga ili nešto drugo).

  2. Koja su svojstva, a koje metode mobilnog telefona?

  3. Kako bi objasnili pojam enkapsulacije nekom ko nikada nije čuo za programiranje?

  4. Dati primer nasleđivanja iz stvarnog života, nevezano za vozila (npr. biljke, životinje, zanimanja…).

  5. Na sopstvenom primeru objasniti šta znači polimorfizam – ista radnja, ali različiti oblici.

Last modified: Friday, 5 September 2025, 5:46 AM