Pojam klase i objekta – kako to izgleda u stvarnosti i u memoriji računara
Kada govorimo o objektno orijentisanom programiranju, prvo nailazimo na pojmove klasa i objekat. Oni na prvi pogled mogu zvučati apstraktno, ali ako ih povežemo sa stvarnim svetom, postaju mnogo jasniji i lakši za pamćenje.
Klasa – nacrt ili šablon
Klasa je kao nacrt kuće ili plan za izradu automobila u fabrici.
Na papiru (tj. u klasi) piše koliko soba ima kuća, gde su vrata i prozori, ili kakva sedišta, motor i boja treba da ima automobil. Ali dok je samo nacrt, nema prave kuće ni pravog auta – postoji samo opis.
Dakle:
-
Klasa je opis onoga što želimo da napravimo.
-
Ona sadrži uputstva, ali ne zauzima prostor u memoriji dok iz nje ne „izgradimo“ konkretan primerak.
Objekat – konkretna stvar na osnovu nacrta
Objekat je kao stvarna kuća napravljena po nacrtu, ili pravi automobil koji je izašao iz fabrike.
Možemo da imamo mnogo kuća po istom nacrtu, ali svaka stoji na svojoj parceli, ima svoju adresu i može se razlikovati u boji fasade ili načinu uređenja. Isto tako, možemo imati mnogo automobila iz iste klase, ali svaki ima svoju registarsku tablicu i zauzima svoje mesto na parkingu.
U programiranju, objekat je konkretan primer klase. On zaista zauzima prostor u memoriji računara, baš kao što prava kuća zauzima zemljište ili auto zauzima parking mesto.
Memorija kao grad sa adresama
Da bismo još bolje razumeli, zamislimo da je memorija računara veliki grad pun ulica i kuća.
-
Svaka „kuća“ ima svoju adresu (broj u memoriji).
-
Kada napravimo objekat, računar mu dodeli adresu i rezerviše prostor u memoriji.
-
Promenljive u programu nisu sam objekat – one su kao papirić na kome piše adresa. Ako na papiriću piše „Ulica Memorija, broj 1050“, to znači da se naš objekat nalazi baš na toj lokaciji.
Zato možemo reći da promenljiva pokazuje na objekat, a sam objekat „živi“ u memoriji, na određenom mestu.
Više objekata iz iste klase
Zamislite da imamo klasu „Automobil“. Iz nje možemo napraviti tri različita objekta:
-
crveni Fiat,
-
plavi Opel,
-
beli BMW.
Svi oni pripadaju istoj klasi „Automobil“, ali svaki zauzima svoje mesto u memoriji i svaki ima svoja svojstva (npr. boja, marka). To je kao da u istom gradu postoje tri kuće izgrađene po istom nacrtu, ali svaka stoji na svojoj adresi i ima drugačiju fasadu.
Razumevanje razlike između klase i objekta pomaže da shvatimo:
-
Da možemo praviti mnogo objekata iz iste klase (kao mnogo automobila iz iste fabrike).
-
Da objekti zauzimaju prostor u memoriji (jer nisu samo opis, već konkretni primeri).
-
Da promenljiva ne sadrži ceo objekat, već pokazuje na njega (ona čuva adresu, kao kada znamo gde se nalazi kuća u ulici).
Pitanja za utvrđivanje gradiva
-
Objasniti razliku između klase i objekta koristeći primer kuće ili automobila.
-
Gde se nalazi objekat kada ga napravimo u programu?
-
Šta u stvari čuva promenljiva koja upućuje na objekat?
-
Može li više objekata da nastane iz iste klase? Objasni primerom.
-
Zašto kažemo da klasa sama po sebi ne zauzima prostor u memoriji, dok objekat zauzima?