Professional Documents
Culture Documents
Teorijajghzugzugzugz
Teorijajghzugzugzugz
Objektno programiranje
Objektni programer prvo modeluje (daleko vedi udio) pa tek onda programira. Ax=b (Imamo tri elementa (A,x i b) i dvije klase (matrica i vektor)) Klasa entiteta modeluje se klasom objekta. Klasa objekta krade se zove Klasa. Naziv: matrica Podaci: polje(atribut) m, n, P Operacije: metode Uitati{... } tampati { ... } Invertovati{ ...} Transponovati{ ...} Pomnoiti D (vektor V) . . . Naziv: matrica Podaci: k, V Operacije: Uitati { ... } tampati { ... } Moduo{ ...} . . . MATRICA A; (MATRICA je klasa, a A je objekat. Objekat i klasa su u istom odnosu kao i promjenjiva i tip.) VEKTOR x, b; (x i b su objekti klase vektor) A. Uitati; (Nad objektom A izvriti operaciju uitati) b. Uitati; A. Invertovati; x = A. PomnoitiD(b); x. tampati; Primjer matrice koja se invertuje: MATRICA Q; Q. Uitati; Q. Invertovati; Q. tampati;
1|Strana
Stek Hip
Svi objekti nalaze se u Hipu. P - je referenca ( i nema * kao pokaziva) i ponaa se kao diferencijalni pokaziva. Curenje memorije treba sprijeiti jer to predstavlja loe programiranje u Javi.
(kratki komentar)
(dokumentacija)
Dokumentacija slui da se opie ta program odnosno klasa radi. Dokumentacija klase moe da se izvue iz klase. Javadoc kupi kupi komentare za dokumentaciju i formira je.
Bazni tipovi
Oni ne zavise od programskog jezika. Svaki tip ima ime. Rehabilitovan je logiki tip (Paskalov). Bolen (ima dvije konstante false i true). Logiki tip zauzima 1 bit memorije. Cjelobrojni tip -byte (zauzima 8 bitova virtualne memorije) -short (zauzima 16 bitova virtualne memorije) -int (zauzima 32 bitova virtualne memorije) -long (zauzima 64 bitova virtualne memorije) Cjelobrojne konstante se mogu prikazati na tri naina:
2|Strana
-dekadno 1 -5 +45 -oktalno 74 62 -heksadecimalno xab13 xC2D5 Kod konstanti podrazumjevano u Javi je int 148 int 148L long Realni tipovi -float 32 bita -double 64 bita (osnovni tip je double) 1.3 -4.5 +2. 1E6 1.3e-6 2.5E+1 1.3F ili 1.3D (ovo je sufiks za float) Znakovni tip Oznaava se sa char (duina je 16 bita). 'a' '+' 'D' ' ' (isto kao u C-u) Koristi se takoe escape sekvenca. '\n'- novi red '\r'- povratak na poetak istog reda '\f' -folfid (nedemo ga koristiti)
Kada se escape sekvence nalaze unutar stringa onda se piu bez apostrofa. '\uxxxx' predstavlja svih ostalih znakova kojih nema na tastaturi (ima ih oko 65.000) String literali "string literal" Konstanta null null -Kada referenca ne pokazuje na nita onda pridruuje null
Promjenjljiva
U Javi de se pojavljivati promjenjljive kao lokalne promjenjljive metode. Pojavljivade se u svakom objektu.Mogu da budu bazno g tipa i objektnog tipa.Referenca ima osobine promjenjljivih.Promjenjljive imaju opseg u oblastima u kojima se nalaze.Domet promjenjljive je odreen blokom. Blok je u stvari C-ova sekvencaali u njoj se ne nalaze samo naredbe ved i definicije. Redosljed je nebitan. {definicije + naredbe} Domet je od mjesta definisanja pa do kraja bloka.
{ Inta; . . Intb; { doublex=a+b; } }
domet a domet b
Metode sopstvene klase mogu pristupiti svom polju.Metode drugih klasa programer ima uticaja utoliko to kada definie polja moe da kae koje to metode mogu da pristupe tom polju.taj mehaniz am se zasniva na modifikatorima. Javin sistem modifikatora ima loginiji pristup nego C.
domet x
3|Strana
Klasa.java -ime fajla public class Krug{ private double r; public Krug (double rr){ r=rr; } public double poluprecnik (){ return r; public double obim (){ return 2*r*Math.PI; } public double povrsina (){ return r*r*Math.PI; } }
-Kada dodajemo ime klasi konvencija je da prvo slovo bude veliko. -Opisujemo krug sa poluprenikom. -private je modifikator i nedozvoljava niko da doe iz druge klase. -public je modifikator gdje svi mogu pristupiti nekoj klasi.
r 5.3
k.poluprecnik( ) p.poluprecnik( ) -return r; -To je uvijek r onog objekta nad kojim se izvrava.
Princip skrivanja informacija je najvaniji princip u programiranju.Ovaj princip kae da detalji realizacije treba da budu nedostupni klijentu (Information Hiding Principle Parnas).Detalji realizacije su podloni promjeni.Metode su djelovi klasa koji su otvoreni. Ime fajlova mora uvijek da bude kao i ime klase s tim da dobija ekstenziju .java. KlasaKrug.java -ime fajla public class TestKrug{ public static void mail (String args [ ]{ Krug kr = new Krug (3.5) System.out.println ("Poluprecnik: "+ kr.poluprecnik()); System.out.println ("Povrsina: "+ kr.povrsina()); } } jacac -to je javin kompajler, prevodilac. javac Krug.java Krug.class javac TestKrug.java TestKrug.class java TestKrug aktivna metoda poluprenika i vrada vrijednost 3.5 kv- je referenca na dati objekat.
kr Stek
3.5 Hip
Operatori i izrazi
Aritmetiki operatori + - ++ -- +- * / % += -= *= /= %= Relacioni operatori == != >>= <<= rezultati su TRUE i FALSE Logiki operatori ! &|^&= |= ^=
4|Strana
Konverzije
a op b a+b double float long int char
Prvo se vri promocija, sve to je bajt i short pretvara u int. Ako su oba char rezultat je int.
Niz
U Javi je niz specijalna klasa, odnosno svaki pojedinani niz je objekat koji se nalazi na hipu. Referenca na niz definie se ovako: tip ime[ ]; tip [ ]x; int x[ ]; int[ ]x; -x je referenca na niz ime = new tip [duzina]; x = new int [ 3]; tip[ ]ime = new tip [duzina]; int[ ]x = new int [ 3];
x Stek Hip
Matrice
Matrica tredstavlja niz nizova (niz gdje su elementi nizovi)
Stringovi 5|Strana
String je po definiciji tekstualni tip. Stringovi su specijalni objekti sa specijalnim osobinama. Njihova prva karakteristika je da imaju literale odnosno stringovne konstante. Slue da se string inicijalizuje. Klasa string ima naziv: String s = "Ovo je string"; Spesijalna operacija je + i spaja stringove i zove se konkatenacija. "ab" + "cde" "abcde" s1 ,s2, s3 s1=s2+s3 Konkatenacija je polimorfan, odnosno ako je bar jedan string. s +x "sad(s)x" s = "abc" x = 3,5 s + x "abc3.5" toString ( ) - Sve klase u javi imaju ovu metodu (operaciju). Ona ima zadatak da objekat pretvori u string.
Upravljake strukture. Sekvence, selekcije, ciklusi i skokovi. Blok je ustvari selekcija. {deklaracije i naredbe}
Switch Nema nikakvih razlika, u odnosu na C. Ciklusi. Oni su u Javi kontrolisani Bulovim tipom.
while (k ++ >) C+=5; while (log.izraz)naredba for (inicijalizacija; provjera; modifikacija) naredba; for (int i=; ... for (S=, int i=; - Ovo Java nede dozvoliti. do naredba while (log.izraz);
Continue 6|Strana
Return
return izraz; return;
Objekti
Naredba za deklarisanje (definisanje) klase class ImeKlase { //polja (atribut) //metode // unutranje klase } Polja posmatrano formalno imaju osobine promjenjivih. Mogu da budu baznog tipa ili reference drugih klasa. tip imePolja [=po.vrijednost ]; x imePolja; -x je naziv klase Ako je polje logikog tipa bide inicijalizovano na false, sva ostala polja de biti inicijalizovano na vrijednost nula. Ukoliko je polje referenca bide inicijalizovano na null.
Metode
tip imeMetode (parametri){ .... }
Prenos argumenta. Argumenti se mogu prenositi na dva naina: po vrijednosti i po adresi. Bazni tipovi se prenose po vrijednosti
(kopijom sa steka). Objekti se prenose (iskljuivo svi) po adresi.
Konstruktori. To su specijalne metode koje postoje u svakoj klasi. Svi konstruktori moraju nositi ime klase.
Krug (double rr){ r=rr; } Krug (Krug) { r=k.r; } U istoj klasi moe da bude vie metoda sa istim imenom, ali moraju da imaju razliiti parametri.
Polje this.Ono postoji u svakom polju svake klase. Po svojoj prirodi polje this je referenca na taj objekat (referenca na samog sebe).
tip m(..){ this } ob1.m(..) ob2.m( ) Na mjestu this metoda pristupa objektu preko kojeg je pozvana.
7|Strana
obK
New K (arg)
kr
K obK; ... obK=new K(arg); Objekat se stvara sa new K obK=new Krug(arg); -Kradi oblik
K1 K2
Dodjela i uporeivanje
K1 K2
Statiki lanovi klase. To su lanovi koji su definisani na nivou klase, a ne na nivou pojedinanih objekata. Statiko polje je polje
koje nije dio polja memorije objekta, i definisano je na nivou klase. Definie se sa static
8|Strana
Statika polja baznog tipa su ustvari globalne promjenjive u C-u. System.out.println (...) - System je Klasa a out je statiko polje. Statika polja mogu da se inicijalizuju class K { public static int a=1,b,c; static{ b=a+1; c=1; } } K.b obK.b Statiki blok de biti izvren pri prvom obradanju promjenjivoj ili pri prvom instanciranju klase.
Realizacija imenovanih konstanti. Imenovane konstante u Javi de biti realizovanemehanizmom zakljuanih statikih polja.
final public static final double PI=3.1415926..; Math.PI Nasljeivanje ili izvoenje (Inheritance)*. To je naziv za vezu izmeu klasa koja modeluje odnos logike odnosno subordinacije.
A
Nasljeivanje je preuzimanje kompletnog sadraja druge klase uz mogudnost dodavanja polja i metoda i modifikacije metoda. A je bazna klasa (predak odnosno roditeljska klasa), ona se jo zove nadklasa B je izvedena klasa (potomak odnosno nasljednik), ona se jo zove podklasa Imamo 5 osnovnih osobina nasljeivanja: 1. Nasljeivanje se ne bazira na izvornom kodu 2. Mogudnost proirivanja (dodavanja sadraja) 3. Mogudnost modifikacije metoda odnosno redefinisanje metoda (overriding) 4. Tranzitivnost 5. Mogudnos viestrukog nasljeivanja (nasljeivanje od vie predaka)
9|Strana
//dodate metode //dodate unutranje klase //redefinisane metode } Nasljeivanje neke klase moe da se zabrani tako to se u modifikatore ubaci final (rijetko se radi). Ako se rije final nae kod neke metode onda se nemoe redefinisati (rijetko se radi). Protected je nivo zatite, a ono to je zatideno sa protected su polja. Tip jednog parametra je najmanja razlika koja moe da se detektuje.
Potomak
M(2)
Ako elimo da pozivamo metodu iz pretka pozivamo je sa super. To je metoda m . super. m ( ) tip m (par){ super. m (arg); ... ______________ super (arg) -Pozivanje konstruktora .
(1)
Potomak
M(2) ( )
Predak pr; Potomak pot = new Potomak ( ); pr = pot; (2) pr.m ( ) Pri pozivu metode bide aktivirana verzija koja je odreena objektom, a ne referencom.
10 | S t r a n a
Koercitivni (prinudni) polimorfizam. Mogud je u svim objektnim jezicima ali se najvie koristi u Javi kod pridruivanja predka
potomku. Predak pr; Potomak pot; pot = pr, - ovo nije dozvoljeno pot = (Potomak) pr; ob instanceof Klasa p instanceof Sat if (ob1 instanceof K2) ob2 = (K2) ob1; - ob1 je K1, a ob2 je K2
Klasa object. Sve klase u javi su povezane nasljeivanjem i da je nasleivanje jednostruko, postoji jedna hijerarhija i klasa object je
prva u hijerarhiji. clone equals toString
Kloniranje objekata
Krug K1, K2; ... K2 = K1; K2 = new Krug (K1); Object clone ( ) { Krug Kr = newKrug (r); return Kr; } K2 = (Krug) K1.clone ( ); K1 == K2 Za poreenje stanja uvijek se koristi metoda equals. Ona uvijek vrada vrijednost false.
boolean equals (Krug Kr) { return (r==Kr.r) } K1.equals (K2) K1. equals (p) equals (Object O) boolean equals (Object ob) { return ((Krug)ob).r; }
Paketi
Fajl nosi isto ime kao i klasa. Direktoriji su dio paketa i oni se veu za direktorijum. Paket moe da ima svoj podpaket.
11 | S t r a n a
A paket1 paket2
paket21
Ime paketa mora da se poklapa sa imenom foldera u kojem se nalazi. Ime paketa se sastoji od malih slova i brojeva. A.java package paket1; class A { ... } package paket1; class B { ... } package paket2; class C{ ... } package paket2. paket2.1; class D{ ... } Taka odvaja podpaket ka to je \ kod OS
javac paket1 \ A.java javac paket1 \ B.java javac paket2 \ C.java javac paket2 \ paket21\D.java Puno ime klase A je paket1. A ... Puno ime klase D je paket2. paket21. D paket1. A ob=new paket1.A (arg); import paket1.A; paket1. A - pie se samo A import paket1.B; paket1. B - pie se samo B import paket1.*; - Sve to se nalazi u paketu 1 de se importovati jednom naredbom (sa*)
paket
U svakom folderu ima mjesta za dva foldera. Jedan je paket koji nosi ime foldera, a za klasu koja nema naredbu package pripada neimenovanom folderu.
*Postoje 4 nivoa prava pristupa: * 1. private metode klase 2. default (friendly) metode klase + isti paket 3. protected metode klase + potomci 4. public svi
Apstrakne klase
Su klase koje se nemogu instancirati
12 | S t r a n a
Figura
pravougaonik kvadrat
krug
trougao
double poluobim (Figura f) { return .5*f.obim ( ); } public abstract class Figura { public abstract double obim ( ); } Metode koje nemaju realizaciju zovu se apstraktne metode.
Interfejs
Omogudava da na vie naina vidi neku klasu. Ima 6 osobina interfejsa: 1. Nema ni jednu operacijonalizovanu metodu 2. Ako imaju polje ta polja public, static i final 3. Sam interfejs moe da bude poblic i default 4. Svi lanovi su public 5. Nemoe da se instancira 6. Omoguduje polimorfizam interface Naziv { //polja //zaglavlja metoda } Veza izmeu interfejsa i klase zove se veza implementacije.
Intrf m
s() m()
class K extends A implements I1, ..., In{ ... } Intrf in=newK(arg) ob instanceof Klase ob instanceof Intrf public interface Boja { int CRVENA= ; int PLAVA= 1; int ZUTA= 2; int ZELENA= 3; } Na ovakav nain se radi enumeracija u javi.
13 | S t r a n a
Boja.CRVENA Boja.ZUTA
Unutranje klase
Je klasa koja je lan druge klase. Osnovna namjena unutranje klase je da se koristi za interne potrebe spoljne klase. class K { class L { ... } }
Generike klase
Je klasa koja je parametrizovana drugim klasama. class ImeKlase <P1,...,PN >{ P1 x; P2 met (P3 par) } ImeKlase<A1,...AN> obj; public class GenClass<P>{ private P x; public class GenClass (P x){ this.x=x; } void set (P x){ this.x=x; } P get ( ){ return x; } }
Omotake klase
tip met (Object x) {...} Integer Long Float Double Character Boolean met (new Integer (3))
Paketi
java.lang java.util - Sadri kontejnerske klase Vector<T> - Ovo je po svojoj prirodi niz. Moe se element dodati ili ukloniti iz niza. Vector<int> v=new Vector<int>;(int je integer) Linkedlist<T>
Iteratori
Operacije koje su redosljedne ili sekvencijalne obrade se nazivaju iteratori. Imamo tri vrste iteratora: enumeracija, replicate, iterator. Sve se rijeava naredbom. for(ElKlasa e:v) obraditi e Vector<ElKlasa>v=new Vector<ElKlasa> ( );
14 | S t r a n a