Thursday, 13 March 2014

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.


Monday, 10 March 2014

Buđenje

While petlja se koristi za radnje koje želimo da se ponavljaju sve dok je neki uslov tačan.

while ( uslov )
{
            //telo petlje
}

Kod while petlji treba da vodimo računa da ne napravimo beskonačnu petlju. Tj. treba voditi računa gde se menja stanje ulova iz tačno (true) u netačno (false),da bi se petlja u jednom trenutku završila.

Ja volim da spavam. Sad ćemo napraviti jednu petlju koja će da zadrži moj sat da ne zvoni sve do podne.

while (vreme < 12:00)
{
            neBudiMe;
}
buđenje;

Ovako napisan kod naziva se pseudo kod, tj. “lažni kod”.


Znači sve dok ne bude 12:00 h, izvršavaće se kod u telu petlje, a kada sat otkuca 12 iskočiće iz petlje i izvršiće se sledeća linija koda. 

Opet, i opet, i opet...

Kada želimo da se neka radnja ponovi, a znamo koliko puta, onda koristimo for petlju.

Uopšteno for petlja izgleda ovako:

for ( pocetnaVrednost; krajnjaVrednost; inkrement)
{
            //telo petlje
}

Npr. ako bih želela da rečenicu “Danas pada sneg!” ispišem tri puta onda bi to izgledalo ovako:

for (int i = 0 ; i < 3; i++)
{
            System.out.println(„Danas pada sneg!“);
}

Šta se ovde dešava?


Postavili smo da promenljiva i ima početnu vrednost 0, ulazi se u petlju i izvršava se kod u telu petlje. 

Zatim se vrednost promenljive i povećava za 1 (komanda i++, i sada je njena vrednost 1), proverava se uslov, i je manje od 3 i opet se izvršava kod u telu petlje.

Nakon toga se vrednost promenljive i opet povećava za 1 i sada ona ima vrednost 2. Opet se proverava uslov, i je opet manje od 3 i kod u petlji se još jednom izršava. 

Ponovo se vrednost promenljive povećava za 1 i sada iznosi 3. Da proverimo uslov 3 nije manje od 3, tako da se izvršavanje petlje ovde završava.