41
(OOP) Razvoj i nastanak programskog jezika Java Proizvod firme: “Sun Microsystems” 1991. OAK - namenjen mrežnom kućnom okruženju(J. Gosling) 1994. Usmerenje ka Internetu (današnja upotreba Jave) 1995. Java se lansira na SunWorld-u Netscape preuzima Javu Javne prezentacije na WEB-u IBM kupuje licencu Korišćenje Jave najavljuje čak i Microsoft 1996. Sun razvija JDK 1.0 1997. Pojavljuje se JDK 1.1, JavaBeans II konferencija o Javi sa 10000 učesnika Razne nagrade za uspešan proizvod 1999. Pojavljuje se JDK 1.2 (Java 2 SDK - Software Development Kit) 2000. Pojavljuje se JDK 1.3. 2002. Pojavljuje se JDK 1.4. 2004. Pojavljuje se JDK 1.5. (OOP) Karakteristike programskog jezika Java C/)C++( -objektno orijentisan jezik; (Smalltalk) Uključuje skupljač otpadaka; Pruža nadu za povezivanje različitih platformi; pogodan za mrežno okruženje Dobar za prelazak na moderan način programiranja; Ne može se očekivati da će zameniti Windows, kao što se pretendovalo; Omogućava Java Beans tehnologiju (Java modula za rešavanje konkretnog zadatka) Služi za kreiranje apleta i aplikacija; Kompajlersko interpretorski jezik (OOP) Mogućnosti jezika Java U ovom delu se ispituju raznovrsne mogućnosti koje obezbeđuje programski jezik Java, na taj način što će se pregledati različite vrste aplikacija razvijenih sa Javom. Naime, pregledaćemo nekoliko primera Java apleta koji su bili postavljeni na Web-u. Takođe ćemo ispitati i nekoliko primera Java aplikacije sa grafičkim korisničkim interfejsom (GUI ) i Java aplikacije iz komandne linije . Do kraja ovog

alas.matf.bg.ac.rsalas.matf.bg.ac.rs/~mm07167/podaci/OOP-Odgovori.doc · Web view(OOP) Razvoj i nastanak programskog jezika Java Proizvod firme: “Sun Microsystems” 1991. OAK -

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: alas.matf.bg.ac.rsalas.matf.bg.ac.rs/~mm07167/podaci/OOP-Odgovori.doc · Web view(OOP) Razvoj i nastanak programskog jezika Java Proizvod firme: “Sun Microsystems” 1991. OAK -

(OOP) Razvoj i nastanak programskog jezika JavaProizvod firme: “Sun Microsystems”1991. OAK - namenjen mrežnom kućnom okruženju(J. Gosling)1994. Usmerenje ka Internetu (današnja upotreba Jave)1995. Java se lansira na SunWorld-uNetscape preuzima JavuJavne prezentacije na WEB-uIBM kupuje licencuKorišćenje Jave najavljuje čak i Microsoft1996. Sun razvija JDK 1.0 1997. Pojavljuje se JDK 1.1, JavaBeansII konferencija o Javi sa 10000 učesnikaRazne nagrade za uspešan proizvod1999. Pojavljuje se JDK 1.2 (Java 2 SDK - Software Development Kit)2000. Pojavljuje se JDK 1.3.2002. Pojavljuje se JDK 1.4.2004. Pojavljuje se JDK 1.5.

(OOP) Karakteristike programskog jezika JavaC/)C++( -objektno orijentisan jezik; (Smalltalk)Uključuje skupljač otpadaka;Pruža nadu za povezivanje različitih platformi; pogodan za mrežno okruženjeDobar za prelazak na moderan način programiranja;Ne može se očekivati da će zameniti Windows, kao što se pretendovalo;Omogućava Java Beans tehnologiju(Java modula za rešavanje konkretnog zadatka)Služi za kreiranje apleta i aplikacija;Kompajlersko interpretorski jezik

(OOP) Mogućnosti jezika JavaU ovom delu se ispituju raznovrsne mogućnosti koje obezbeđuje programski jezik Java, na taj način što će se pregledati različite vrste aplikacija razvijenih sa Javom. Naime, pregledaćemo nekoliko primera Java apleta koji su bili postavljeni na Web-u. Takođe ćemo ispitati i nekoliko primera Java aplikacije sa grafičkim korisničkim interfejsom (GUI) i Java aplikacije iz komandne linije. Do kraja ovog dela, steći ćemo jasnu sliku o načinima korišćenja ovog jezika i načinima na koje Java menja svet računarstva.

(OOP) Tipovi Java aplikacija apleti (mini aplikacije) aplikacije - koriste se za razvoj portabilnih GUI aplikacija na svim platformama, isti kod se

moze koristit i za app i za aplet aplikacije iz komandne linije - razlikuju se od GUI app jer one koriste paket java.awt a

ove ne... biblioteke klasa-ja oformim sopstvenu klasu, pa u razl.projektima kreiram objekte iz

svoje biblioteke

Page 2: alas.matf.bg.ac.rsalas.matf.bg.ac.rs/~mm07167/podaci/OOP-Odgovori.doc · Web view(OOP) Razvoj i nastanak programskog jezika Java Proizvod firme: “Sun Microsystems” 1991. OAK -

Java serverske strane (JSP) - za rad preko interneta izvrsavanje programa se realizuje ne samo na klijentskoj vec i na serverskoj strani

(OOP) Java Development Kit (JDK)Razlog velike popularnosti jezika Java je, pored kvaliteta njenog dizajna, i činjenica da je uz Javu priključen (kao JDK) i bogat set paketa (u drugim jezicima biblioteka klasa). Ovi već oformljeni objekti omogućavaju brzo pokretanje pri radu sa Javom, iz dva razloga:

programer ne mora ponovo da razvija njihovu funkcionalnost. izvorni kod je svima dostupan, otvoren.znacajniji paketi-klase za razvoj apleta(AWT abstract Windows Toolkit)-klase za GUI dugmici, prozor, tekstfield-klase za mrezu, URLova, klijent serverske sokete-klase za razlicite tipove IO-klase za slikepomocne klase za datum, vektor

(OOP) Java kao kompajliran i interpretiran jezikJava je interpretirani jezik, sto znaci da se Java izvorni kod kompajlira u prenosivi bajt-kod, koji zahteva interpreter da bi se izvršio.

programer prvo kompajlira Java izvorni kod koriscenjem Java kompajlera u tzv.bajt-kod kreiran bajt-kod je binaran i arhitektonski neutralan i nije kompletan sve dok se ne interpretira od strane Java runtime okruzenja.S obzirom na to da java izvrsno okruzenje postoji posebno za svaku specificnu platformu zavrsni proizvod ce raditi na tojspeificnoj platformi Java izvrsni kod ostaja Java kod bez obzira na kojoj se platformi izvrsava Koriscenjem Jave se postize da samo jedan izvorni kod treba da se odrzava a program ce raditi na razlicitim platformama.Gubitak performansi je smanjen koriscenjem Just-in-time kompajlera.JIT kompajler prevodi Java kod u masinski kod za konkretnu platformu na kojoj se koristi pa Java ostaje portabilna. Zasto je kombinacija kompilacije i interpretacije pozitivna osobina? -obezbedjuje sigurnost i stabilnost Java okruzenje sadrzi element linker koji proverava podatke koji dolaze na masinu kako bi se uverila da oni ne sadrze delove koji bi mogli da ostete fajlove ili onesposobe rad sistema -ova kombinacija kompilacije i interpretacije razresava probleme neuklapanja verzija

(OOP) Java kao objektno orjentisan jezik

Page 3: alas.matf.bg.ac.rsalas.matf.bg.ac.rs/~mm07167/podaci/OOP-Odgovori.doc · Web view(OOP) Razvoj i nastanak programskog jezika Java Proizvod firme: “Sun Microsystems” 1991. OAK -

Java je objektno-orjentisan jezik (OOP jezik). Ona je, dakle, član familije jezika koji se fokusiraju na definisanje podataka kao objekata i metoda koji mogu biti primenjeni na te objekte.

Java i C++ dele mnoge od principa na kojima se zasnivaju – najveći broj njihovih razlika se odnosi na stil i na strukturu. Java (kao i drugi OOP jezici) opisuju interakciju između objekata.

Mnogi OOP jezici podržavaju višestruko nasleđivanje. Java je dizajnirana tako da podržava samo jednostruko nasleđivanje. Ovo znači da data klasa može naslediti samo jednu klasu.

Java dopušta i kreiranje totalno apstraktnih klasa, koje su poznate kao interfejsi. Interfejsi dopuštaju kreiranje metoda koji mogu biti podeljeni između različitih klasa, bez obzira na to kako ostale klase realizuju metode. Mada Java isključivo podržava jednostruko nasleđivanje, ona ipak dopušta da klasa implementira više od jednog interfejsa.

Svaka klasa, bilo apstraktna ili ne, definiše ponašanje objekta (objekat je elemenat, član, instanca klase) kroz skup metoda. Sav Java kod je podeljen u klase. Metodi mogu biti nasleđeni sa jedne klase u drugu, a na vrhu klasne hijerarhije se nalazi klasa nazvana Object. Klasa Object pripada paketu java.lang iz Java API-a.

Objekti mogu implementirati veći broj interfejsa. Java interfejsi umnogome liče na IDL (Interface Definition Language) interfejse.

Ovo dalje omogućava korišćenje CORBA (Common Object Request Broker Architecture) sistema objekata za građenje distribuisanog sistema objekata, tj. distribuisanih aplikacija.

U cilju održavanje jednostavnosti (a samim tim i efikasnosti) Jave, nisu baš svi elementi realizovani kao objekti. Logičke veličine (istina i laž), brojevi i drugi prosti tipovi nisu realizovani kao objekti.

Važno je zapamtiti da je Java striktno objektno orjentisana - ona jednostavno ne dopušta da se deklariše bilo šta što nije enkapsulirano (učaureno) u objekat.

Objektno-orjentisani dizajn je istovremeno i mehanizam koji omogućava lako i jednostavno uklapanje modula.

(OOP) Java virtuelna mašina Srce Jave je JVM (Java Virtual Machine). JVM je virtualni računar koji postoji samo u

memoriji. JVM dopušta da Java programi budu izvršavani na raznovrsnim platformama. Da bi Java programi mogli da rade na određenoj platformi, mora JVM da bude implementirana na toj platformi.

JVM je glavni razlog prenosivosti (portabilnosti) Jave, koji obezbeđuje dodatni nivo apstrakcije između kompajliranog Java programa i hardverske platforme i operativnog sistema koji se nalaze ispod.

JVM je vrlo mala kada se implementira u RAM-u. Takva mala veličina JVM omogućava da se Java koristi u raznovrsnim elektronskim uređajima. Ceo jezik Java je originalno razvijan tako da se na umu ima i kućna elektronika.

JVM se sastoji iz:java steka,java registara i java prostora Java stek-adresna duzina kod JVM je 32-bitna pa JVM moze adresirati do 4Gb.Svaki registar je

Page 4: alas.matf.bg.ac.rsalas.matf.bg.ac.rs/~mm07167/podaci/OOP-Odgovori.doc · Web view(OOP) Razvoj i nastanak programskog jezika Java Proizvod firme: “Sun Microsystems” 1991. OAK -

duzina 32 bita pa moze cuvati 32bitnu adresu.Stek,heap i prostor za metode su smestene u tih 4Gb Java registri -brojac(counter)-vodi racuna gde je stalo sa izvrsenjem programa vrh(optop)-pokazivac na vrh steka okvir(frame)-pokazivac na tekuce okruzenje promenjive(vars)-pokazivac na prvu lokalnu promenljivu u tekucem okruzenju -stek radi po principu FIFO,sirok je 32 bita Promenljive su niz 32bitnih promenljivih na koje pokazuje registar vars prostor je deo memorije iz koga se vrsi instanciranje i alokacija memorije Okruzenje u kojem se java program izvrsava sadrzi informacije o referencama na svaki objekat iz prostora i automatski oslobadja onaj deo memorije koji su zauzeli objekti na koje niko vise ne referise Sakupljac djubreta radi kao pozadinska nit i vrsi rasciscavanje tokom neaktivnosti

 

(OOP) Java API. Java Core API i drugi API-ji Java Application Programming Interface, ili Java API, je skup klasa koje je razvio Sun, za

korišćenje u jeziku Java. Java API je dizajniran da bi se pomoglo programeru u razvoju sopstvenih klasa, apleta i aplikacija.

Klase unutar Java API-ja su grupisane u pakete, pri čemu svaki paket može sadržavati više klasa i interfejsa. Nadalje, svaka od klasa može imati više osobina (eng. properties), više polja (eng. fields) i/ili metoda.

Iako je moguće programirati u Javi bez velikog znanja API-ja, treba naglasiti da svaka novorazvijena klasa zavisi od bar jedne klase iz API-ja (sa izuzetkom java.lang.Object koja je nadklasa svih ostalih klasa). Nadalje, pri razvoju sve složenijih programa, koji rade sa niskama, soketima i grafičkim interfejsom, postaje veoma značajno poznavanje objekata koje je Sun obezbedio.

Centralni (eng. core) API sadrži pakete sa objektima za koje se garantuje da su dostupni bez obzira na Java implementaciju: java.lang Paket java.lang se sastoji oid klasa koje su centralne za jezik Java. On obezbeđuje ne samo osnovne tipove podataka, kao što su Character i Integer, već takođe i obradu grešaka uz korišćenje klasa Throwable i Error. Nadalje, klase SecurityManager i System omogućuju programeru nivo kontrole nad Java sistemom za izvršavanje.java.io Paket java.io služi kao standardna ulazno/izlazna biblioteka za jezik Java. Ovaj paket obezbeđuje programeru mogućnost kreiranja i rukovanja sa tokovima (eng. streams) podataka na različite načine. Tu su obezbeđeni i jednostavni tipovi kao što je String i složeni kao što je StreamTokenizer. java.util Paket java.util sadrži veći broj korisnih klasa koje nisu mogle biti uklopljene u druge pakete. Među takvim klasama su:· klase koje omogućavaju rad sa datumima · klase koje omogućavaju strukturisanje podataka, kao što su Stack i Vector. java.net

Page 5: alas.matf.bg.ac.rsalas.matf.bg.ac.rs/~mm07167/podaci/OOP-Odgovori.doc · Web view(OOP) Razvoj i nastanak programskog jezika Java Proizvod firme: “Sun Microsystems” 1991. OAK -

Paket java.net čini jezik Java mrežno zasnovanim jezikom. On obezbeđuje sposobnost komunikacije sa udaljenim čvorovima, bilo preko soketa, bilo korišćenjem URL-ova. Na primer, korišćenjem ovog paketa programer može kreirati svoje sopstvene Telnet, Chat ili FTP klijente i/ili servere. java.awt Paket java.awt je još poznat pod imenom Java Abstract Window Toolkit (AWT). AWT sadrži ne samo klase, kao što je GridBagLayout, već i nekoliko konkretnih interaktivnih alata, kao što su Button i TextField. Još važnije je da klasa Graphics obezbeđuje bogatstvo grafičkih mogućnosti, uključujući i mogućnost crtanja raznih oblika i mogućnost prikaza slika. java.awt.image Paket java.awt.image je blisko povezan sa paketom java.awt. Ovaj paket se sastoji od alata koji su dizajnirani za rukovanje i manipulaciju slikama koje dolaze kroz mrežu. java.awt.peer Paket java.awt.peer je paket sa interfejsima koji služe kao posrednici između Java koda i računara na kome se taj kod izvršava java.applet Paket java.applet je najmanji paket u API-ju, ali je zbog Applet klase koja je definisana u njemu vrlo značajan. Klasa Applet sadrži mnogo korisnih metoda i ona je temeljna za sve aplete i istovremeno je u mogućnosti da obezbedi informacije o apletovom okruženju (kroz interfejs AppletContext). Java Enterprise API, Java Commerce API , Java Server API, Java Media API, Java Security API, Java Beans API, Java Embedded API

(OOP) Osnovni pojmovi objektno-orjentisanog programiranja Objekat - integralna celina podataka i procedura za rad sa njima. Zbog prisustva

procedura u objektima, objekti imaju mogućnost da samostalno deluju, tj. postaju dinamički.

Objektno-orijentisano programiranje - programska paradigma zasnovana na skupu objekata koji dejstvuju međusobno. Glavne obrade zasnivaju se na manipulisanju objektima.

Metod - funkcija koja je sastavni deo objekta, tj. postupak kojim se realizuje poruka upućena objektu.

Poruka - skup informacija koji se šalje objektu. Sastoji se iz adrese (objekta primaoca poruke) i saopštenja (kazuje {ta treba da se uradi).

Klasa - Skup objekata sa zajedničkim svojstvima (koji se ponašaju na isti način). Definiše šablon za kreiranje instanci .

Primerak (instanca) - konkretan objekat iz klase. Skup instanci sa skupom metoda kreira jednu klasu.

Klasa B je potklasa klase A ako su svi primerci klase B istovremeno i primerci klase A. Za klasu kažemo da je natklasa klase B. Potklase nastaju dodavanjem novih svojstava (metoda) postoje}oj klasi.

Nasleđivanje - mehanizam za kreiranje novih klasa iz postojećih. Nasleđivanjem se formiraju relacije između jedne i više drugih klasa.

Page 6: alas.matf.bg.ac.rsalas.matf.bg.ac.rs/~mm07167/podaci/OOP-Odgovori.doc · Web view(OOP) Razvoj i nastanak programskog jezika Java Proizvod firme: “Sun Microsystems” 1991. OAK -

Polimorfizam - Mogućnost primene istog metoda (operatora) na primerke različitih klasa.

(OOP) Primeri nasleđivanja

(OOP) Zašto je objektno-orijentisan koncept doživeo uspeh? Ponovna iskoristivost softvera. Pogodan za: analizu, projektovanje i programiranje. Najpogodniji za simuliranje događaja. Objašnjenje se delimično može naći kroz pogled istorijskog razvoja OOP.

1967: Dall i Simula 67. 70-tih godina: A. Kay i Smalltalk. Razvoj ostalih OO jezika.

(OOP) Java kao OO jezikObjektno-orijentisan sa HIJERARHIJSKOM strukturom klasa.

(OOP) InterfejsiINTERFEJS - skup imenovanih metoda i konstanti , kojinisu nasleđeni od natklasa, niti definisani u samoj klasi, akoji određuju neka dodatna svojstva klase.(slika)-Definise samo prototip metoda.-metode u interfejsu su uvek public i abstract-definise se kao klasa umesto class interface-implementiraju se u klasama-smesta u pakete

Page 7: alas.matf.bg.ac.rsalas.matf.bg.ac.rs/~mm07167/podaci/OOP-Odgovori.doc · Web view(OOP) Razvoj i nastanak programskog jezika Java Proizvod firme: “Sun Microsystems” 1991. OAK -

-nakon implemen.interfejsa u nekoj klasi njena potklasa nasledjuje sve metode i moze ih predefinisati

(OOP) Objekti u JaviObjekat je potpuno određen svojim atributima i ponašanjem.Atributi objekta - instancne promenljive. Klasom je definisan njihov tip, a za svaki

primerak, tj. instancu, instancna promenljiva ima konkretnu vrednost. Primeri: tacka (x,y, boja) automobil(broj sasije, broj motora, boja, broj sedi{ta)Ponašanje objekta određeno je metodima u klasi koji mogu dejstvovati na taj objekat. Primeri: Uzeti x-koordinatu, pomeriti tačku za dx, dy, … Startovati motor, promeniti brzinu, zaustaviti motor, …(OOP) Tipovi podataka u Javi

Tip podataka predstavlja jedan od osnovnih pojmova u programskim jezicima. Tipom podataka je određen skup entiteta i skup operacija nad tim entitetima. (Entitet je podatak ili neka celina podataka).U Javi se mogu razlikovati dve klase tipa podataka:

• primitivni i• referencni (objekat)

(OOP) Primitivni tip podataka• Primitivni tip može biti: aritmetički i logički.• Aritmetički tip može biti: celi i realni (floating point)• Celi tipovi su: byte, short, int, long i char. Operatori nad celim tipom su: poređenja,

aritmetički, uvećanja/smanjenja za 1, logički po bitovima.• Realni tip može biti: float i double. Zapisuju se prema standardu IEEE 754. (32-bitni i 64-

bitni). Sledeće operacije su definisane nad ovim tipom: poređenja, aritmetičke, uvećanja/umanjenja za 1.

• Logički tip (u oznaci: boolean) ima 2 vrednosti (true i false) i operacije: jednakosti i nejednakosti i logi~ke operacije.

(OOP) Referentni (objektni) tip podataka• Objekt - celina koju čine promenljive i metodi definisani u klasi objekta. Svaki objekat je

primerak (konkretizacija) neke klase. Tip objekta je određen klasom.Primer:

class Figura { ……} class Trougao extends Figura { …..} ………. Figura s; Figura f; Trougao t; ……..

• Specijalnu vrstu objekata čine stringovi. String-objekat ne sadrži NULL na kraju (kao u C-u).

(OOP) Elementarne konstrukcije jezika Java.

Page 8: alas.matf.bg.ac.rsalas.matf.bg.ac.rs/~mm07167/podaci/OOP-Odgovori.doc · Web view(OOP) Razvoj i nastanak programskog jezika Java Proizvod firme: “Sun Microsystems” 1991. OAK -

U elementarne konstrukcije (tokene) ubrajamo elemente jezika koje kompajler izdvaja kao nedeljive celine prilikom prevođenja programa. U elementarne konstrukcije spadaju:

• Identifikatori• Literali• Separatori• Operatori• Ključne reči• Komentari• Beline

(OOP) Identifikatori• Služe sa imenovanje stvari i programa. Nekoliko identifikatora se koristi u specijalne

svrhe - to su ključne reči.• Identifikator je niz jednog ili više Unicode znakova. Prvi mora biti slovo, _ (crta za

podvlačenje) ili $ (znak za dolar). Ostali mogu biti: slova, cifre, _ ili $.• Dužina nije ograničena.• Java kompajler može razlikovati identifikatore koje čovek ne može.Primeri: x, _prvi, az123, $i_ovo_je identifikator, janko, Petar, Prvi1_3.

(OOP) Ključne reči• To su identifikatori koji imaju specifično značenje u Javi. Ne mogu se koristiti kao imena

u programima.• To su engleske reči i ma ih 50.Primeri: boolean, break, do, return, while, …

(OOP) Literali• Termovi koji predstavljaju same sebe• Literal može biti: konstantna vrednost primitivnog tipa ili String-objekat.• Znači, može biti: celobrojni, realni, logički, znakovni i stringovni (niska-literal). • Celobrojni literali

o Mogu biti dekadni, oktalni i heksadekadni.o Dekadni ne počinju cifrom 0.o Oktalni počinje cifrom 0.o Heksadekadni počinje znacima: 0x ili 0X.o Celobrojni literal koji se završava slovom L ili l je tipa long. (Ako se želi potencirati

da je int, može iza stajati I ili i.) o PRIMERI: 123, 0, 063, 0XED123, 0L, 13242442422662l, 03535353L, 0x6da533l.

• Realni literali - konstantne vrednosti tipa float ili double. Mora sadržati jednu cifru i decimalnu tačku ili eksponent.

Realan broj je tipa float ako sadrži na kraju slovo F ili f. Ako nema slova (ili sadži slova d, tj. D), on je tipa double.Primeri: 25e4f, 1. E2f, .8373e+9f, 2.75f

Page 9: alas.matf.bg.ac.rsalas.matf.bg.ac.rs/~mm07167/podaci/OOP-Odgovori.doc · Web view(OOP) Razvoj i nastanak programskog jezika Java Proizvod firme: “Sun Microsystems” 1991. OAK -

23e4, 1.E2, .54544e3D, 24.5444, 24.2d• Logički literali

Postoje 2 logička literala: true i false. • Znakovni literal (karakter-literal) - konstantna vrednost tipa char, tj. neoznačena 16-

bitna veličina. Sastoji se od konkretnog znaka li kontrolne sekvence između apostrofa. PRIMERI: ‘t’, ‘\n’, ‘\\’, ‘\u142’

• String literal - sadrži znake između navodnika. PRIMERI:

“Zdravo Cedo”, “i ovo \n”, “Promenljiva 1 2 3 “ (OOP) Separatori. Beline. Operatori. Komentari.

Separatori Kao separatori javljaju se sledeći znaci: ( ) { } [ ] ; , .

BelineBeline čine specijalni znaci: space, tab, form feed…Ne vide se, a izazivaju neke efekte.

Operatori• Operator je token koji određuje operaciju nad podacima. U Javi se razlikuju

operatori za dodeljivanja i ostali.• Operatori dodeljivanja: = -= *= /= |= &= ^= += %= <<= >>= >>>=• Ostali: + - <= ^ ++ < * >= % - / != ? >> ! & = = : >> ~ | && >>>• Nema operator , (kao u C-u). Nema i nekih drugih koji postoje u C-u (za pristup

memoriji).

Komentari• Java podržava 3 stila komentara u programu.

– C-stil: / * Sve između ovih vrsta zagrada je komentar */– jednolinijske komentare:

//sve iza ovog u jednoj liniji je komentarPRIMER: i = 1; // Inicijalizacija brojača

– dokumentacioni komentar, koji počinje sa: /** a završava se sa */. Može da se iskoristi za automatsko generisanje dokumentacije, tj za pretvaranje u HTML-tekst..

PRIMERI: /** Ovde počinje Malo konfuzije Ovde se završava */

(OOP) Kompilacione jedinice-nju cini izvorni kod sastavljen od jedne ili vise klasa ili interfejsa.-kao komp.jedinice javljaju se app i apleti-paket je kolekcija odgovarajucih kompl.jedinica

U sastav kompilacione jedinice mogu ući: • package-direktiva (paketne direktive), • import-direktiva (uvozne direktive) i • deklaracije klasa ili interfejsa.

Page 10: alas.matf.bg.ac.rsalas.matf.bg.ac.rs/~mm07167/podaci/OOP-Odgovori.doc · Web view(OOP) Razvoj i nastanak programskog jezika Java Proizvod firme: “Sun Microsystems” 1991. OAK -

Svaka od navedenih komponenti može biti izostavljena!Bar jedna od navedenih komponenti mora se naći u kompilacionoj jedinici.

(OOP) Deklaracija klaseU deklaraciji klase pojavljuju se:

• Promenljive• Izrazi• Naredbe• Metodi• Objekti• …

To su gradivni elementi programskog jezika Java od kojih se kreiraju programi.(OOP) Promenljive

• lokacija u memoriji za zapis neke vrednosti ili pokazivač na objekat.U Javi postoje 3 vrste promenljivih: instancne, klasne i lokalne.Svaku promenljivu karakterišu: ime, tip i vrednost.Ime promenljive je identifikator.Tip promenljive je jedan od nabrojanih tipova.Promenljiva sadrži vrednost ili je pokazivač na objekat. Ako sadrži vrednost, ta vrednost je literal primitivnog tipa.Svaka promenljiva mora biti deklarisana pomoću naredbe za deklaraciju promenljivih. Prilikom deklarisanja određuje se tip promenljive. Pored određivanja tipa, naredbom za deklaraciju mogu biti zadate i početne vrednosti promenljivih.Lokalne promenljive moraju imati početnu vrednost (inače se javlja greška pri prevođenju). Instancne i klasne - ne moraju. Ako nemaju, podrazumevane vrednosti su:null -instancna, 0-numerička, ‘\0’ - znakovna, false – logička

(OOP) IzraziIzraz - se koristi da:

donese (iz memorije) izračuna smesti (u memoriju)

vrednost.Izraz čine operandi razdvojeni operatorima i separatorima.Kao operandi u izrazu, pojavljuju se: literali, promenljive, ključne reči i drugi izrazi.Operatori su niske sastavljene od specijalnih znaka ili slova.Separatori su specijalni znaci koji se koriste za razdvajanje pojedinih komponenti izraza.

(OOP) Naredbe• Naredba - konstrukcija pomoću koje se kontroli{e tok programa i odvijanje operacija u

Javi. Naredbe se međusobno odvajaju ; (tačkom-zapetom).• Naredba deklarisanja promenljivih sastoji se iz navođenja tipa i spiska promenljivih

razdvojenih zapetama.

Page 11: alas.matf.bg.ac.rsalas.matf.bg.ac.rs/~mm07167/podaci/OOP-Odgovori.doc · Web view(OOP) Razvoj i nastanak programskog jezika Java Proizvod firme: “Sun Microsystems” 1991. OAK -

Primer: int n; double x, y, z;• Naredba dodele se zasniva na operatorima dodele.Primeri: x=y; a=b=c=3.0; x += 2; a *= 2+y;• Naredba prikazivanja (štampanja) stringa na standardnoj izlaznoj jedinici ima jedan od

oblika :System.out.print(string); /* Bez prelaska u novi red */System.out.println(string); /* Sa prelaskom u novi red nakon

stampanja stringa */• Blok (sastavna naredba) -skup naredbi između velikih zagrada. Može stajati svuda gde

stoji prosta naredba.Primer: int a=20; { x.boja = “crvena”; n++; System.out.println(“Vrednost za n je”+n); }

(OOP) MetodiMetodi se pojavljuju telu klase. Oni sadrže deklaracije lokalnih promenljivih i druge Java-naredbe koje se izvršavaju pri pozivu metoda.Broj argumenata u metodu je uvek je fiksiran i navodi se u zagradama iza imena metoda. (Broj argumenata može biti 0.) Prilikom deklaracije metoda u klasi, navodi se tip argumenata. Pri pozivu metoda navode se stvarni argumenti. PRIMER: class Prva { ……… int duzinaVektora(int x, int y) { …….. } …………………… primerak.duzinaVektora(10, 20);………………..

(OOP) Instancne promenljive i metodiKomponente objekta su: instancne promenljive i metodi. Komponentama objekta pristupa se preko svemoćne tačka-notacije(a) Pristup promenljivim primerka: prviObjekt.prom; prviObjekt.prom.stanje; prviObjekat.prom.stanje = true;

Page 12: alas.matf.bg.ac.rsalas.matf.bg.ac.rs/~mm07167/podaci/OOP-Odgovori.doc · Web view(OOP) Razvoj i nastanak programskog jezika Java Proizvod firme: “Sun Microsystems” 1991. OAK -

(b) Pristup metodima: prviObjekat.stampajMe(); prviObjekat.uzmiIme(); prvi objekat.postaviVelicinu(20); prviObjekat.prom.metod3(arg1, arg2, arg3); // pozvan preko promen. prviObjekat.getClass().getName(); // metod iz metoda

(OOP) Klasne promenljive i metodiclass ClanPorodice { static String prezime=“Smoric”; // klasna promenljiva int uzrast; // Instancna promenljiva. String ime; // Instancna promenljiva ………………… ClanPorodice otac = new ClanPorodice(); ClanPorodice sin = new ClanPorodice(); …………………} Za pristup klasnoj promenljivoj može se koristiti ime klase ili ime neke instance klase.Klasni metodi

Odnose se na celu klasu, a ne na instance. Prepoznaju se po ključnoj reči static. Pozivanje klasnih metoda vrši se pomoću tačka-notacije i to na 2 načina: (a) pomoću imena klase; (b) pomoću instanci te klase;

(OOP) Reference na objekteKada se kreira objekat, promenljiva kojoj se dodeljuje predstavlja pokazivač (referencu) na taj objekat. Pri prenosu u metod, prenose se reference, a ne sam objekat. (Obrnuto važi za primitivni tip. Tu promenljiva sadrži podatak i prenos u metod se vrši po vrednosti.)

(OOP) Konvertovanje objekata i primitivnih tipovaMože se govoriti o:(a) konvertovanju primitivnih tipova u primitivne (imetipa) vrednost (int)(x/y);(b) konvertovanju objekata u objekte Moguće je samo kod klasa povezanih nasleđivanjem. (imeklase) objekat Primer:

Vozilo x; Kamion y; y = new Kamion(); x= (Vozilo) y;(c ) konvertovanju primitivnih tipova u objekte i obrnuto. U principu, nije moguće. U paketu java.lang postoje klase: Integer, Float, Boolean, …

Page 13: alas.matf.bg.ac.rsalas.matf.bg.ac.rs/~mm07167/podaci/OOP-Odgovori.doc · Web view(OOP) Razvoj i nastanak programskog jezika Java Proizvod firme: “Sun Microsystems” 1991. OAK -

Integer ceoObj= new Integer(45); int ceo = ceoObj.intValue();

(OOP) Poređenje objekata. Određivanje klase objekta i pripadnosti objekta datoj klasi.Poređenje objekata Moguće je primenjivati 2 operatora za poređenje: = = != Ne postoji mogućnost preopterećenja operatora u Javi. Određivanje klase objekta String ime = objekat.getClass().getName();Pripadnost objekta klasi “bilo sta” instanceof String // true Point tacka = new Point(10,10); tacka instanceof String // false

(OOP) Definicija klaseclass NovaKlasa { ……….. } ili class NovaKlasa extends NadKlasa { ………….. }

(OOP) Definicija promenljivih (polja)Promenljive mogu biti: instancne, klasne, finalne (konstante), …Definicija i uloga instancnih promenljivih class Knjiga extends PrimerakBibloteke { String naslov; int brojStrana; String izdavac; ……………….. }Definicija i uloga klasne promenljive Karakteriše ih ključna reč static u deklaraciji.

static int kolicina; static final float PI = 3.141592; static String naziv= “Desno”;

Definicija i uloga konstante Konstanta je promenljiva čija vrednost se ne može menjati. Definiše se pomoću ključne reči: final.Primeri: final float STOPA = 2.3; final boolean NETACNO = false; final int brojStrana = 200;

(OOP) Promenljiva this

Page 14: alas.matf.bg.ac.rsalas.matf.bg.ac.rs/~mm07167/podaci/OOP-Odgovori.doc · Web view(OOP) Razvoj i nastanak programskog jezika Java Proizvod firme: “Sun Microsystems” 1991. OAK -

Ključna reč this koristi se u metodima da označi objekat na koji se metod primenjuje. Dakle, this je referenca na objekat koji prima poruku.Primer1: public void brisi(){

this.x =0; this.y=0;

}Ovde se ključna reč this može izostaviti.Primer2: public void pomerii(double x, double y){

this.x =x; this.y=y;

}Ovde je ključna reč this neophodna da podvuče razliku između instancnih promenljivih i parametara metoda.

Primeri u kojima se koristi ključna reč this: t = this.a; // a -instancna promenljiva tekućeg objekta

this.prvimetod(this); // poziva se metod return this; //vraća se tekući objekt iz metoda

U nekim od navedenih slučajeva može se izostaviti: t = a; prviMetod(this);

U nekima ne može: return this;

(OOP) Opseg važenja promenljivihOpseg važenja promenljive je deo programa u kojem ime promenljive može da se koristi. U načelu, opseg važnosti promenljive je u blok u kojem je definisana od mesta gde je definisana. Primer: { int a=1; //ovde se može pozivati a, ali ne i b! {

//ovde se može pozivati a, ali ne jos b! int b=2;

// ovde se mogu pozivati a i b! } // ovde se može pozivati a, ali ne i b! } // ovde se ne mogu koristiti niti a, niti b!

Page 15: alas.matf.bg.ac.rsalas.matf.bg.ac.rs/~mm07167/podaci/OOP-Odgovori.doc · Web view(OOP) Razvoj i nastanak programskog jezika Java Proizvod firme: “Sun Microsystems” 1991. OAK -

Međutim, isto ime se može upotrebiti i u nekom unutrašnjem bloku. Primer:class Opseg{ int n, probna = 10; void stampaProbnu() { int probna = 30; System.out.println(“Lokalna probna = “+probna); } n=probna;}Da bismo u metodu stampProbnu() pristupili instancnoj promenljivoj probna, treba da napišemo: this.probna

(OOP) Definicija i upotreba metodaMetod, u definiciji klase, je imenovani samostalni blok koda koji obično operiše nad promenljivima koje se pojavljuju u definiciji klase. Metodi mogu biti instancni (metod primerka) i klasni (statički).Klasni metodi se ne mogu odnositi na instancne promenljive. (Ne mora postojati ni jedna instanca, a metod se može koristiti!)Metod main(String args[]), koji je neophodan u aplikacijama, je uvek klasni. (Pre njegovog startovanja ne postoji ni jedna instanca!)Ne pravi se kopija metoda za svaku instancu, već se instancni metod jedanput definiše u klasi za sve instance.Metod je samostalni blok koda koji ima ime i svojstvo višestruke upotrebljivosti. Metodi omogućavaju da se dugačak kod razbije u manje celine i na taj način doprinose preglednosti koda. Manje celine u programima često se nazivaju moduli. Kažemo da metodi omogućavaju modularno programiranje.Metod može, ali ne mora vratiti vrednost. Ako vraća vrednost, metod se obično poziva u izrazu. Ako metod ne vraća vrednost, njegov povratni tip je void.Osnovna struktura metoda:povratni- tip imeMetoda(arg1, arg2,…,argn) {//kod metoda}Da bi metod vratio vrednost, mora imati bar jednu naredbu oblika return izrazIme metoda zajedno sa tipom i redosledom parametara čini potpis metoda. Potpis dva metoda u klasi mora biti različit, kako bi kompajler mogao da odredi koji metod se poziva.povratni-tip imeMetoda(arg1, arg2,…,argn){ // Kod metoda

Page 16: alas.matf.bg.ac.rsalas.matf.bg.ac.rs/~mm07167/podaci/OOP-Odgovori.doc · Web view(OOP) Razvoj i nastanak programskog jezika Java Proizvod firme: “Sun Microsystems” 1991. OAK -

} Prilikom poziva metoda, na mesto formalnih argumenata (parametara), navode se stvarni argumenti. Kod navođenja formalnih argumenata, za svaki argumnet mora se navesti tip, dok se prilikom poziva metoda, navode samo stvarni argumenti, bez navođenja njihovog tipa.U metodu se mogu koristiti 4 potencijalna izvora podataka:

• Argumenti prosleđeni metodu,• Instancne i klasne promenljive,• Lokalne promenljive, definisane u telu metoda i• Vrednosti drugih metoda koji su pozvani u tekućem.

(OOP) Preopterećenje metodaDefinisanje metoda sa istim imenom, ali različitim parametrima (sa različitim potpisom!) naziva se preopterećenje metoda

Primer: class Pravougaonik { int x1=0; int x2 = 0 int y1 = 0; int y2 = 0;

Pravougaonik gradi(int x1, int y1, int x2, int y2) { this.x1 = x1; this.y1 = y1; this.x2 = x2; this.y2 = y2; return this; }Pravougaonik gradi (Point goreLevo, Point doleDesno) { x1 = goreLevo.x; y1= goreLevo.y; x2 = doleDesno.x; y2 = doleDesno.y; return this;}Pravougaonik gradi (Point goreLevo, int l, int h){ x1 = goreLevo.x; y1 = goreLevo.y; x2 = goreLevo.x + l; y2 = goreLevo.y + h; return this; }///

Page 17: alas.matf.bg.ac.rsalas.matf.bg.ac.rs/~mm07167/podaci/OOP-Odgovori.doc · Web view(OOP) Razvoj i nastanak programskog jezika Java Proizvod firme: “Sun Microsystems” 1991. OAK -

void printPrav() { System.out.println(“Pravougaonik :[“(+x1+”,”+y1+ ”) , (”+x2+”,”+y2+”)]”);}public static void main (String args[]){ Pravougaonik p = new Pravougaonik(); p.gradi(10,20, 30,40); p.printPrav();

p.gradi(new Point(10,10), new Point(30,30)); p.printPrav(); p.gradi (new Point (10,10), 20, 30); p.printPrav(); }}

(OOP) KonstruktoriPrilikom kreiranja konkretne instance neke klase (preko operatora new), uvek se poziva konstruktor te klase. Konstruktor metod sami definišemo. Ukoliko ga nismo definisali, kompajler poziva podrazumevani konstruktor, koji inicijalizuje instancne i klasne promenljive na podrazumevane vrednosti.Konstruktor

• nikad ne vraća vrednost (za njega se nikad ne navodi povratni tip)• uvek ima isto ime kao i klasa.

• Konstruktori mogu biti preopterećeni, isto kao i ostali metodi.• Ako postoji dodatni konstruktor (koji ima neke nove osobine),u njemu se može pozvati

već postojeći sa:• this(arg1, arg2, …);

Primer: class Knjiga { String autor; String maslov; int brojStrana; Knjiga(String a, String n, int bs) { autor = a; naslov = n; brojStrana = bs; } void stampaPod(){ System.out.println(“Autor: ”+autor); System.out.println(“Naslov: ”+naslov); System.out.println(“Bro strana: ”+brojStrana);

Page 18: alas.matf.bg.ac.rsalas.matf.bg.ac.rs/~mm07167/podaci/OOP-Odgovori.doc · Web view(OOP) Razvoj i nastanak programskog jezika Java Proizvod firme: “Sun Microsystems” 1991. OAK -

} public static void main(String args[]){ Knjiga jedina; jedina = new Knjiga(“Gospodjica”,”Ivo Andric”, 257); jedina.stampPod(); } }

(OOP) Prevazilaženje metodaProces definisanja metoda u potklasi koji ima isto ime kao i metod u natklasi naziva se prevazilaženje metoda.Pozivanje metoda iz natklase (koji je predefinisan u potklasi) realizuje se korišćenje ključne reči super.Primer: void mojMetod( int x, int y){ // neka naredbe super.mojMetod(x,y); // jos naredbi }

(OOP) Prevazilaženje konstruktoraU principu ne može biti izvršeno prevazilaženje konstruktor-metoda jer ima isto ime kao klasa u kojoj se nalazi. Konstruktor iz natklase može se pozvati samo preko ključne reči super. super(arg1, arg2, …)Primer: import java.awt.Point; class MojaTacka extends Point { String ime; MojaTacka (int x, int y, String ime){ super(x,y); this.ime = ime; } }

(OOP) FinalizatorOvaj metod se poziva pri oslobađanju memorije. Ne{to suprotno konstruktor metodu. Pomaže skupljaču otpadaka.Poziva se sa: finalize().Može se prevazići u sopstvenoj klasi sa: protected void finalize() { ……}Nije neophodno njegovo korišćenje.

Page 19: alas.matf.bg.ac.rsalas.matf.bg.ac.rs/~mm07167/podaci/OOP-Odgovori.doc · Web view(OOP) Razvoj i nastanak programskog jezika Java Proizvod firme: “Sun Microsystems” 1991. OAK -

(OOP) Rekurzija u metodimaJava omogućava rekurzivne pozive. Realizuju se tako što metod poziva samoga sebe.

(OOP) Prevođenje objekta u stringPonekad je pogodno napraviti string reprezentaciju objekta, zbog jednostavnog tekstualnog prikaza. Za te svrhe treba prevazići metod public String toString(){ …. }

(OOP) Modifikatori public, package, protected i private1. public - omogućava vidljivost promenljive (ili metoda u svim klasama (čak iz različitih

paketa). 2. package -služi za sužavanje vidljivosti promenljivih i metoda. Karakteriše ga

nepotrebnost navođenja modifajera. To je podrazumevani nivo zaštite. Ako se poku{a pristup elementima iz drugih paketa, nastaje gre{ka pri kompajliranju.

3. protected - sledeći nivo vidljivosti. Reguliše odnsos između klasa i njenih potklasa (trenutnih i budućih). Ovim se saopštava da je dozvoljeno korišćenje metoda i promenljivih samo od strane klasa istog paketa ili potklasa izvan paketa (ako klasa u paketu ima potklase izvan paketa).

4. private - najviši nivo zaštite. Metodi i promenljive sa ovim modifajerom ne mogu biti vidjeni ni iz jedne druge klase osim one u kojoj su definisani (čak ni iz potklasa).

(OOP) Modifikatori static, final i abstractOvi modifajeri utiču na promenljive i metode modifikujući njihovo značenje.staitic modifajer i njegovo korišćenje kod klasnih promenljivih i metoda. final - modifajer kada se primeni na klase, ona ne može imati potklase; kada se primeni na promenljive, one su konstante; kada se primenina metod, on ne može biti predefinisan u potklasi. abstract -modifajer. Koristi se za definisanje apstraktnih klasa i metoda. Klasa je apstraktna ako nema konkretnih objekata, ve} slu`i za obezbe|ivanje informacija za potklase (koje mogu imati objekte).

(OOP) Apstraktne klase i metodiApstraktne klase i metode karakterise ključna reč: abstract.Klasa mora biti apstraktna ako sadrži bar jedan apstraktni metod.Klasa može biti apstraktna ako ne sadrži ni jedan apstraktni metod.Apstraktne klase služe za objedinjavanje svojstva nekih konkretnih klasa. Instanca konkretne klase može da koristi neapstraktne metode apstraktne nadklase, koji nisu predefinisina u konkretnim klasama. Ona može biti deklarisana kao instanca apstraktne klase. Međutim, ona može biti kreirana samo pomoću konstruktora konkretne klase.

(OOP) Aplikacija i main-metodSvaka aplikacija se sastoji iz određenog broja klasa i obaveznog metoda main.Telo main-metoda ima oblik: Ime Ima niz argumenta tipa String

Page 20: alas.matf.bg.ac.rsalas.matf.bg.ac.rs/~mm07167/podaci/OOP-Odgovori.doc · Web view(OOP) Razvoj i nastanak programskog jezika Java Proizvod firme: “Sun Microsystems” 1991. OAK -

public static void main (String args[]) { ….}javni klasni ne vraća vrednost U Java-aplikaciju se mogu uneti argumenti sa komandne linije.Svi argumenti su tipa String i prihvataju se preko niza args! C:> java MojaAplikacija prvi 3 5.34 C:> java Prvi Ovo su argumenti C:> java Prvi “Ovo su argumenti”Primer nekorektnog korišćenja argumenata

class SrednjaVred{ public static void main (String args[]){ int suma; for (int i=0; i<args.lenghth; i++){ sum += args[i]; } System.out.println(“Suma je: “, suma); System.out.println (“srednja vrednost je: “+ (float) suma/args.length); }} Ovo ne može ovako da funkcioniše zbog toga što su argumenti tipa String. Mora se izmeniti naredba za sabiranje u: sum += Integer.parseInt(args[i]);

(OOP) NizoviNiz - celina koju čini kolekcija podataka istog tipa. To je objekat sa kojim se operiše kao i sa drugim objektima.Sastoji se iz elemenata istog tipa (primitivnog ili referentnog).Deklarisanje nizova (postoje 2 načina): Primeri: int pozicija[]; String niska[]; Knjiga naslov[]; // Iste deklaracije na drugi način int [] pozicija; String [] niska; Knjiga [] naslovKreiranje nizova Postoje 2 načina: (1) pomoću operatora new, (2) nabrajanjem članovaPrimeri: Point [] tacke = new Point[20]; // prvi nacin int [] brojac = new int[100]; // prvi nacin

Page 21: alas.matf.bg.ac.rsalas.matf.bg.ac.rs/~mm07167/podaci/OOP-Odgovori.doc · Web view(OOP) Razvoj i nastanak programskog jezika Java Proizvod firme: “Sun Microsystems” 1991. OAK -

// Sledi 2. nacin kreiranja String [] godDoba; godDoba ={“prolece”, “leto”, “jesen”, “zima”}; int celi[] = { 23, 46, -123, 17, 36, -12};Pristup članovima niza Numerisanje članova niza uvek počinje od 0. Članovima niza pristupamo pomoću: ImeNiza[indeks] ImeNiza - ime koje se pojavljuje u deklaraciji indeks – celobrojni literal ili izraz

(OOP) Višedimenzionalni nizoviVišedimenzionalni nizovi su nizovi nizova.Rad sa višedimenzionalnim nizovimaDeklaracija se vrši slično kao kod jednodimenzionalnih nizova: int dvo [][] ={{1,2,5}, {6,7,8}}; float tro [][][]; Vozilo[] yugo= new Vozilo[10]; int [][] mat; Kreiranje se vrši pomoću operatora new ili navođenjem članova niza kao u prvoj naredbi. int mat = new int[10][20]; float tro = new float[10][8][20];Pristup članovima višedimenzionalnih nizova se vrši isto kao članovima jednodimenzionalnih. mat[0][3] = 5; x= mat[7][15]; tro[0][0][0] =1; yugo[4] = new Vozilo();

(OOP) BlokBlok je niz naredbi ograđen vitičastim zagradama.

Primer: void metod1() { int k=30; { int n =10; System.out.println(“k = “+k); System.out.println(“n = “+n); } }Promenljiva n je lokalna i nije vidljiva izvan unutrašnjeg bloka.

(OOP) Upravljačke strukture grananjaif-naredba Ima jedan od oblika:

• if (uslov) naredba ;• if (uslov) naredba; else naredba;• Umesto if-naredbe može se upotrebiti operator ? : • (uslov) ? then-grana : else-grana

switch-naredba

Page 22: alas.matf.bg.ac.rsalas.matf.bg.ac.rs/~mm07167/podaci/OOP-Odgovori.doc · Web view(OOP) Razvoj i nastanak programskog jezika Java Proizvod firme: “Sun Microsystems” 1991. OAK -

Umesto: if (oper = =‘+’) sabrati(arg1, arg2); else if (oper = = ‘-’) oduzeti (arg1, arg2); else if (oper = = ‘*’) pomnoziti(arg1,arg2); ……………………preglednije je koristiti sledeću naredbu: switch(test) { case vrednost1: Rezultat1; break; case vrednost2: Rezultat2; break; …… default: PodrazumevaniRezultat; // opciono }

(OOP) Cikličke upravljačke strukturefor-petlja Ima oblik: for (inicijalizacija; test; izmena) naredbaBilo koja komponenta for-naredbe može biti izostavljena, ali simbol ; ne može biti izostavljen.Primeri: for (i=0; i<niz.length; i++) niz[i]=0; for (int i=0; i<100; i += 2) { a[i]=i+1; b[i]=3; }

while-petlja (petlja sa preduslovom)Ima oblik: while (uslov) naredbaPrimer: int brojac = 0; while (brojac < 10) { f = x-brojac; brojac++; }

Page 23: alas.matf.bg.ac.rsalas.matf.bg.ac.rs/~mm07167/podaci/OOP-Odgovori.doc · Web view(OOP) Razvoj i nastanak programskog jezika Java Proizvod firme: “Sun Microsystems” 1991. OAK -

do-while petlja (petlja sa postuslovom) Ima oblik: do {Naredbe} while (uslov);Primer: int k = 0; do { System.out.println (“k = “+k); k++; } while (k<=10);

(OOP) Upravljačke naredbe break i continuebreak-naredba Služi za izlaz iz ciklusa (prekid toka) Primeri: int brojac =0; while (brojac <niz.length) { if(niz[brojac]= =0) { break; } vektor[brojac] = niz[brojac++]; }

continue-naredba Služi za nastavljanje ciklusa (toka programa)br1 = 0; br2 = 0; while (br1 < niz.length) { if (niz[br1] = = 0) continue; vektor[br2++]=niz[br1++]; }

Obe naredbe (break i continue) mogu imati labele (identifikator koji mora postojati negde u programu iza kojeg sledi simbol: “:” pocetak: for (int i = 0; i < 10; i++) { while ( k < 40) { if (i*k= =100) break pocetak; ……………. } }

Page 24: alas.matf.bg.ac.rsalas.matf.bg.ac.rs/~mm07167/podaci/OOP-Odgovori.doc · Web view(OOP) Razvoj i nastanak programskog jezika Java Proizvod firme: “Sun Microsystems” 1991. OAK -

(OOP) Neki pojmovi u vezi sa WWW Server - program na nekom računaru mreže koji čeka da se web-čitač spoji sa njim i

napravi neki zahtev (obično za nekom datotekom). HTTP (Hyper Text Transfer Protocol) - specijalni “jezik” za prenos hipertekst

dokumenata. CGI (Common Gateway Interface) - načina za pokretanje programa na WEB-serveru

preko čitača korisnika. Omogu}ava interaktivnost izme|u korisnika i servera. CGI-skript -Program pokrenut preko web-čitača, a koji se izvršava na serveru.

Omogućava: pretraživanje baza podataka na serveru, prihvatanje komentara korisnika, anketiranje, kupovinu ...

Dinamički HTML - jezik za opis prezentacija koje omogućavaju nekakav vid interaktivnosti.Podršku dinamičkom HTML-u pružaju: Client pull, Server push, JavaScript, Java (preko apleta), VB Script , ActiveX, …

JavaScript - uveden od strane Netscape-a (verzija 2.0). (Prihvaćen u MS Explorer-u 3.0). Služi za pisanje skriptova. Skriptovi se uključuju u HTML-dokument i interpretiraju se od strane Web-čitača. Skriptovi se uključuju pomoću oznake:<SCRIPT Language = ‘jezik’, SRC=URL> ….</SCRIPT>Umesto ‘jezik’, piše se: “JavaScript”

(OOP) Poređenje jezika Java i JavaScriptJava1.Prevodi se na serveru. Aplet se izvršava na klijentu2.OO-jezik.3. Podržava: objekte, klase, nasledjivanje.4. Aplet odvojen od HTML-dokumenta.5. Promenljive se moraju deklarisati.6. Statičko vezivanje (reference objekata moraju postojati za vreme prevođenja)7.Siguran. Ne može da piše na hard-disk korisnika.

JavaScript1. Interpretira se od strane klijenta web-čitača2. OO-jezik.3. Postoje ugrađeni objekti.4. Integrisan u HTML-dokument5. Promenljive se ne moraju deklarisati.6. Dinamičko vezivanje referenci (objekti se povezuju u vreme izvršavanja)7. Siguran. Ne može da piše na hard-disk korisnika.

(OOP) Rad sa apletima u JaviOmogućavaju da Web postane dinamički.Web-čitač obezbeđuje: prozor, rukovanje događajem, grafičku podršku, interfejs.Sigurnost za korisnika.Ne mogu: pisati u korisnički sistem datoteka, komunicirati sa drugim serverima, izvršavati programe na korisničkom sistemu, koristiti programe sa lokalne platforme (dll).

(OOP) Klasa Applet i HTML tag za apleteAplet se dovlači sa Web-servera i izvršava na lokalnom sistemu.Svaki aplet je potklasa klase Applet paketa java.applet.*Počinje sa: public class MojaKlasa extends java.applet.Applet{

Page 25: alas.matf.bg.ac.rsalas.matf.bg.ac.rs/~mm07167/podaci/OOP-Odgovori.doc · Web view(OOP) Razvoj i nastanak programskog jezika Java Proizvod firme: “Sun Microsystems” 1991. OAK -

…….. }ili sa: import java.applet.*; public class MojaKlasa extends Applet{ ……. }Svaki konkretan aplet (koji napiše korisnik) je potklasa klase Applet i niz metoda iz ove klase je primenjiv na novokreiranu potklasu. Aktivnost apleta određuje se pomoću ovih metoda. (Aplet-klasa obezbeđuje interfejs između apleta i njegove okoline.)Većina metoda klase Applet treba da bude predefinisana u apletu.Pet najčešće korišćenih metoda su:

public void init(){….}public void start() {…..}public void stop() {….

}public void destroy(){….}import java.awt.Graphics;public void paint (Graphics g){…..}

APPLET-tag:<APPLET ALIGN = LEFT | CENTER | RIGHT CODE = apletfajl CODEBASE = URL-apleta HEIGHT = visina WIDTH = sirina VSPACE = prostor HSPACE = prostor > <PARAM NAME= ime VALUE = vrednost> …………………………………………… </APPLET>

(OOP) Grafika u apletimaApleti su grafički orijentisani i skoro redovno je potrebno predefinisati paint-metod.Potrebno je napisati:import java.awt.Graphics;public class MojAplet extends java.applet.Applet{….} Ili:import java.applet.*;import java.awt.*;public class MojAplet extends Applet {……..

Page 26: alas.matf.bg.ac.rsalas.matf.bg.ac.rs/~mm07167/podaci/OOP-Odgovori.doc · Web view(OOP) Razvoj i nastanak programskog jezika Java Proizvod firme: “Sun Microsystems” 1991. OAK -

} (OOP) Osnovi metodi za crtanje u apletima

1. Crtanje prave: g.drawLine(xp, yp, xk, yk)2. Crtanje pravougaonika: Postoje 3 vrste pravougaonika pravilan zaobljen 3D-pravougaonikZa svaki od njih postoje po 2 metoda: jedan za crtanje konture, drugi za popunjavanje.Za pravilan pravougaonik koriste se metodi:

g.drawRect(xp,yp, duzina, visina) g.fillRect(xp, yp, duzina, visina).

Zaobljen pravougaonik ima zaobljene uglove.Koriste se metodi:

g.drawRoundRect(xp,yp, duzina, visina, dl, hl)g.fillRoundRect(xp,yp, duzina, visina, dl, hl)

Za crtanje 3D-pravogaonika:g.draw3DRect(xp,yp,duzina, visina, ind)g.fill3DRect(xp, yp, duzina visina, ind)

gde je ind = false , za spušteni ind = true , za podignuti.3. Crtanje poligonaPoligon je niz linija. Može se definisati objekat poligon ili zadati: - niz x-koordinata - niz y-koordinata - ukupan broj tačakai koristiti metodi:

g.drawPolygon(xniz, yniz, brojTacaka)g.fillPolygon(xniz, yniz, brojTacaka)

ili g.drawPolygon(poligonObjekt)g.fillPolygon(poligonObjekt)

4. Crtanje elipse:Crta se slično kao pravougaonik:

g.drawOval(xp, yp, duzina, visina)g.fillOval(xp, yp, duzina, visina)

5. Crtanje lukova g. drawArc(xp,yp, duzina, visina, pocUgao, velicinaugla) g.fillArc(xp,yp, duzina, visina, pocUgao, velicinaugla)6. Kopiranje povšine (pravougaonika)g.copyArea(xp, yp, duzina, visina, xpomak, ypomak)7. Brisanje pravougaonika

Page 27: alas.matf.bg.ac.rsalas.matf.bg.ac.rs/~mm07167/podaci/OOP-Odgovori.doc · Web view(OOP) Razvoj i nastanak programskog jezika Java Proizvod firme: “Sun Microsystems” 1991. OAK -

g.clearRect(xp, yp, duzina, visina)Da se izbriše ceo pravougaonik za aplet:g.clearRect(0,0, size().width, size().height)

(OOP) Rad sa fontovima u apletimaFontovi su primerci klase java.awt.Font.Font-objekat je određen: nazivom, stilom i veličinom.1. Naziv fonta može biti neki od uobičajenih (Arial, Garamond, Bodoni, …) i koristiće se ako postoji na platformi na kojoj je Java aktivna.Pored ovih, mogu se koristiti već ugrađeni Java fontovi:TimesRoman, Courier, Helevetica, Dialog i DialogInput.2. Postoje 3 stila Fonta definisana preko sledećih konstanti:Font.BOLD, Font.ITALIC i Font.PLAIN.Stilovi se mogu kombinovati međusobno.3. Veličina fonta zadaje se u tačkama (points).Font se kreira pomoću konstruktora: Font naziv = new Font(Ime, tip, Velicina);Metodi za rad sa fontovima su: setFont(imeFonta) drawString (String, x,y) i koriste se u klasi Graphics.Fontovi se crtaju.Postoji niz metoda za dobijanje informacija o fontovima. Oni se nalaze u posebnoj klasi FontMetrics. Objekti ove klase kreiraju se preko metoda getFontMetrics() koji ima samo jedan argumnet: font-objekat.Neki od metoda ove klase su:stingWidth(string) - širina stringa u pikselimacharWidth(znak) - širina znaka u pikselimagetHeight() - vraće ukupnu visinu fonta

(OOP) Rad sa bojama u apletimaJava koristi 24-bitni kolor model. Boja se izražava preko kombinacije: (crvena, zelena, plava - RGB model). Svaka od ovih komponenti može imati vrednosti od 0 do 255. Ovaj model se preslikava na platformu korisnika.Konkretna boja je instanca klase Color.Metodi za rad sa bojama:setColor(Color.boja)setBackground(Color.boja)setForeground(Cokor.boja)Nova boja se može kreirati na sledeći način:Color novaBoja= new Color(R,G,B); Umesto celih brojeva, u Color-konstruktoru, mogu se koristiti i realni brojevi iz intervala

[0,1].Za nalaženje aktuelne boje mogu se koristiti metodi:getColor() (u klasi Garphics), getBackgroubd() i getBackground().

(OOP) Swing - događaji niskog nivoa

Page 28: alas.matf.bg.ac.rsalas.matf.bg.ac.rs/~mm07167/podaci/OOP-Odgovori.doc · Web view(OOP) Razvoj i nastanak programskog jezika Java Proizvod firme: “Sun Microsystems” 1991. OAK -

(OOP) Swing - događaji visokog nivoaRazlike izmedju obrade u proceduralnim programiranju i GUI.GUI zahteva pristup preko događaja.Događaji se registruju j jednom redu (queue) kao strukturi podataka i povezani su sa operativnim sistemom. (Red može biti vezan za OS ili samo konkretnu aplikaciju.) Svaki događaj je primerak klase: java.awt.event.*.Razlikujemo:

događaje nižeg nivoa (odnose se na direktnu interakciju korisnika i uređaja) To su potklase java.awt.event: KeyEvent, MouseEvent, WindowEvent, …

događaje višeg nivoa (kombinacija nekoliko događaja nižeg nivo) To su potklase java.awt.event: ActionEvent, TextEvent, ItemEvent, ...Za rukovanje događajima najvažniji si metodi koji su definisani u odgovarajućim klasama. (Ovde će biti opisano korišćenje nekih od tih metoda.)Glavni metod (u prvim verzijama Jave) je HendleEvent() koji je definisan u klasi Component. Kada je registrovan događaj u ovom metodu, on se prosleđuje specijalizovanim metodima za obradu kao što su: mouseDown(), MouseUp(), …

(OOP) Swing - 2D grafikaOd 1.2. verzije Jave, može se koristiti 2D-grafika koja pruža znatno veće mogućnosti pri crtanju. Oslanja se na java.awt-paket.Mora se importovati java.awt.geom.*Mogu se crtati sve figure, kao i ranije, ali sa argumentima koji su tipa float. Uvek se mora naglasiti da se se operiše sa klasom Float.Mora se kreirati metod za crtanje, pa se onda poziva draw() ili fill()-metod za taj objekati Metodi za crtanje:Line2D.Float (xpf, ypf, xkf, ykf)Rectangle2D.Float(xpf, ypf, duzianf, sirinaf)Ellipse2D.Float(xpf,ypf, duzinaf, sirinaf)Arc2D.Float(xpf,ypf, df,sf, pugaof, ugaof, tip) tip može biti: Arc2D.OPEN, Arc2D.CHORD, Arc2D.PIEZa biranje načina popunjavanja bojom (senčenjem), koristi se klasa: GradientPaint.Konstruktor ima oblik:GradientPaint(xpf, ypf, pocetbaBoja, xkf,ykf, KrajnjaBoja)Može imati i sedmi argument: true (false je podrazumevano)Poziva se preko metoda setPaint(objekat) , gde je objekat iz klase GradientPaint.Za podešavanje linije za crtanje koristi se metod setStroke(…)On ima argument koji je objekat klase BasicStroke u kojoj se navodi:- debljina linije (Float)- završni oblik linije (krunica) tipa Int i može biti: CAP_BUTT CAP_ROUND CAP_SQUARE- Stil spajanja dve linije tipa Int i može biti: JOIN_MITER JOIN_ROUND JOIN_BRVEL.

Page 29: alas.matf.bg.ac.rsalas.matf.bg.ac.rs/~mm07167/podaci/OOP-Odgovori.doc · Web view(OOP) Razvoj i nastanak programskog jezika Java Proizvod firme: “Sun Microsystems” 1991. OAK -

Kao {to se koristi klasa Float, na isti na~in mo`e biti iskori{}ena klasa Double. Svuda u metodima i pozivima klase, treba re~ Float zameniti sa Double. Konstante. takodje treba prilagoditi. U slede}em primeru upotrebljen je metod RoundRectangle2D.Double(…)

(OOP) IzuzetciU raznim programskim jezicima pokušava se sa kontrolom grešaka još u fazi prevođenja programa. Međutim, mnoge greške nastaju u fazi izvršavanja. Problem se često rešava vraćanjem nekih vrednosti (return-naredba u C-u) ili postavljanjem nekih flegova.U proceduralnim programskim jezicima nema posebnih mehanizama za kontrolu grešaka. To može da uradi sam programer anlizirajući svaku sistuaciju u kojoj može da se pojavi grešaka. Ovo je nepraktično jer tada (često) kontrola grešaka zauzima najveći deo programa pa se od toga ne može videti glavna ideje programa (svrha). U Javi se posebna pažnja poklanja rukovanju greškama, tj. izuzecima. (Prilikom izvršavanja programa ako se pojavi greška, nastaje izuztena situacija, tj. izuzetak.) U skladu sa tim fraza:”Izbačen je izuztatk u programu” odgovara frazi: “Pojavila se grešaka u programu”. U samom jeziku vrši se kontrola grešaka, ali to može da radi i korisnik (da obradjuje izuzetke, da upravlja njima, da saopšti korisniku metda da je moguća pojava greške, da sam generiše izuzetak). Svaki izuzetak u Javi predstavlja primerak klase Throwable ili neke njene potkalse.

(OOP) Kontrolisanje izuzetakaKorisnik može rukovati izuzecima preko try-catch konstrukcije Java-jezika:try { // Kod koji moze generisati izuzetak } catch (Tip1 id1) { //Rukovanje izuztkom tipa 1} catch (Tip2 id2) { //Rukovanje izuzetkom tipa 2} catch (Tip3 id3) { //Rukovanje izuzetkom tipa 3……………finally { // Obrada koja se uvek relizuje }

(OOP) Klase sa izuzetcimaPostoje 2 velike potklase klase Throwable. To su: Error i Exception. Svaka od njih ima svoje potklase. Primerci klase Error i RunTimeException i njihovih potklasa mogu nastati bilo gde u programu i obično ih programer ne generiše direktno. Tipičan primer je greška OutOfMemoryError. Ove vrste grešaka su najčešće fatalne i nema svrhe “hvatati ih”. (I ako se takva greška otkrije, ne može se nesto mnogo uraditi.) Ove greške se retko javljaju, ali Java i njih kontroliše i saoptava kada se pojave.Izuzeci iz klasa Error i RunTimeException ne treba da budu deklarisani jer se mogu pojaviti bilo gde u programu. Delimična struktura klasa sa izuzecima prikazana je na slici.

Page 30: alas.matf.bg.ac.rsalas.matf.bg.ac.rs/~mm07167/podaci/OOP-Odgovori.doc · Web view(OOP) Razvoj i nastanak programskog jezika Java Proizvod firme: “Sun Microsystems” 1991. OAK -

Interesantni su primerci klase Exeption. Oni se mogu svrstati u tri vrste klasa (kao što se vidi sa slike). Najiteresantniji su izizeci iz klase IOExeption. U klasu Exeption svrstaju se i izuzeci koje sami generišemo.

(OOP) Deklarisanje izuzetaka u metoduAko progamer u nekom metodu očekuje pojavu grešaka (izuzetaka), onda na poseban način treba da deklariše taj metod. Na taj način saopštava klijentu (korisniku metoda) koje greške su moguće. To se postiže preko throws-deklaracije. public metodSaIzuzetkom() throws DeljeneNulom { ……………..}Ako metod može izbaciti više tipova izuzetaka, treba ih sve navesti.public boolean moMetod(int x) throws PrviIzuzetak, DrugiIzuz, TreciIzuz { //………. }

(OOP) Kreiranje sopstvenih izuzetakaIzuzetke možemo i sami generisati preko throw-naredbe.Na primer: if (t = = null) throw new MojPrviIzuzetak(); throw new Exception(“Glavni”); Tada se kreira primerak odgovarajuće klase kojem možemo da pristupimo preko raznih metoda.Zašto je potrebno da kreiramo sopstvene izuzetke?Postoje 2 situacije kada to može biti od koristi:1. Želimo da dobijemo dodtane informacije kada se pojavi standardni izuzetak. To postižemo izbacivanjem svog izuzetka.2. Želimo da se pojavi posebna klasa izuzetaka kada se pojvljuje neka vrsta greške u kodu.Svaka klasa izuzetaka koju kreiramo mora imati klasu Throwable kao natklasu. Najbolje je koristiti njenu potklasu Excepttion. Klasa izuzetaka se može ovako definisati:public class MojIzuzetak extentds Exception {

Page 31: alas.matf.bg.ac.rsalas.matf.bg.ac.rs/~mm07167/podaci/OOP-Odgovori.doc · Web view(OOP) Razvoj i nastanak programskog jezika Java Proizvod firme: “Sun Microsystems” 1991. OAK -

public MojIzuzetak() {} // podrazumevani konstruktor public MojIzuzetak (String s) { super(s) // pozivanje osnovnog konstruktora } }

Za{to je potrebno da kreiramo sopstvene izuzetke?Postoje 2 situacije kada to mo`e biti od koristi:1. @elimo da dobijemo dodtane informacije kada se pojavi standardni izuzetak. To posti`emo izbacivanjem svog izuzetka.2. @elimo da se pojavi posebna klasa izuzetaka kada se pojvljuje neka vrsta gre{ke u kodu.Svaka klasa izuzetaka koju kreiramo mora imati klasu Throwable kao natklasu. Najbolje je koristiti njenu potklasu Excepttion. Klasa izuzetaka se mo`e ovako definisati:public class MojIzuzetak extentds Exception { public MojIzuzetak() {} // podrazumevani konstruktor public MojIzuzetak (String s) { super(s) // pozivanje osnovnog konstruktora } }Za{to je potrebno da kreiramo sopstvene izuzetke?Postoje 2 situacije kada to mo`e biti od koristi:1. @elimo da dobijemo dodtane informacije kada se pojavi standardni izuzetak. To posti`emo izbacivanjem svog izuzetka.2. @elimo da se pojavi posebna klasa izuzetaka kada se pojvljuje neka vrsta gre{ke u kodu.Svaka klasa izuzetaka koju kreiramo mora imati klasu Throwable kao natklasu. Najbolje je koristiti njenu potklasu Excepttion. Klasa izuzetaka se mo`e ovako definisati:public class MojIzuzetak extentds Exception { public MojIzuzetak() {} // podrazumevani konstruktor public MojIzuzetak (String s) { super(s) // pozivanje osnovnog konstruktora } }

(OOP) Unutrašnje klaseKlasa definisana unutar druge klase naziva se unutrašnjom klasom. (Unutrašnje klase se mogu koristiti počev od Java vezije 1.1.).Šta se postiže unutrašnjim klasama?1. Nevidljiva je za sve ostale klase ( ne mora se brinuti o knfliktu imena klasa)2. U unutrašnjoj klasi može se pristupati promenljivima i metodama klase koja je obuhvata (što ne mora biti ako je posebna klasa).Prilikom prevođenja, ispred naziva unutrašnje klase, navodi se naziv spoljašnje, a razdvajaju se znakom za dolar. Na primer, prevedena unutrašnja klasa može imati naziv:Spoljasnja$Unutrasnja.class