280 likes | 464 Views
Programski jezici. proleće/leto 2008. Šta je objekat?. Promenljive (podaci). Metodi (ponašanje). Šta je objekat?. Auto. bela boja. ugasi. 4 vrata. upali. koči. brzina 90 km/s. promeni brzinu. Šta je objekat?. Enkapsulacija (učaurivanje )
E N D
Programski jezici proleće/leto 2008
Šta je objekat? Promenljive (podaci) Metodi (ponašanje) Programski jezici
Šta je objekat? Auto bela boja ugasi 4 vrata upali koči brzina 90 km/s promeni brzinu Programski jezici
Šta je objekat? • Enkapsulacija (učaurivanje) • Podaci objekta su učaureni u centru objekta, a okružuju ih metodi koji ih skrivaju od drugih objekata • Pristup učaurenim podacima se vrši preko specijalnih metoda • Učaureni podaci su zaštićeni od neželjenih izmena spolja (izvan čaure) Programski jezici
Šta je objekat? • Prednosti enkapsulacije • Modularnost • Izvorni kod za jedan objekat se može pisati nezavisno od drugih objekata • Skrivanje informacija • Objekat ima javni interfejs koji drugi objekti mogu koristiti za komunikaciju sa njim. Privatne promenljive i metodi objekta se mogu promeniti bez uticaja na druge objekte Programski jezici
Šta je poruka? • Objekti komuniciraju slanjem poruka promeniBrzinu(3) bmw Pera Programski jezici
Šta je poruka? • Tri dela poruke • Objekat primalac poruke (bmw) • Ime metoda koji objekat primalac treba da izvrši (promeniBrzinu) • Dodatni parametri metoda koji su potrebni (3) • Poziv funkcije (procedure) kod proceduralnih jezika Programski jezici
Šta je klasa? • Klasa je opis objekata sa zajedničkim svojstvima • Klasa definiše šablon za stvaranje objekata za zajedničkim svojstvima • Klasa definiše atribute i ponašanja koje poseduju svi objekti napravljeni na osnovu klase Programski jezici
Šta je klasa? • Analogija • nacrt kuće na papiru = klasa • izgrađena kuća = objekat • na osnovu jednog nacrta kuće se može izgraditi više kuća = na osnovu jedne klase se može napraviti više objekata Programski jezici
Šta je klasa? • U OOP se pišu klase, a objekti se ne opisuju nego se stvaraju na osnovu klasa • Instanca (primerak) klase = objekat • Stvaranje objekta = instanciranje odgovarajuće klase • Java programi se sastoje isključivo od klasa, pa se sve mora nalaziti unutar klasa (primer: Kuća.java) Programski jezici
Šta je klasa? public class Kuća { private intbrojSpratova; private String boja; private String adresa; ... public void dozidajSprat(); } ... Kuća vila = new Kuća(...); Kuća mojaKuća = new Kuća(...); Kuća koliba = new Kuća(...); Vila.dozidajSprat(); Programski jezici
brojSpratova=3 brojSpratova=1 brojSpratova=2 boja= "bela" boja= "siva" boja= "plava" adresa= " ... " adresa= " ... " adresa= " ... " dozidajSprat() dozidajSprat() dozidajSprat() Šta je klasa? vila mojaKuća koliba Programski jezici
Šta je klasa? • Objektne (instancne) promenljive (polja): brojSpratova, boja, adresa • Objektni (instancni) metodi: dozidajSprat() • Svaki napravljeni objekat ima svoje kopije objektnih promenljivih • Objektni metodi se moraju pozivati uz objekat na koji se odnose • Klasne promenljive i metodi Programski jezici
Šta je nasleđivanje? • Način za formiranje novih klasa od postojećih • Nasleđivanjem se uspostavlja hijerarhijska relacija između srodnih klasa • Nova klasa proširuje postojeći klasu i nasleđuje sve atribute i ponašanja postojeće klase Programski jezici
Šta je nasleđivanje? Kuća PoslovnaKuća StambenaKuća Zgrada Soliter Dvorac Programski jezici
Šta je nasleđivanje? public class StambenaKuća extends Kuća { private intbrojStanova; ... public void okreči(); } ... StambenaKuća k1 = new StambenaKuća(...); StambenaKuća k2 = new StambenaKuća(...); Programski jezici
k1 brojSpratova=5 boja= "žuta" adresa= " ... " dozidajSprat() brojStanova=20 okreči() Šta je nasleđivanje? k2 brojSpratova=10 boja= "zelena" adresa= " ... " dozidajSprat() brojStanova=50 okreči() Programski jezici
Šta je nasleđivanje? • Terminologija • Bazna klasa — klasa koja se proširuje • Izvedena (proširena) klasa — nova klasa • Bazna klasa = natklasa, klasa-roditelj • Izvedena (proširena) klasa = potklasa, klasa-dete Programski jezici
java.lang java.util java.io java.net java.awt java.applet Paketi • Klase su organizovane po paketima, analogno odnosu datoteka i direktorijuma u okviru fajl-sistema • Paket je kolekcija klasa koje čine srodnu celinu (namenjenih jednoj vrsti posla) • Paketi čine biblioteke klasa • Osnovni paketi: Programski jezici
Paketi • Java platforma sadrži veliki broj klasa koje su grupisane u pakete Programski jezici
Paketi • Paketi olakšavaju nalaženje i korišćenje klasa • Paketi sprečavaju konflikte imena klasa, jer različiti paketi mogu da sadrže klase sa istim imenom • Paketi omogućavaju kontrolu pristupa klasama Programski jezici
Korišćenje paketa • Pri pisanju neke klase, mogu se jednostavno koristi samo klase iz istog paketa • Klase iz drugog paketa se mogu koristiti uz navođenje punog imena: java.util.Date v = new java.util.Date(); Programski jezici
Korišćenje paketa • Deklaracija import “uvozi” pojedine klase iz nekog paketa • Navodi se pre početka teksta klase import java.util.Date; class MojaKlasa { ... Date v = new Date(); ... } Programski jezici
Korišćenje paketa • Deklaracija import “uvozi” sve klase iz nekog paketa pomoću džoker-znaka * • Navodi se pre početka teksta klase import java.util.*; class MojaKlasa { ... Date v = new Date(); ... } • Paket java.lang se automatski uvozi u sve programe Programski jezici
Pravljenje paketa • Svaka klasa mora da pripada nekom paketu • Ako se ništa ne navede, klasa pripada podrazumevanom (anonimnom) paketu • Deklaracija package definiše paket kome pripada neka klasa • Navodi se na samom početku teksta klase (pre deklaracije import) Programski jezici
Pravljenje paketa package mojpaket; import java.util.*; class MojaKlasa { ... } • Datoteka MojaKlasa.javase mora nalaziti u direktorijumumojpaket koji se pravi u korenskom direktorijumu programa • Prevođenje klase MojaKlasa se mora obaviti iz korenskog direktorijumaprograma : “korenski direktorijum”>javac mojpaket\MojaKlasa.java Programski jezici
Struktura Java programa • Java program se sastoji od jedne ili više klasa • Izvorni kod svake klase se piše u posebnoj datoteci čije je ime isto kao ime klase • Ekstenzija datoteke Java izvornog koda mora biti .java Programski jezici
Struktura Java programa javac MyProgram.java ... javac Hat.java java MyProgram Programski jezici