Mislim da je najopstije poredjenje klase i objekta nesto kao poredjenje ugradjenog tipa i varijable.
Recimo, ugradjeni tipovi su
int,
char,
float,.... a varijable su a, b, c... (ako si ih prethodno kreirao sa
Code:
...
int a;
char b;
float c;
...
Otprilike bi mogao da kazes npr. da je
int klasa, a varijabla
a objekat klase int.
Ugradjeni tipovi imaju varijable odredjene strukture (8-bitni, 16-bitni, ... komad memorije ciji sadrzaj u bitovima se tumaci na neki nacin) i operacije koje nad njima mozes vrsiti (+, -, *, /, ... itd. zavisi od tipa).
Klase mozes posmatrati kao
korisnicke tipove koje sam korisnik definise po svojoj potrebi.
Recimo, ne postoji ugradjen (gotovi) tip imaginarnih brojeva, ali ti mozes napraviti klasu (tj. sam definisati novi tip) koja predstavlja imaginarne brojeve i sam definisati odredjene operacije sa binarnim brojevima.
Znaci, napravio si kao neki novi tip:
Code:
class ImaginarniBroj {
....
}
Dalje, onog momenta kada definises neke konkretne imaginarne brojeve pomocu te svoje klase (tipa):
Code:
ImaginarniBroj a;
ImaginarniBroj b;
ti si ustvari dobio objekte
a i
b klase ImaginarniBroj.
Znaci, klasa je opis tipa: od cega se varijable tog tipa sastoje i koje se operacije nad njima mogu izvrsavati.
Objekat je konkretna implementacija tog tipa koja postoji u memoriji u toku izvrsavanja programa.
Odnos klase i objekta isto je sto i odnos ugradjenog tipa i varijable,
razlika je samo u tome kako ih nazivas:
tip i
varijabla za
ugradjene tipove:
Code:
int a;
klasa i
objekat za
korisnicke tipove.
Code:
ImaginarniBroj a;