Professional Documents
Culture Documents
Klase Uvod
Klase Uvod
1 2
tip imeMetoda1(lista_parametara) {
telo_metoda
}
...
tip imeMetodaM(lista_parametara) {
telo_metoda
}
}
3 4
Termini Primer jednostavne klase
Objekat se naziva i instanca klase Klasa za opisivanje kutije za koju su bitne samo
Podaci (promenljive) definisane u klasi nazivaju se polja dimenzije
(takoe se koriste i termini: promenljive instance, atributi
ili lanovi podaci)
Kod se pie u metodima class Kutija {
Metodi i promenljive deklarisane u klasi nazivaju se double sirina;
lanovi klase double visina;
double duzina;
}
5 6
k1 sirina
visina
duzina
7 8
Primer 2. sa dva objekta klase Kutija
Primer 1. sa klasom Kutija class PrimerSaDveKutije1 {
public static void main(String args[]) {
class PrimerSaKutijom1 {
Kutija k1 = new Kutija();
public static void main(String args[]) {
Kutija k2 = new Kutija();
Kutija k = new Kutija();
// dodela vrednosti clanovima objekta k1
// dodela vrednosti poljima
k1.sirina = 1; k1.visina = 2; k1.duzina = 3;
k.sirina = 1;
// dodela vrednosti clanovima objekta k2
k.visina = 2;
k2.sirina = 2; k2.visina = 4; k2.duzina = 5;
k.duzina = 3;
// Izraunavanje i ispisivanje zapremina
// Raunanje zapremine kutije
double z = k1.sirina * k1.visina * k1.duzina;
double zapremina = k.sirina * k.visina * k.duzina;
System.out.println("Zapremina k1 je " + z);
System.out.println("Zapremina je " + zapremina);
z = k2.sirina * k2.visina * k2.duzina;
}
System.out.println("Zapremina k2 je " + z);
}
}
Zapremina je 6.0 }
Zapremina k1 je 6.0
9 10
Zapremina k2 je 40.0
Stvaranje objekta
k1 = new Kutija(); k1 sirina
Operator new kreira objekat, tj. visina k2 = k1; k1 sirina
rezervie prostor u memoriji za duzina
Reference k1 i k2 sad imaju iste visina
uvanje objekta vrednosti, tj. ukazuju na isti objekat duzina
k2
Referenca k1 ukazuje na objekat Kopiranje reference ne kopira
Preko refernce se pristupa objektu objekat
11 12
Reference i objekti - nastavak Opti oblik primene operatora new
k1 sirina
k1 = new Kutija(); ImeKlase promenljiva = new ImeKlase();
visina
Kreiran je jo jedan objekat na koji k2 ImeKlase oznaava tip promenljive
duzina
sad ukazuje referenca k1
ImeKlase() oznaava konstruktor
sirina
visina
duzina Operator new dodeljuje memoriju dinamiki
Koliina memorije je ograniena
k2 = new Kutija();
k1 sirina Ako nema dovoljno memorije da se kreira objekat javlja
Kreiran je trei objekat na koji sad visina
ukazuje referenca k2 se izuzetak
k2 duzina
Na prvi objekat vie ne ukazuje Operator new se ne koristi za proste tipove (byte,
nijedna referenca i njemu ne moe sirina sirina short, int, long, float, double, char,
da se pristupi visina visina boolean).
duzina duzina Promenljive ovih tipova nisu objekti.
13 14
15 16
ta je loe u klasi Kutija? Metod za izraunavanje zapremine u klasi Kutija
class Kutija { class Kutija {
double sirina; double sirina;
double visina; double visina;
double duzina; double duzina;
} double zapremina() {
return sirina * visina * duzina;
U klasi Kutija nije ugraeno "znanje" kako se izraunava zapremina, }
pa bi to znanje moralo da se ugradi u svaku klasu koja radi sa
}
klasom Kutija, ako je potrebna zapremina objekta tipa Kutija
Ne postoji dobar nain da se postave poetne vrednosti polja, ili da U metodu zapremina direktno se pristupa poljima poto je i
se promene vrednosti (pristupa se poljima direktno) metod zapremina lan klase Kutija
Tip vrednosti koji vraa metod mora da bude kompatibilan sa tipom
metoda
Tip promenljive koja prihvata vrednost koju vraa metod mora biti
kompatibilan sa tipom metoda
17 18
23 24
Konstruktor sa parametrima u klasi Kutija
class Kutija {
Konstruktor sa parametrima u klasi Kutija
double sirina;
U klasi Kutija koja ima konstruktor sa parametrima ne
double visina;
mora postojati metod za postavljanje dimenzija, ako se
double duzina;
pretpostavi da objektu Kutija ne treba menjati dimenzije
// Konstruktor sa listom parametara Korienje podrazumevanog konstruktora u ovoj klasi
Kutija(double s, double v, double d) { izaziva greku u prevoenju programa
sirina = s; Moe se napisati vie konstruktora u jednoj klasi
visina = v; (sledee poglavlje)
duzina = d;
}
double zapremina() {
return sirina * visina * duzina;
}
} 25 26
Rezultat
Stek stck1: Stek stck2:
9 19
8 18
7 17
6 16
5 15
4 14
3 13
2 12
1 11
0 10
35