Showing posts with label OOP. Show all posts
Showing posts with label OOP. Show all posts

Thursday, 13 March 2014

Apstrakcija


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.



Polimorfizam

Polimorfizam omogućava objektu da se prikaže u više različitih oblika. Pogledajmo primer.


Svi psi laju, ali je lavež svake vrste različit. Tako ako kažemo pas.laje() zvuk koji čujemo će zavisiti od toga koja vrsta se oglasi.






Nasleđivanje

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
ü  private – pristup samo unutar klase 


Enkapsulacija

Enkapsulacija je metod „skrivanja“ podataka u Javi. 

Postiže se korišćenjem različitih modifikatora pristupa kod varijabli i metoda.

 Pogledajte u postu Šta je u kojoj fioci?

Osnovni koncepti OOP-a

Šta je u kojoj fioci?

Osnovna jedinica u OOP je objekat. Objekti se u Javi zapisuju pomoću klasa.

Klase se razvrstavaju po paketima (kao fioke u ormaru). :D

Više paketa čine jedan projekat, tj. program (ormar).

E sad nije baš uvek dozvoljeno da se svakom atributu ili promenljivoj (čarapi) pristupa iz bilo koje klase ili bilo kog paketa.

Za definisanje pristupa koriste se modifikatori pristupa.

ü  public – najmanje restriktivan, svuda dostupan
ü  protected – sprečava pristup iz klasa izvan paketa,
ü  bez pristupnog atributa – pristup se ograničava na klase iz istog paketa
ü  private – pristup samo unutar klase.





Atribut a je vidljiv u oba paketa i usvakoj klasi.
Atribut b se može videti i može mu se pristupiti samo iz klasa X i Y.
Atribut c se nalazi u istoj situaciji kao i atribut b. 
Atribut d se može koristiti samo u klasi Z.

Razlika između b i c će se videti kada se upoznamo sa nasleđivanjem.


Tuesday, 4 March 2014

Uplešimo u OOP

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...