Title: Objektno orijentisano programiranje ve
1Objektno orijentisano programiranjevežbe cas 01
2Literatura
- I. Horton, Java2 JDK 1.5, CET, Beograd, 2006
- Slajdovi sa vezbi
3Nacin bodovanja
- Aktivnost na casovima 10 bodova
- Kolokvijumi 35 bodova
- Prvi kolokvijum 15 bodova
- Drugi kolokvijum 20 bodova
- Završni ispit 55 bodova
- Pismeni deo 30 bodova
- Usmeni deo 25 bodova
4Karakterisitke programskog jezika JAVA
- Objektno-orijentisan programski jezik.
- OO programi su lakši za razumevanje i
jednostavnije se proširuju i održavaju. - Mašinski nezavisna piši jednom izvršavaj bilo
gde. - Nepromenjen JAVA program može se pokrenuti na
bilo kojoj mašini i operativnom sistemu koji
podržava Javu.
5Osnovne vrste programa u Javi
- Java aplikacije
- Java aplikacije su samostalni programi.
- Java apleti
- Java apleti su programi koji su umetnuti u Web
stranu.
6Pokretanje Java programa
- Java program se ne izvršava direktno na racunaru.
- Pokrece se u standardizovanom okruženju koje se
zove Java platforma. - Java programi se mogu pokrenuti na širokom
spektru operativnih sistema.
7Java platforma
- Sastoji se od dva elementa
- JAVA virtuelna mašina - JVM
- JVM je virtualni racunar koji postoji samo u
memeriji. JVM omogucuje izvršavanje Java programa
na razlicitim platformama. - JAVA application programming interface - API
- Skup komponenti koje obezbeduju pisanje
interaktivnih aplikacija u Javi.
8Izvršavanje JAVA programa
- Java kompajler prevodi Java izvorni kod u tzv.
bajt-kod koji je binaran i isti za sve platforme. - Bajt-kod (Bytecode) su mašinske instrukcije za
JVM. - Java interpreter tumaci bajtkod i izvršava akcije
koje su specificirane u bajtkodu, unutar JVM.
9Izvršavanje JAVA programa
10Izvršavanje JAVA programa - primer
- Java izvorni kod ima ekstenziju .java
(ZdravoSvete.java) - Java kompajler javac ZdravoSvete.java
- bytecode nosi isto ime kao izvorni fajl i ima
ekstenziju .class - Java interpreter java ZdravoSvete
11Prvi Java programZdravo svete!!!
- public class Zdravo
-
- public static void main(String args)
-
- System.out.println(Zdravo, svete\n)
-
-
12Osnovni pojmovi objektno- orijentisanog
programiranja
- Objekat integralna celina podataka i procedura
za rad sa njima. - Primer organizacija voznog parka u firmi.
- Objekti mogu biti prevozno sredstvo (generalno
posmatrano), ali i autobus, automobil...
13Osnovni pojmovi objektno- orijentisanog
programiranja
- OOP programska paradigma zasnovana na skupu
objekata koji dejstvuju medusobno. Glavne obrade
se zasnivaju na manipulisanju objektima.
14Osnovni pojmovi objektno- orijentisanog
programiranja
- Metod funkcija koja je deo objekta i kojom se
realizuje poruka upucena objektu. - Primeri
- Startuj motor
- Zaustavi auto
- Ubrzaj...
- Poruka skup informacija koji se šalje objektu.
Sastoji se iz adrese (objekta koji prima poruku)
i saopštenja (šta treba da se uradi).
15Osnovni pojmovi objektno- orijentisanog
programiranja
- Klasa opis (specifikacija) jedne vrste
objekata. Npr. prevozno sredstvo je klasa. - Instanca (primerak) klase konkretan objekat
klase. - Dodavanjem novih svojstava postojecoj klasi
dobija se potklasa. Svi primerci potklase su
istovrmemeno i primerci natklase. Npr. automobil
ima sve karakteristike klase prevozno sredstvo,
ali ima i svoje dodatne karakteristike npr. 4
tocka...
16Osnovni pojmovi objektno- orijentisanog
programiranja
- Nasledivanje mehanizam za kreiranje novih klasa
iz postojecih. Na taj nacin se uspostavljaju
relacije izmedu jedne i više drugih klasa. - Polimorfizam mogucnost primene istog metoda na
primerke razlicitih klasa.
17Eclipse
- Razvojni alat za pokretanje Java programa.
- Svi razvojni alati podržavaju tzv. IDE
(Integrated Development Environment) za brz
razvoj Java programa. - Editovanje, kompajliranje, debagovanje,
online-pomoc su integrisani u graficko korisnicko
okruženje.
18Eclipse tutorial
- Eclipse može da se pokrece na bilo kojoj
platformi koja ima podršku za JVM. - Pre Eclipse instalacije neophodno je instalirati
odgoravajucu verziju JDK-a. - Eclipse se pokrece dvoklikom na ikonu eclipse.exe
u odgovarajucem folderu ili dvoklikom na
odgovarajucu precicu na radnoj površini. - Najpre se pojavljuje prozor Workspace Launcher
koji nudi izbor direktorijuma u kome ce se
raditi. - Potom se otvara glavni prozor (Eclipse UI) sa
inicijalno otvorenim pozdravnim prozorom.
19Eclipse tutorial - izbor perspektive
- Perspektiva predstavlja inicijalni skup i
raspored komponenti u prozoru. Npr. Java
perspektiva se koristi za editovanje Java
izvornog koda, dok Debug perspektiva omogucava
pregled debagovanja programa. Moguce je prelaziti
iz jedne u drugu perspektivu. - Za kreiranje Java programa opcijom Window ? Open
Perspective ? Java iz glavnog menija otvara se
Java perspektiva.
20Eclipse tutorial- kreiranje projekta
- Projekat se kreira izborom opcije File ? New ?
Project cime se prikazuje Project wizard. - Selektovati Java project i kliknuti Next cime se
otvara New Java Project wizard. - U polje Project name uneti ime projekta.
- Cekirati opciju Create project in workspace.
- Klik na dugme Finish kreiranje projekta.
21Eclipse tutorial- kreiranje paketa i klase
- Kreiranje paketa u postojecem projektu File ?
New ? Package. - Kreiranje klase u postojecem paketu File ? New ?
Class, cime se otvara New Java Class wizard. - U polje Name unosi se ime klase (pocinje velikim
slovom) bez ekstenzije .java. - U delu Modifiers moguce je cekirati neku od
opcija svaka predstavlja neku vrstu
modifikatora klase. - U polju Superclass navodi se ime klase koja se
nasleduje.
22Eclipse tutorial- kreiranje paketa i klase
- U polju Interfaces navode se imena interfejsa
koje klasa implementira. - Poslednji deo se odnosi na izbor metoda koje su
sastavni deo klase - - public static void main(String args)
- - konstruktori natklase
- - nasledjeni apstraktni metodi
23Eclipse tutorial- kompilacija i pokretanje
programa
- Izvorni Java kod se dinamicki kompajlira za vreme
kucanja. Npr. ako se ne otkuca za kraj naredbe,
editor prikazuje crvenu krivudavu liniju koja
ukazuje na grešku. - Pokretanje Run ? Run As ? Java Application iz
glavnog menija ili kliknuti na odgovarajucu ikonu
u toolbar-u koja se koristi za pokretanje. - Izlaz je prikazan u panelu Console u dnu prozora.
24Eclipse tutorial- debagovanje
- Eclipse debugger omogucuje postavljanje
breakpoint-a i izvršavanje programa liniju po
liniju. - Obicno se breakpoint-i postavljaju u onim
delovima za koje postoji mogucnost da sadrže
grešku. Nema svrhe da se traga za greškom liniju
po liniju kroz delove programa za koje se
pouzdano zna da dobro rade.
25Eclipse tutorial- debagovanje
- Breakpoint je zaustavna zastavica (znak)
postavljena na liniju izvornog koda koja govori
debageru da se zaustavi kada na nju naide. - Debager izvršava svaku liniju dok ne dode do
breakpoint-a, tako da je moguce tragati kroz deo
programa gde je breakpoint postavljen.
26Eclipse tutorial- debagovanje
- Razliciti nacini postavljanja breakpoint-a
- - dvostrukim klikom na levu marginu linije na
koju se postavlja breakpoint. Pojavice se plavi
kružic u levoj margini. - - desnim klikom u podrucje leve margine
pojavljuje se meni iz koga se bira opcija Toggle
Breakpoint. - - u meniju Run izabrati opciju Toggle
Breakpoint. - Uklanjanje breakpoint-a - dvoklikom na levu
marginu, ili izborom opcije Disable Breakpoint iz
odgovarajuceg menija. - Kada se napusti projekat zadržavaju se
postavljeni breakpoint-i.
27Eclipse tutorial- debagovanje
- Primer startovanja debagera
- Postaviti breakpoint na prvu naredbu metoda
main(). - Izabrati opciju Debug As ? Java Application.
Pojavice se Confirm Perspective Switch dijalog za
potvrdu prelaska u Debug perspektivu.
28Eclipse tutorial- debagovanje
- Kontrola izvršavanja programa
- Program se zaustavlja na prvoj liniji main()
metoda. Ova linija, koja se zove tekuca tacka
izvršavanja (current execution point), obojena je
zeleno i oznacava sledecu liniju koda koja ce
biti izvršena od strane debagera.
29Eclipse tutorial- debagovanje
- Kada je aktivan Debugging mode, u Debug prozoru
vidljive su ikonice sa komandama za debagovanje. - Iste komande nalaze se i u meniju Run
- Resume nastavlja izvršavanje pauziranog
programa - Suspend privremeno zaustavlja izvršavanje
programa - Terminate završava tekucu sesiju debagovanja.
- Step Into izvršava jednu naredbu ili ulazi u
metod - Step Over izvršava jednu naredbu. Ako naredba
sadrži poziv metoda, ceo metod se izvršava bez
detaljnog prelaska kroz njega. -
30Eclipse tutorial- debagovanje
- Step Return izvršava sve naredbe tekuceg
metoda i vraca se u onaj deo gde je pozvan metod. - Run to Line izvršava program, pocevši od
tekuce tacke izvršavanja, zaustavlja se i
postavlja izvršnu tacku na liniju koda koja
sadrži kursor ili na breakpoint.
31Eclipse tutorial- debagovanje
- Vrednosti promenljivih se ispisuju u posebnom
panelu Variables. Dvostrukim klikom na
odgovarajucu promenljivu otvara se Set Value
dijaloški prozor gde je moguce zadati novu
vrednost promenljive. - Nakon završetka debagovanja, može se preci u Java
perspektivu.
32Struktura Java programa
- Java program se uvek sastoji iz jedne ili više
klasa. - Svaka klasa se smešta u poseban fajl koji ima
isto ime kao i klasa. - Klase se grupišu u skupove pakete. Svaki paket
cuva se u zasebnom direktorijumu.
33Standardni Java paketi
- Najbitniji standardni paketi
- java.lang klase iz ovog paketa su uvek
dostupne, tj. automatski se ukljucuju u program. - java.io klase za ulazno/izlazne operacije
- java.util
- java.awt graficke komponente
- javax.swing fleksibilnije graficke komponente
34Upotreba Java paketa
- Upotreba klasa iz nekog paketa omogucena je
import deklaracijom koja se navodi na pocetku
programa. - import java.awt.
- import java.util.Vector
35Metod main()
- Svaka Java aplikacija sadrži klasu koja definiše
metod main(). Aplikacija se pokrece izvršavanjem
ove klase. - Metod main ima predefinisanu formu
- public static void main(String args)
36ZdravoSvete.java
- public class ZdravoSvete
-
- public static void main(String args)
-
- System.out.println(Zdravo, svete\n)
-
-
37ZdravoSvete.java
- public globalno dostupna klasa i metod
- static metod je dostupan i kada ne postoje
objekti klase - void metod nema povratnu vrednost
- String args niz argumenata komandne linije.
Argumenti su objekti klase String. Klasa String
je definisana u paketu java.lang. - System standardna klasa koja omogucava rad sa
standardnim ulazom/izlazom. Nalazi se u paketu
java.lang.
38ZdravoSvete.java
- out objekat klase PrintSteam, koji je clan
klase System i predstavlja standardni izlazni
tok. - println() metod klase PrintStream koji ispisuje
string zadat izmedu dvostrukih navodnika.
39Karakterski skup u Javi
- Java je bazirana na UNICODE standardu koji svaki
karakter predstavlja pomocu 2 bajta, tj. 16
bitova. - Java je CASE-SENSITIVE, tj. pravi se razlika
izmedu malih i velikih slova.
40Tipovi podataka u Javi
- Primitivni tip
- Referentni (objektni) tip
41Primitivni tip
- Aritmeticki i logicki
- Aritmeticki celi i realni (floating point)
- Celi byte(8), short(16), int(32), long(64) i
char(16). Svi sem char su signed. U Javi ne
postoji unsigned. - Realni float(32), double(64) (standard IEEE754).
- Logicki tip boolean(1). Ima dve vrednosti true
i false.
42Referentni tip podatka
- Objekat celina koju cine promenljive i metodi
definisani u klasi kojoj objekat pripada. Tip
objekta je, dakle, odreden klasom. - Specijalnu vrstu objekata cine stringovi.
- String-objekat ne sadrži NULL na kraju kao što je
to bio slucaj u C-u.
43Elementarne konstrukcije jezika Java
- Elementi jezika koje kompajler izdvaja tokom
prevodenja programa kao nedeljive celine
(tokene). - Identifikatori
- Literali
- Separatori
- Operatori
- Kljucne reci
- Komentari
- Beline
44Identifikatori
- Identifikator je niz UNICODE karaktera
proizvoljne dužine koji mora pocinjati slovom, _
ili . Ostali karakteri mogu biti slova, cifre, _
ili . Ne smeju se koristiti kljucne reci.
45Literali
- Eksplicitne vrednosti koje se javljaju u programu
su literali. - Literal može biti konstantna vrednost primitivnog
tipa ili String objekat.
46Celobrojni literali
- Celobrojni literali
- Dekadni
- Oktalni
- Heksadekadni
- Dekadni ne pocinju cifrom 0.
- Oktalni pocinju cifrom 0.
- Heksadekadni pocinju znacima 0x ili 0X.
- Literal tipa long ima sufiks l ili L.
47Realni, logicki, znakovni i String literali
- Realni literali su po podrazumevano tipa double.
Može i da stoji sufiks D ili d. - Realni literal je tipa float ako sadrži sufiks F
ili f. - Logicki literali true i false.
- Znakovni literal - konstantna vrednost tipa char,
tj. neoznacena 16-bitni vrednost. - Primeri a, \n, \u113, \\
- String literal sadrži znake izmedu navodnika.
48Separatori, operatori, komentari
- Separatori ()
- Nema operatora , kao u C-u. Takode, nema
operatora za pristup memoriji, što znaci da u
Javi nema pokazivaca. - Komentari
- C stil /... /
- Jednolinijski komentari //...
- Dokumentacioni komentari / ... /
49Napomene!
- Ne postoji automatska konverzija boolean tipa u
tip int i obrnuto! - if(a) neispravno
- If(a ! 0) ispravno
- Naredbe za kontrolu toka su kao u C-u (if, else,
switch, for, while, do, break, continue). Nema
naredbe goto.