1 / 26

proleće/leto 2009

Programski jezici. proleće/leto 2009. Metodi. Metod u Javi ≈ funkcija u C-u Metod je samostalni blok Java koda (deklaracije i naredbe) koji ima ime i koji se može koristiti (pozvati) u drugom delu koda Gotovi metodi i programerski definisani metodi Pozivanje metoda = slanje poruke. Metodi.

osma
Télécharger la présentation

proleće/leto 2009

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programski jezici proleće/leto 2009

  2. Metodi • Metod u Javi ≈ funkcija u C-u • Metod je samostalni blok Java koda (deklaracije i naredbe) koji ima ime i koji se može koristiti (pozvati) u drugom delu koda • Gotovi metodi i programerski definisani metodi • Pozivanje metoda = slanje poruke Programski jezici

  3. Metodi • Prednosti metoda • Manje delove programa (metode) je lakše napisati i testirati • Metodi se mogu nezavisno i paralelno pisati od strane više programera • Metodi se mogu više puta koristiti • Metodi smanjuju ukupnu veličinu programskog koda Programski jezici

  4. Metodi Java program (glavna klasa) main(...) ... metod1(); ... pozivi metoda metod1(...) metod2(); metod2(...) Programski jezici

  5. Metodi • Izvršavanje metoda main() metod1(...) metod2(...) ... metod2(); metod1(); ... Programski jezici

  6. Definisanje metoda • Format: modifikatori tip-rezultata imeMetoda (lista-parametara) //zaglavlje { //telo (niz naredbi) } • Primer: public static void main (String[] args) { //Naredbe ... } Programski jezici

  7. Definisanje metoda • modifikatori dodatno opisuju metod (ko može da ga koristi, da li je instancni ili klasni, da li je apstraktni ili ne, ...) • Modifikator pristupa određuje ko može da koristi (poziva) metod • public (sve klase) • private (samo klasa u kojoj je metod definisan) • protected (klasa u kojoj je metod definisan i izvedene klase) • nije navedeno (samo klase iz istog paketa) Programski jezici

  8. Definisanje metoda • tip-rezultata određuje tip vrednosti koju metod vraća kao rezultat • Metod može vratiti najviše jednu vrednost (objekat) • Ako metod ne vraća nijednu vrednost, tip rezultata je void • Ako metod vraća jednu vrednost, mora imati bar jednu naredbu oblika: return izraz Programski jezici

  9. Definisanje metoda • Naredba return izraz vraća rezultat izraza i kontrolu pozivajućoj metodi • Ukoliko je tip rezultata void, nareba return je opciona Programski jezici

  10. Definisanje metoda • imeMetoda je identifikator (po konvenciji, sve reči osim prve počinju velikim slovom) • lista-parametarasadrži nula ili više parova, razdvojenih zarezima • Parovi su promenljive i njihov tip • Parametri metoda su promenljive koje prihvataju vrednosti argumenata prosleđenih metodu u trenutku njegovog pozivanja Programski jezici

  11. Pozivanje metoda • Prilikom poziva metoda, na mesto formalnih parametara se navode stvarni argumenti • Kod navođenja formalnih parametara u definiciji metoda, za svaki parametar se mora navesti njegov tip, dok se prilikom poziva metoda navode samo stvarni argumenti, bez navođenja njihovog tipa Programski jezici

  12. Pozivanje metoda • Primer public boolean prviJeVeci(int a, int b){ if(a >= b) return true; else return false; } ... int x=20, y=10; ... prviJeVeci(17, 23) ... prviJeVeci(x, y) Programski jezici

  13. Pozivanje metoda • Objektni (instancni) metodi • Odnose se na pojedinačne objekte (instance ) i indirektno kao parametar imaju konkretni objekat klase u kojoj su objektni (instancni) metodi definisani • Pozivaju se samo preko odgovarajućeg konkretnog objekta korišćenjem tačka-notacije • Primer: Programski jezici

  14. public class Krug { private int x, y; // centar private double r; // poluprečnik public double obim() { return 2*Math.PI*r; } public double površina() { return Math.PI*r*r; } public boolean tačkaUKrugu(int a, int b) { double d; d = Math.sqrt((x-a)*(x-a) + (y-b)*(y-b)); if (d < r) return true; else return false; } Programski jezici

  15. public static void main (String[] args) { Krug k1 = new Krug(); k1.x = 4; k1.y = 4; k1.r = 5.2; Krug k2 = new Krug(); k2.x = 0; k2.y = 0; k2.r = 2.0; System.out.println("Povrsina kruga k1 je: " + k1.površina()); System.out.println("Obim kruga k2 je: " + k2.obim()); System.out.println("Tačka (20,30) je u krugu k1: " + k1.tačkaUKrugu(20,30)); } } Programski jezici

  16. Pozivanje metoda • Klasni (statički) metodi • Odnose se na celu klasu, a ne na pojedinačne objekte klase • Sadrže modifikator static • Pozivaju se preko imena klase korišćenjem tačka-notacije (može i kao objektni metodi, ali se ne preporučuje) • Primer: Programski jezici

  17. public class Krug { private int x, y; // centar private double r; // poluprečnik public double obim() { return 2*Math.PI*r; } public double površina() { return Math.PI*r*r; } public boolean tačkaUKrugu(int a, int b) { double d; d = Math.sqrt((x-a)*(x-a) + (y-b)*(y-b)); if (d < r) return true; else return false; } Programski jezici

  18. public static void verzija() { System.out.println("Verzija koda je 1.0"); } public static void main (String[] args) { Krug k1 = new Krug(); k1.x = 4; k1.y = 4; k1.r = 5.2; Krug k2 = new Krug(); k2.x = 0; k2.y = 0; k2.r = 2.0; Krug.verzija(); System.out.println("Povrsina kruga k1 je: " + k1.površina()); System.out.println("Obim kruga k2 je: " + k2.obim()); System.out.println("Tačka (20,30) je u krugu k1: " + k1.tačkaUKrugu(20,30)); } } Programski jezici

  19. Potpis metoda • Klasa može imati više metoda sa istim imenom, ali svaki metod mora imati različiti potpis koji se sastoji od: • Imena metoda • Redosleda, broja i tipa parametara • Primer: public void uradiNešto (int n, double x, boolean test) { // Naredbe ... } Programski jezici

  20. Potpis metoda • Potpis za uradiNešto: uradiNešto (int, double, boolean) • Drugi metod sa istim imenom: uradiNešto (String s) { // Naredbe ... } Programski jezici

  21. Preopterećeni metodi • Potpis dva metoda u klasi mora biti različit, kako bi kompajler mogao da odredi koji metod se poziva • Metodi sa istim imenom, ali različitim parametrima (različitim potpisom) se nazivaju preopterećeni (overloaded) • Primer: Programski jezici

  22. public class Knjiga { private String naslov; private String autor; private int brojStrana; private int godinaIzdanja; . . . public void prikažiKnjigu() { System.out.println("Autor: " + autor); System.out.println("Naslov: " + naslov); System.out.println("Broj strana: " + brojStrana); } public void prikažiKnjigu(boolean saGodIzd) { prikažiKnjigu(); if (saGodIzd) System.out.println("Godina izdanja: " + godinaIzdanja); } . . . } Programski jezici

  23. Oblast važenja imena • Deo teksta programa u kojem se može koristiti definisano ime • Pravilo: ime (identifikator) važi u bloku u kome je definisano Programski jezici

  24. Oblast važenja imena • Primer: public class IgraSaKartama { String pobednik; // globalna promenljiva (polje) ... void odigrajIgru() { String pobednik; // lokalna promenljiva // Ostale naredbe metoda ... } ... } Programski jezici

  25. Oblast važenja imena • Primer: for (int i = 0; i < n; i++) { // Telo petlje } if (i == n) // GREŠKA: ovde ne važi ime i System.out.println("Završene sve iteracije"); Programski jezici

  26. Oblast važenja imena • Primer: void neispravanMetod(int n) { int x; while (n > 0) { int x; // GREŠKA: ime x je već definisano ... } } Programski jezici

More Related