Int PRG Teorijaggggg

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 14

Internet programiranje

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;

m - vrsta, n - kolona, P - vrijednosti elementa Klasa

Programski jezik JAVA (java.sun.com)


Spada u novije programske jezike nastala 1995. Java nudi portabilnost i prenosivost. Radi na principu virtualne maine, odnos no to je softverski raunar koji "glumi" drugi raunar. U Javi program se pr evodi u bajkod.
bajkod kompajler javac

1|Strana

Raspodjela memorije u Javi


Ovdje se se radi o virtualnoj memoriji, adresi... Javina memorija ima svega dva elementa i hip.
Pristupa se preko reference (u C je to pokaziva)

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.

Elementi programskog jezika Java (kao u C)


Alfabet je kao u C-u. Format je slobodan kao u C-u. Identifikatori Oni se grade kao u drugim programskim jezicima. Konvencije u Javi zadavanja imena: - Ime klase uvjek poinju velikim slovom - Kamel notacija se smatra obaveznom kod naziva polja, parametri metoda i lokalne promjenjive. - Naziv paketa pie se iskljuivo malim slovima - Funkcije koje neto oitavaju imaju prefiks get gety - Funkcije koje postavljaju imaju prefiks set - Provjeravanje neke metode is - Dali posjeduje neku osobinu has Komentari Ima tri vrste komentara (dugi, kratki i dokumentacija) /* tekst ... */ // tekst (dugi komentar)

(kratki komentar)

/** @ param ime. par znaenje @ return opis */

(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 bazn og 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 sekvenca ali 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 p olju. taj mehanizam se zasniva na modifikatorima. Javin sistem modifikatora ima loginiji pristup nego C.

domet x

3|Strana

Primjer klase krug: 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.

Staviti u isti folder da bi to sve moglo raditi.

Operatori i izrazi
Aritmetiki operatori + - ++ -- +- * / % += -= *= /= %= Relacioni operatori == != > >= < <= rezultati su TRUE i FALSE Logiki operatori ! & | ^ &= |= ^=

Operatori su Bulovog tipa.

Bit operatori ~ & | ^ >> >>> << &= |= ^= >>= >>>= <<=

Operatori su cjelobrojni ili char.

4|Strana

Uslovni operatori log.izraz ? izraz1 : izraz2 Logiki operator dodjele =

Konverzije
a op b a+b double float long int char

Java je jako tipiziran jezik za razliku od C-a.

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[]; x[2]; x.length

U Javi su svi tipovi niza aktuelni.

Nizovi u Javi se mogu inicijalizovati double [ ] y = { 1.3, - .8, 2.2, 17.6}

Matrice
Matrica tredstavlja niz nizova (niz gdje su elementi nizovi)

int matr [ ] [ ] = new int [2 ] [3 ]; int [ ] [ ] matr


0 1 matr 0 1 2 0 1 2

5|Strana

Stringovi
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.

Naredbe u programskom jeziku Java


Naredbe se djele u proste naredbe i upravljake strukture. Izrazi izraz; x = 1; p ++;

-Prosta naredba ima smisla samo ako ima boni efekat.

Upravljake strukture. Sekvence, selekcije, ciklusi i skokovi. Blok je ustvari selekcija. {deklaracije i naredbe}

Selekcije Postoje tri selekcije if, if else, switch.


if (log. izraz)naredba if (log. izraz)naredba1 else naredba2

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);

Skokovi. U Javi go to naredba nepostoji kao u C-u.


Break break; Pojavljuje se u dva konteksta (Switch i iskakanje iz ciklusa i iz bloka). Break dozvoljava labelu. break LABELA; L1: { LAB1: while (...){ L2: { LAB2: for (.. ...) { break L1: LAB3: while { } break LAB2; } } } }

6|Strana

Continue
continue; while ( ) { continue; _ _ _ }

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 pre nose 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

tip metod (par) { ... x= .5; <=> this.x= .5; ... }

this moe a nemora da se pie.

Instanciranje klase. To je isto to je kreirati i konstruisati objekat klase.


Krug kr; ... new Krug (5);

obK

New K (arg)

K obK; ... obK=new K(arg); Objekat se stvara sa new K obK=new Krug(arg); -Kradi oblik

Krug K1= new Krug (1);

K1 K2

Krug K2; K2=K1; Destrukcija objekta

Garbage Collector (GC)

Krug K=new Krug(3); ... K=new Krug (1); K=null;

Dodjela i uporeivanje

K1 K2

Krug K1= newKrug(1), K2; K2=K1;

K1==K2 Operacija poreenja nad referencama K1 equala (K2)

8|Strana

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 poublic class K { poublic static double x; } K.x y obK.y obK1.y obK.x=1; obK1.x

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.

Statike metode To je realizacija podprograma u Javi.


public static tip imeMet (par) { ... } Osnovna osobina statike metode je da se pozove direktno. K. imeMetode (arg) Math. sin (x) -Javina standardna klasa. Nestatiko moe da se obrada statikom, a obratno nije mogude. Kod inicijalizacije se uvijek prvo inicijalizuje statiko pa onda nestatiko.

Realizacija imenovanih konstanti. Imenovane konstante u Javi de biti realizovane mehanizmom 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

Klasa B nasljeuje klasu A.


B

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

class B extends A { //dodata polja //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.

Obradanje metode bazne klase


Predak M(1)

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)

Konstrukcija u ambijentu nasljeivanja*.

A1

Struktura objekta klase X X(){ Konstruktor An ... Linija do koje mi znamo (An i X)

A2

An+1

An

X(){ super (...) Podrazumjevani konstruktor je konstruktor bez parametara i on se poziva.

Polimorfizam. Je konteksno zavisno ponaanje.


1. succ 2. char x x+1 3. + sabiranje ili kontakanacija a+b 4. (int) a Parametarski obuhvata generike klase. Inkluzioni se odnosi na promjenjive i objekte i pojavljuje se u jednom sluaju sa tri podsluaja. To je operacija pridruivanja. Opti zakoni na pridruivanja je da se potomak moe pridruiti pretku a obrnuto nevai.
Predak M(1) ( )

...

Redosljed poziva (Prvi se poziva An)


X

Redosljed izvravanja (Prvi se izvrava A1)

Potomak

M(2) ( )

10 | S t r a n a

1. Potomak pot = new Potomak ( ); Predak pr; pr = pot;

2. tip met (Predak p) {...} m (pot)

3. Predak met (...){ Potomak p; ... return p; }

Predak pr; Potomak pot = new Potomak ( ); pr = pot; (2) pr.m ( ) Pri pozivu metode bide aktivirana verzija koja je odreena objektom, a ne referencom.

Dinamiko povezivanje (Dynamic linkage, Dynamic dispatch, late bindings)


K. ob K. m ( ) Prilikom redefinisanja kontrola pristupa se nesmje pootriti.

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.

11 | S t r a n a

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.
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*)

12 | S t r a n a

class Y { ... } class Z { ... }

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.

Package paket; class X { ... }

*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
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 implements Intrf { ... } Intrf in 0new K (arg) in.s( ) in.m ( )


A I1 K ... In

13 | S t r a n a

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; } Boja. CRVENA Boja. ZUTA Na ovakav nain se radi enumeracija u javi.

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

14 | S t r a n a

You might also like