Koja je razlika između objekta i klase?
Kao neko ko na nedeljnom nivou radi više intervjua sa mladim inženjerima, mogu da kažem da na pitanje: “Koja je razlika između objekta i klase?“, više od 50% ispitanika odgovori pogrešno. Među polovinom koja tačno odgovori, 50% ih zapravo ne razume koncepte objektno orijentisanog programiranja (OOP).
Zamislimo da imamo tlocrt kuće. Na osnovu njega tačno znamo koliko soba će kuća imati, gde se nalaze prozori, vrata, prekidači za svetlo, kako možemo u kuću ući, itd.
Na osnovu jednog tlocrta možemo napraviti celu ulicu u kojoj su kuće identične. Šta će biti različito? Pa možda boja zidova u kući neće biti ista, drugačiji je nameštaj ili pod. Ono što će definitivno biti drugačije jeste adresa na kojoj se kuća nalazi.
U bilo koju kuću da uđemo, zahvaljujući tlocrtu, znaćemo šta da očekujemo i kako da se snađemo.
Klasa je tlocrt. Služi nam da opiše određeni entitet poljima i metodama. Polja predstavljaju podatke koji opisuju entitet, dok metode predstavljaju ponašanje, odnosno funkcionalnosti entiteta.
Objekat je instanca klase. Konkretno, objekat je zauzeta memorija sa jedinstvenoj adresom na kojoj se nalaze podaci definisani klasom, i nad objektom je moguće inicirati ponašanje definisano metodama.
Npr. ako uzmemo primer klase Pas koja ima metodu PasLaje…
Šalim se. Primeri ovog tipa su pogrešni, jer su imaginarni. Uvek se učite na primerima koji imaju smisla. Smisla ima ono što se nalazi u praktičnoj primeni.
Dobar primer bi bio kompleksan broj. Za razliku od brojeva iz skupa R, kompleksan broj ima drugačiju složeniju strukturu i aritmetičke operacije. Kompeksan broj se sastoji iz realnog i imaginarnog dela i to su polja koja će klasa imati. Aritmetička funkcija sabiranja radi tako što se realan deo jednog broja sabira sa realnim delom drugog broja. Isto važi i za imaginarne delove. Sabiranje bi bila metoda klase.
A šta bi bili objekti? Objekti bi bile instance klase sa konkretnim vrednostima. Npr. kompleksan broj sa realnim delom 5 i imaginarnim delom 2. Koliko možemo imati objekata jedne klase? Teorijski neograničeno, praktično onoliko koliko imamo slobodne memorije.