Pogledajmo još jednom ovaj primer sa psima. U suštini
metoda laje u klasi Pas ne radi ništa. Onda tek radi kada se pozove nad
objektima podklase klase Pas. To znači da nije nam bilo potrebno da definišemo
telo ove metode u glavnoj(baznoj) klasi.
Tu na scenu stupa apstrakcija. Često se kreira
apstraktna klasa da bi se koristile pogodnosti polimorfizma.
Apstraktna klasa je klasa u kojoj su jedna ili više
metoda deklarisane, ali nisu definisane. To znači da su navedeni samo potpisi
metoda, a telo se definiše u klasi koja je nasleđuje.
Nasleđivanje je proces u kome klasa nasleđuje
osobine neke druge klase. Na ovaj način se stvara hijerarhija klasa. Java ne
podržava višestruko nasleđivanje, a to znači da jednu klasu (baznu klasu) može
naslediti više klasa (podklasa), ali da jedna klasa (podklasa) može da nasledi
samo jednu klasu (baznu).
I ovčar i bigl i doga su
psi. Svi oni imaju neke zajedničke karakteristike kao što su imaju četri noge,
rep i laju. Ove karakteristike se navode u klasi Pas. A takođe imaju i neke
osobine po kojima se razlikuju.
Šta se može naslediti zavisi
i od modifikatora pristupa:
üpublic
– najmanje restriktivan, svuda dostupan
üprotected
– sprečava pristup iz klasa izvan paketa, ali ne ograničava nasleđivanje ako je
klasa public
übez
pristupnog atributa – pristup se ograničava na klase iz istog paketa i sprečava
se nasleđivanje u potklasama definisanim u drugim paketima
Nikada
neću zaboraviti jedno od mojih prvih predavanja iz objektno
orijentisanog programiranja (OOP) na fakultetu. Rečenica „Možete izprogramirati
SVE što zamislite!“ koju je tada izgovorio profesor ostala mi je urezana u
sećanju. Takođe kada je rekao da će taj čas programirati ples, moram priznati
da mi nije bilo baš najjasnije. I tako sam ja ušla lagano u svet programiranja.
U društvu Freda Astera i Džindžer Rodžers. :D
Ni vama sad nije ništa jasno? Ko su bre taj Fred i ta
Džindžer???
Sad kada sam vas upoznala sa ovim legendama da vidimo
kakve veze oni imaju sa programiranjem.
Počnimo sa jednom od definicija OOP-a. OOP je tehnika programiranja zasnovana na objektima i njihovoj međusobnoj interakciji.
Da vidimo da li možemo ovo malo razjasniti.
OOP je način programiranja koji se zasniva na
objektima.
Šta su to objekti?
Još jedna
rečenica koju sam „ukrala“ sa onih predavanja sa početka ovog teksta je i „Sve
može biti objekat!“ . Često postavljam pitanje učenicima „Šta može biti
objekat?“ i svaki put nepogrešivo dobijam odgovor „SVE!“. I onda počinje
nabrajanje : drvo, auto, klupa, Mile...
A šta je sa Fredom i Džindžer? Kako su to oni objekti
i šta su u stvari ti objektu?
Možemo reći da je objekat osnovna jedinica u OOP-u.
Oni imaju svoje stanje i ponašanje. Stanje opisuje osobine objekta, npr. Fred
je visok, muškarac, zgodan... Ponašanje nam govori koje radnje možemo izvršiti
nad objektom i koje on može izvršiti, npr. Džindžer pleše, vrti se. :D
Nadam se da stvari postaju jasnije.
Objekti takođe komuniciraju, tj. utiču jedni na druge
(vrše interakciju), npr. Fred je podigao Džindžer u vazduh...