28
proleće/leto 2008

proleće/leto 2008

  • Upload
    bin

  • View
    42

  • Download
    0

Embed Size (px)

DESCRIPTION

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 ) - PowerPoint PPT Presentation

Citation preview

Page 1: proleće/leto 2008

proleće/leto 2008

Page 2: proleće/leto 2008

Dejan Živković Programski jezici 2

Šta je objekat?Šta je objekat?

Promenljive(podaci)

Metodi(ponašanje)

Page 3: proleće/leto 2008

Dejan Živković Programski jezici 3

Šta je objekat?Šta je objekat?

bela boja

upali

ugasi

promenibrzinu

koči

4 vrata

brzina 90 km/s

Auto

Page 4: proleće/leto 2008

Dejan Živković Programski jezici 4

Šta je objekat?Š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)

Page 5: proleće/leto 2008

Dejan Živković Programski jezici 5

Šta je objekat?Š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

Page 6: proleće/leto 2008

Dejan Živković Programski jezici 6

Šta je poruka?Šta je poruka?

Objekti komuniciraju slanjem poruka

Pera bmw

promeniBrzinu(3)

Page 7: proleće/leto 2008

Dejan Živković Programski jezici 7

Šta je poruka?Š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

Page 8: proleće/leto 2008

Dejan Živković Programski jezici 8

Šta je klasa?Š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

Page 9: proleće/leto 2008

Dejan Živković Programski jezici 9

Šta je klasa?Š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

Page 10: proleće/leto 2008

Dejan Živković Programski jezici 10

Šta je klasa?Šta je klasa?

U OOP se pišu klase, a objekti se ne opisuju nego se stvaraju na osnovu klasa

Instanca (primerak) klase = objekatStvaranje objekta = instanciranje

odgovarajuće klaseJava programi se sastoje isključivo od

klasa, pa se sve mora nalaziti unutar klasa (primer: Kuća.java)

Page 11: proleće/leto 2008

Dejan Živković Programski jezici 11

Šta je klasa?Šta je klasa?public class Kuća { private int brojSpratova; 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();

Page 12: proleće/leto 2008

Dejan Živković Programski jezici 12

Šta je klasa?Šta je klasa?

vila mojaKuća koliba

brojSpratova=3

boja= "bela"

adresa= " ... "

dozidajSprat()

brojSpratova=2

boja= "plava"

adresa= " ... "

dozidajSprat()

brojSpratova=1

boja= "siva"

adresa= " ... "

dozidajSprat()

Page 13: proleće/leto 2008

Dejan Živković Programski jezici 13

Šta je klasa?Š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

Page 14: proleće/leto 2008

Dejan Živković Programski jezici 14

Šta je nasleđivanje?Š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

Page 15: proleće/leto 2008

Dejan Živković Programski jezici 15

Šta je nasleđivanje?Šta je nasleđivanje?

Kuća

StambenaKuća PoslovnaKuća

Zgrada Soliter Dvorac

Page 16: proleće/leto 2008

Dejan Živković Programski jezici 16

Šta je nasleđivanje?Šta je nasleđivanje?public class StambenaKuća extends Kuća { private int brojStanova; ... public void okreči();}...StambenaKuća k1 = new StambenaKuća(...);StambenaKuća k2 = new StambenaKuća(...);

Page 17: proleće/leto 2008

Dejan Živković Programski jezici 17

Šta je nasleđivanje?Šta je nasleđivanje?k1

brojSpratova=5boja=

"žuta"adresa= " ... "dozidajSprat()

brojStanova=20

okreči()

k2

brojSpratova=10boja=

"zelena"adresa= " ... "dozidajSprat()

brojStanova=50

okreči()

Page 18: proleće/leto 2008

Dejan Živković Programski jezici 18

Šta je nasleđivanje?Š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

Page 19: proleće/leto 2008

Dejan Živković Programski jezici 19

PaketiPaketiKlase 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 klasaOsnovni paketi:

java.lang java.util java.io java.net java.awt java.applet

Page 20: proleće/leto 2008

Dejan Živković Programski jezici 20

PaketiPaketiJava platforma sadrži veliki broj klasa

koje su grupisane u pakete

Page 21: proleće/leto 2008

Dejan Živković Programski jezici 21

PaketiPaketi

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

Page 22: proleće/leto 2008

Dejan Živković Programski jezici 22

Korišćenje paketaKorišć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();

Page 23: proleće/leto 2008

Dejan Živković Programski jezici 23

Korišćenje paketaKorišć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(); ... }

Page 24: proleće/leto 2008

Dejan Živković Programski jezici 24

Korišćenje paketaKorišć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

Page 25: proleće/leto 2008

Dejan Živković Programski jezici 25

Pravljenje paketaPravljenje 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)

Page 26: proleće/leto 2008

Dejan Živković Programski jezici 26

Pravljenje paketaPravljenje paketa

package mojpaket; import java.util.*; class MojaKlasa { ... }

Datoteka MojaKlasa.java se mora nalaziti u direktorijumu mojpaket koji se pravi u korenskom direktorijumu programa

Prevođenje klase MojaKlasa se mora obaviti iz korenskog direktorijuma programa :

“korenski direktorijum”> javac mojpaket\MojaKlasa.java

Page 27: proleće/leto 2008

Dejan Živković Programski jezici 27

Struktura Java programaStruktura 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

Page 28: proleće/leto 2008

Dejan Živković Programski jezici 28

Struktura Java programaStruktura Java programa

javac MyProgram.java

javac Hat.java

...

java MyProgram