200 likes | 408 Views
Informacioni sistemi - vežbe -. Tema: Konstruktor metode, preklapanje metoda 23 .12.2004. Konstruktor metoda. M etod a koj a se automatski poziva pri kreiranju nove instance pomoću operatora new Osnovne karakteristike konstruktor metoda su:
E N D
Informacioni sistemi- vežbe - Tema:Konstruktor metode, preklapanje metoda 23.12.2004.
Konstruktor metoda • Metoda koja se automatski poziva pri kreiranju nove instance pomoću operatora new • Osnovne karakteristike konstruktor metoda su: • imaju uvek isti naziv kao i klasa za koju su definisani, • nemaju povratni tip
Inicijalizacija pomoću konstruktora • Uloga konstruktor metode je da se obezbedi početna inicijalizacija objekata pri njihovom kreiranju. • Ako klasa ima konstruktor, Java ga automatski poziva pri stvaranju objekta, pre nego što korisnik može da mu pristupi • Ako se napravi klasa bez konstruktora, prevodilac će automatski napraviti podrazumevani (default) konstruktor
Primer 1 public class Broj1 { Broj1( ) { System.out.println("Ovo je default konstruktor"); } public static void main(String[] args) { Broj1 b1 = new Broj1(); } izlaz: “Ovo je default konstruktor”
Argumenti konstruktor metoda • Kao i svaka metoda, konstruktor može da ima argumente koji određuju kako će objekat biti napravljen • Argumenti konstruktora omogućavaju da se obezbede parametri za inicijalizaciju objekta
Primer 2 public class Broj1 { Broj1(int i) { System.out.println("Pravi se " + i + "-ti broj"); } public static void main(String[ ] args) { Broj1 b1 = new Broj1(); //default konstruktor for(int i = 1; i <= 10; i++) new Broj1(i); } }
Preklapanje konstruktor metoda I • Ukoliko je potrebno da se objekat napravi na više načina, koristi se više konstruktora • Svi imaju isto ime (ime klase), ali se razlikuju po argumentima • Isto ime metode se koristi sa drugačijim tipovima argumenata – preklapanje metoda (engl. overloading)
Preklapanje konstruktor metoda II class Drvo { int visina; String vrsta; Drvo() { … } Drvo(int i) { … } Drvo(String s) { … } Drvo(int i, String s) { … } ... } Drvo d1 = new Drvo(); Drvo d2 = new Drvo(1); Drvo d3 = new Drvo(“Lipa”); Drvo d4 = new Drvo(1,”Kesten”); Drvo d5 = new Drvo (“Orah”,2);
Razlikovanje preklopljenih metoda • Svaka preklopljena metoda mora da ima jedinstvenu listu tipova argumenata • Dovoljna je čak i razlika u poretku argumenata • void ispis(int i, String s) • void ispis(String s, int i)
Preklapanje povratnih vrednosti • Razlika između metoda sa istim imenom se pravi na osnovu liste argumenata • Tip povratne vrednosti se ne može koristiti za razlikovanje metoda
Primer 3 void f() int f() • međutim, metoda se može pozvati, a da se ignoriše povratna vrednost (pozivanje metode zbog sporednog efekta), ako povratna vrednost nije bitna • f() – koju metodu treba pozvati?
Primer 4 – preklapanje metoda class Drvo { int visina; Drvo() { System.out.println("Sadjenje mladice"); visina = 0; } Drvo(int i) { System.out.println("Pravimo novo Drvo koje je visoko " + i + " metara"); visina = i; }
Primer 4 - nastavak void info() { System.out.println("Drvo je visoko " + visina + " metara"); } void info(String s) { System.out.println(s + ": Drvo je visoko " + visina + " metara"); } public static void main(String[] args) { for(int i = 0; i < 5; i++) { Drvo d = new Drvo(i); d.info(); d.info("preklopljena metoda"); } new Drvo(); } }
Rezervisana reč this • Ukoliko u okviru metode postoji potreba da se koristi referenca na tekući objekat, onda se koristi rezervisana reč this • this se koristi samo unutar metode i vraća referencu na objekat za koji je metoda pozvana
Primer 5 public class Broj { int i; public Broj() { System.out.println("Ovo je default konstruktor"); } public Broj(int i) { System.out.println("Ovo je konstruktor koji inicijalizuje vrednost promenljive i na " + i); this.i = i; } public static void main (String[ ] args) { Broj b1 = new Broj(); b1.i = 20; System.out.println("b1.i = " + b1.i); Broj b2 = new Broj(5); System.out.println("b2.i = " + b2.i); } }
Primer 6 – dopuna klase Drvo class Drvo { int visina; String vrsta; Drvo() { visina = 0; vrsta = new String(“Listopadno”); } Drvo(int visina) { this.visina = visina; vrsta = new String(“Listopadno”); }
Primer 6 - nastavak Drvo(String vrsta) { visina = 0; this.vrsta = vrsta; } Drvo(int i, String s) { visina = i; vrsta = s; } }
Primer 7 – Kreirati klasu Pravougaonik • Pravougaonik čije su stranice paralene koordinatnim osama, određen je tačkama koje predstavljaju donje levo i gornje desno teme. • Pravougaonik možemo kreirati tako što ćemo zadati • Donje levo i gornje desno teme • Donje levo teme, širinu i visinu • Četiri cela broja koji redom predstavljaju: x i y koordinatu donjeg levog i gornjeg desnog temena
Primer 7 – pomoćna klasa Tacka class Tacka { int x; int y; Tacka(int x, int y){ this.x = x; this.y = y; } }
Primer 7 - skica class Pravougaonik{ Tacka donjeLevo = Tacka(0,0); Tacka gornjeDesno = Tacka(0,0); Pravougaonik(Tacka dL, Tacka gD) { … } Pravougaonik(TackadL, int sirina, int visina) { … } Pravougaonik(int x1, int y1, int x2, int y2) { … } void info(){ … } }