Program Skis Ve
Program Skis Ve
Skripta iz predmeta
Programski Jezici
By LadyBrune
Sadraj :
1. Uvod u programske jezike ..1
2. Sintaksa programskih jezika7
3. Bazne apstrakcije Prvi deo...12
4. Bazne apstrakcije Drugi deo.16
5. Bazne apstrakcije Trei deo.......22
6. Proceduralne apstrakcije26
7. Implementacija progamskih jezika ...30
8. Apstrakcija podataka Prvi deo ..40
9. Apstrakcija podataka Drugi deo...42
10.Uvod u markup jezike .47
11. Procesiranje XML dokumenata ..54
12.MS implementacija W3C XML standarda..60
13.Jezike paradigme ...62.
14.Rad sa XML dokumentima u .NET okruzenju 66
15. .NET Framework 73
By LadyBrune
Uvod
I. Aplikacioni domeni
II. Metode programiranja
III. Kompjuterske arhitekture
I ) Aplikacioni domeni PJ : Razvijen veliki broj vrlo razliitih jezika za razliite aplikacione domene. Svaki
aplikacioni domen ima specifine potrebe
Inenjerski domen
o Proste strukture podataka (nizovi i matrice), ali se zato zahteva veliki broj preciznih
numerikih raunanja : FORTRAN-projektovan za precizna numerika izraunavanja
Poslovni domen
o Prvi vii programski jezik projektovan za poslovnu obradu podataka bio je COBOL :
Kasnije su razvijeni sistemi za upravljanje bazama podataka
Vetaka inteligencija
o Korienje simbola (umesto numerikih raunanja), logiki I funkcionalni jezici
Sistemsko programiranje
o Koristi se za sistemski softver
o Zahteva se efikasnost u izvravanju, zbog neprekidnog korienja ove vrste softvera
o Operativni sistem UNIX napisan u programskom jeziku C
Internet i WEB(domensko-specifini jezici) veoma aktuelan domen; ovo distribuirano I
heterogeno okruenje uticalo je na razvoj novih specifinih jezika koji su posebno pogodni za
njega
1
By LadyBrune
2
By LadyBrune
I. Apstrakcije u viim PJ
a. Bazne apstrakcije
b. Strukturne apstrakcije
c. Proceduralne apstrakcije
d. Apstrakcije podataka
II. Jezike paradigme
III. Specifikacija I implemetacija PJ
Bazne apstrakcije:
o Apstrahovanje memorijskih elija,
o Apstrahovanje interne reprezentacije primitivnih tipova podataka
o I Apstrahovanje implementacije operacija nad vrednostima takvih tipova
Strukturne apstrakcije
o Struktuirani tipovi podataka (apstrahovanje kolekcija meusobno povezanih podataka
niz, zapis, lista)
o Kontrolne strukture (sekvenca, selekcija, iteracija)
Proceduralne apstrakcije
o Sakrivanje sloenog koda sa prostim interfejsom
o Proceduralne apstrakcije u viim PJ podrane su potprogramima
Apstrakcije podataka
o Sakrivanje interne reprezentacije korisnikih tipova podataka pomou skupa operacija
(javni interfejs) preko kojih se stanja objekata tipa jedino mogu menjati
o Koncept se u savremenim viim PJ implementira preko klase
Razlike izmeu pojedinih vrsta programskih jezika baziraju sa na modelu, tj, paradigmi koju
podravaju.
Vrste jezika :
i. Specifikacija
Sintaksa: forma (struktura) programa
Semantika: znaenje programa
3
By LadyBrune
ii. Implementacija
Implementacioni modeli:
Kompajleri
Interpreter
Hibridni implementacioni sistemi
itljivost: je mera koliko je lako itanje i razumevanje programa napisanog u nekom programskom
jeziku. Znaajni faktori koji utiu na lako itanje i razumevanje programa:
4
By LadyBrune
Sintaksa jezika ili struktura elemenata jezika ima znaajan uticaj na itljivost programa.
prosta i nedvosmislena sintaksa: forma koda jasna
Pisanje programa je mera koliko se lako programski jezik moe koristiti za kreiranje programa u
odreenom aplikacionom domenu. Faktori koji utiu na lako uenje i pisanje programa:
Pouzdanost programa: Program je pouzdan ako se izvrava u skladu sa njegovim specifikacijama pod
svim uslovima. Sledee karakteristike imaju znaajan uticaj na pouzdanost programa u datom
programskom jeziku:
Cena
Ukupna cena projektovanja i realizacije programa u neko programskom jeziku je funkcija vie njegovih
karakteristika:
5
By LadyBrune
Izvravanje programa
Implementacioni sistem jezika
o Jezik iji je implementacioni sistem skup, ima manje anse za ire prihvatanje i
korienje
Pouzdanost
o Loa pouzdanost softvera izuzetno utie na poveanje cene
Odravanje
o Odravanje obuhvata korekcije i modifikacije softvera koji se ve koristi. Primarni uticaj
na cenu odravanja softvera ima itljivost programa.
Programerska okruenja
Programerska okruenja:
UNIX starije programersko okruenje; grafiki korisniki interfejs bio je glavni nedostatak
JBuilder, Eclipse programerska okruenja koja ukluuju kolekciju integrisanih alata za razvoj
Java aplikacija; pristup alatima preko GUI-a
Microsoft Visual Studio .NET novije softversko razvojno okruenje. Koristi se za razvoj softvera
u jednom od sledeih .NET jezika: C#, Visual BASIC.NET, Jscript, F#, managed C++
6
By LadyBrune
Jezik (prirodni ili vetaki) sastoji se od skupa stringova definisanim nad nekim alfabetom
Alfabet je konaan skup karaktera
Alfabet dekadnih cifara: (0,1,2,3,4,5,6,7,8,9,10)
Alfabet malij engleskih slova: (a,b,c,d,...w,x,y,z)
Alfabet programskih jezika: kod veine programskih jezika alfabet ine karakteri iz
ASCII skupa, savremeni jezici kao to su Java i C# koriste UNICODE
Slino vai i u programskim jezicima. Token je najmanja sintaksna jedinica u programu koja ima
znaenje. Tokeni u PJ se klasifikuju kao:
Identifikatori
Rezervisane rei
Operatori
Numerike konstante
Specijalni znaci (zagrade, separatori, ...)
Jedan nain je pomou renika jezika koji sadri listu svih rei (stringova) jezika
Drugi nain je pomou skupa pravila za formiranje stringova koji pripadaju nekom jeziku
Na koji nain kombinovati osnovne jezike elemente u ispravne sloenije jezike konstrukcije (reenice)?
Izuavanje programskih jezika, slino izuavanju priprodnih jezika, moe se podeliti na izuavanje:
7
By LadyBrune
Gramatike predstavljaju meta-jezik baziran na formalnoj teoriji koju je razvio lingvista Noam
Chomski, polovinom pedesetih godina prolog veka. Zapravo on je razvio gramatike za etiri vrste
jezika, od kojih se samo dve koriste za opis sintakse programskih jezika:
o Regularne
Najjednostavnija klasa gramatika prema hijerarhiji omskog
Koriste se za opis leksike strukture (tokena) jezika
Regularne gramatike mogu se koristiti za konstrukciju leksikog analizatora
(skenera). Postoje alati za automatsko generisanje skenera na osnovu
regularnih izraza
Regularne gramatike su znaajno slabije u svojim mogunostima u odnosu na
konteksno slobodne gramatike
o Konteksno slobodne gramatike
Regularni izrazi
- leksika specifikacija zadaje se u formalnoj notaciji preko regularnih izraza
- regularni izrazi su abloni (pattern) za prepoznavanje osnovnih leksikih elemenata jezika
(tokena)
- obezbeuju fleksibilne naine za pretraivanje i manipulaciju teksta, koji se baziraju na
ablonima
- prvi put su realizovani u UNIX okruenju
- notacija regularnih izraza prvi put ugraena u tekstualne editore (QED- Quick EDitor), a
kasnije se regularni izrazi iroko koriste i u veem broju UNIX pomonih programa (GREP
Globally search a Regular Expression and Print, expr, vi, lex)
- regularni izrazi koriste se u tekstualnim editorima, alatima za pretraivanje teksta i
programskim jezicima
8
By LadyBrune
Leksiki analizator (skener) prevodi tekst programa u niz tokena (tj prepoznaje tokene u ulaznom
tekstu, na osnovu zadatih leksikih specifikacija regularnih izraza)
9
By LadyBrune
Sintaksna struktura jezika opisuje se pomou gramatike koja definie pravila za pisanje
korektnih programa u nekom programskom jeziku
Konteksno-slobodne gramatike (CFG- Contex-free grammars) se koriste za formalni opis
sintakse PJ
CFG obino se zapisuju u BNF (Backus Naur Form) notaciji. To je
o Formalna notacija za opis sintakse jezika
o BNF je meta jezik za programske jezike
o BNF prvi put korien za opis sintakse programskog jezika ALGOL 60
Derivacije
Provera da li je ulazni niz tokena u skladu sa zadatom gramatikom moe se realizovati na sledei nain:
10
By LadyBrune
Parsna stabla: Drugi nain da se pokae da odreena sintaksna konstrukcija pripada jeziku definisanom
BNF gramatikom je opis izvoenje preko parsnog stabla. Svakom koraku izvoenja odgovara novo
podstablo. Kod silaznog parsiranja parser u toku izvoenja formira niz izvoenja koja se mogu prikazati
u obliku parsnog stabla (parse tree). Atraktivna karakteristika gramatika je da opisuju hijerarhijsku
sintaksnu strukturu jezika. Takve hijerarhijske strukture nazivaju se parsnim stablima.
Sintaksna analiza je faza u procesu translacije u kojoj se proverava da li je program napisan u skladu
sa gramatikom jezika
11
By LadyBrune
Parser (sintaksni analizator) je program koji proverava da li je ulazni niz tokena u skladu sa zadatom
gramatikom ; generie parsno stablo koje reprezentuje sintaksnu strukturu programa
Koncept apstrakcije
Apstrakcije koje podravaju programski jezici mogu se klasifikovati u sledee apstraktne nivoe:
I. Bazne apstrakcije
II. Strukturne apstrakcije
III. Proceduralne apstracije
IV. Apstracije podataka
12
By LadyBrune
Sakrivanje interne reprezentacije korisnikih tipova podataka pomou skupa operacija (javni
interfejs) preko kojih se stanja objekata tipa jedino mogu menjati
Koncept s eu savremenim viim PJ implementira preko klase
13
By LadyBrune
14
By LadyBrune
Jezici obino ukljuuju predefinisane tipove (boolean, integer, float, character), ali
omoguavaju programeru da
definie i nove tipove korisniki
definisane tipove
ivotni vek
Doseg
STATIKO (Static binding, Early bindings times) povezivanje se deava pre izvrenja i ostaje
nepromenjeno do kraja izvravanja programa
o Obezbeuje se vea efikasnost
DINAMIKO (Dynamic binding, Late binding times) povezivanje se deava u vreme izvrenja i moe
se menjati za vreme izvrenja programa
o Obezbeuje se vea fleksibilnost
Statiko kompilacija
15
By LadyBrune
Dinamiko interpretacija
Prednost:
o Fleksibilnost
Nedostaci:
o Visoka cena implementacije
Dinamika provera tipa
Zahtevaju se dodatne informacije o tekuem tipu promenljive
Promenljiva memorie vrednosti razliitih tipova u razliitim vremenima
izvravanja programa (zahtevaju se razliite veliine memorije)
Vreme interpretacije
o Loa detekcija greaka tipa
Provera tipa je aktivnost koja obezbeuje primenu operatora na operande kompatibilnih tipova
16
By LadyBrune
Greka tipa (type error): primena operatora na operand nekompatibilnog tipa (desna slika)
Statika provera tipa ako su sva povezivanja promenljivih sa tipovima u nekom jeziku statika.
Tipovi svih promenljivih poznati su u vreme kompajliranja i sve greke tipa detektuju se u vreme
kompajliranja
Efikasnost izvrnog koda
U veini savremenih programskih jezika akcenat je na statikoj proveri tipa
Statika provera tipa je oteana kada jezik dozvoljava da se u jednoj promenljivoj memoriu vrednosti
razliitih tipova u razliitim vremenima izvrenja
Primeri jezika u kojima nije mogue sve greke tipa otkriti pomou statike tipa: unija (union) u C i
C++, variant records u Pascal-u
Svrha unije je da postoji samo jedna promenljiva (u datom primeru u) koja moe da sadri vrednosti
razliitih tipova (u primeru to su tipovi string, float, int).
Dinamika provera tipa dinamiko povezivanje sa promenljivom zahteva proveru tipa u vreme izvrenja,
tzv dinamiku proveru tipa
Tipovi promenljivih poznati su samo u vreme izvravanja programa i provera tipa se vri u vreme
izvravanja (run-time) pre svake primene operacija dodeljivanja
Dodatna memorija za informacije o tekuem tipu promenljive
Vreme interpretacije (neefikasnost)
Fleksibilnost
Jezici koji zahtevaju dinamiku proveru tipa: script jezici (Perl, PHP, JavaScript), funkcionalni jezici
Kategorije promenljivih:
Statika
Stack-Dinamika
Eksplicitna heap-dinamika
17
By LadyBrune
Implicitna heap-dinamika
Statika promenljiva
18
By LadyBrune
Stack-dinamika promenljiva
Prednosti:
o Podrana rekurzija
o Ponovno korienje memorije
Stack-dinamike promenljive u PJ:
o Lokalne promenljive deklarisane u metodama u Java i C#
o Lokalne promenljive deklarisane u C i C++ funkcijama
Heap-dinamika promenljiva
19
By LadyBrune
Liste
Stabla
Grafovi
Problem Dangling reference (dangling pointer) pointer koji sadri adresu heap-dinamike
promenljive koja je alocirana
Problem Dangling reference javlja se u jezicima u kojima se eksplicitno zahteva dealokacija heap-
dinamike promenljive
Problem Lost heap-dinamika promenljiva alocirana promenljiva kojoj se ne moe pristupiti
(tzv garbage promenljiva)
o Ovaj problem dele jezici u kojima se zahteva eksplicitna dealokacija heap-dinamike
promenljive
Java
o Java objekti su heap-dinamiki i pristupa im se preko referentnih promenljivih
o Dealokacija dinamikih promenljivih je implicitna (automatska)(garbage collection)
C#
o Referentne promenljive, implicitna dealokacija
o Pointeri (interoperabilnost sa C i C++ kodom)
20
By LadyBrune
Karakteristike:
21
By LadyBrune
Statiki
Dinamiki
Statiki doseg (leksiki doseg) bazira se na tekstu programa i definie se u terminima leksike
strukture programa. Doseg promenljive se statiki odreuje, pre izvrenja programa (vreme
kompajliranja). Postoje dve kategorije programskih jezika, koje odreuje metoda za kreiranje statikog
dosega:
22
By LadyBrune
Primitivni tipovi
23
By LadyBrune
Primitivni tipovi:
o Celobrojni tip (Integer type)
Podskup skupa celih brojeva
Interna reprezentacija: binarna, hardverski podrana
Programski jezici podravaju razliite duine celih brojeva i u nekim PJ se
mogu oznaiti kao unsigned ili signed
Java podrava 4 razliite duine signed celih brojeva
Byte (8 bitova)
Short (16 bitova)
Int (32 bitova)
Long (64 bitova)
Celobrojni tip u C#
Sbyte
Byte
Short
Ushort
Int
Uint
Long
ulong
o Realni tip (Floating point data type)
Model realnih brojeva, ali reprezentacije su samo aproksimacije za realne
vrednosti
Veina programskih jezika obino podravaju dve vrste realnih brojeva
Float (realni broj sa jednostrukom tanou, 4by)
Double (realni broj sa dvostrukom tanou, 8by)
Interna reprezentacija realnih vrednosti preko mantise i eksponenta
veina novih raunara koristi IEEE Floating-
Point Standard format za prezentovanje
realnih brojeva
24
By LadyBrune
Nabrajajui tip definie ureeni skup vrednosti, koje su imenovane konstante. Obezbeuje nain za
organizovanje i grupisanje imenovanih konstanti. Imenovanim konstantama implicitno se dodeljuju
celobrojne vrednosti (0, 1, ), ali mogua su i eksplicitna dodeljivanja.
25
By LadyBrune
6. Proceduralne apstrakcije
Uvod u proceduralne apstrakcije
Dve vane vrste apstrakcija koje podravaju programski jezici su:
Proceduralne apstrakcije
Apstrakcije podataka
Stariji koncept od koncepta apstakcije podataka. Proceduralne apstrakcije sakrivaju sloenost koda sa
prostim interfejsom. Koncept je podran u gotovo svim viim programskim jezicima preko
potprograma.
Potprogram
Vrstu potprograma
Ime potprograma
Listu parametara (opciono)
Signatura potprograma definie broj i tipove formalnih parametara, obino i redosled (formalni
paranetar sintaksno je tzv dummy promenljiva)
Stvarni parametri (argumenti) reprezentuju vrednosti ili adrese koje se koriste i izrazu za poziv
potprograma
Procedure
Funkcije
26
By LadyBrune
Ako je funkcija taan model matematike funkcije, ona n eproizvodi boni efekat (side
effects), ve samo vraa rezultujuu vrednost kao svoj jedini efekat
U praksi funkcije stvaraju boni efekat
Pozicije parametara
Imena parametara
default vredosti za parametar
Redosled irelevantan
Ime formalnog parametra povezuje sa
imenom argumenta
Programski jezik ADA
Ada, C++
27
By LadyBrune
Postoje dva naina kako se vri transfer podataka preko prenosa parametara:
Kopiraju se vrednosti (prethodna slika ilustruje samoovaj nain)
Vrednostima se pristupa preko referenci
Pass-by-value (in)
Pass-by-result (out)
Pass-by-value-result (in out)
Pass-by-reference (in out)
Pass-by-result (out) Kada program zavri sa radom, vrednost formalnog parametra prenosi se (kopira)
u odgovarajui argument. Parametar se tretira u potprogramu ako lokalna promenljiva i mena
inicijalizacije preko vrednosti argumenta. Metoda je uvedena u programskom jeziku ALGOL 60, OUT
parametar u C#
28
By LadyBrune
Pass-by-value-result (in out) Kombinacija metoda pass-by-value i pass-by-result. Zahteva dve operacije
kopiranja. Korien u ALGOL-W, kasnijim verzijama FORTRAN-a, Ada
29
By LadyBrune
Kompajleri
Kompajler je program koji prevodi program napisan na vieprogramskom jeziku (izvorni kd), u
izvrni kd. Proces prevoenja zove se kompajliranje (eng compilation). Karakteristike:
30
By LadyBrune
Leksika analiza U ovoj fazi koristi se leksiki analizator (skener) koji prevodi tekst programa
u niz tokena.
Tablica simbola Leksiki analizator generie tablisu simbola u koju smeta atribute relevantne za
identifikovane tokena. Tablica simbola se koristi/aurira i u ostalim fazama procesa kompilacije.
Svakom tokenu pridruuje se vrsta tokena (identifikator, numerika konstanta, relacioni operatori,
specijalni znaci, itd.). Nekim tokenima kao to si identifikatori i numerike konstante pridruuju se i
drugi atributi. Na primer, numerikoj konstanti pridruuju se i atributi: tip (type integer ili type real) i
vrednost numerike konstante.
Sintaksna analiza U ovoj fazi zadatak parsera je da proita niz tokena koje mu alje skener i da
konstruie parsno stablo prema zadatim pravilima gramatike
Semantika analiza Provera statike semantike. U ovoj fazi vri se provera tipova, tj proverava
se da li su:
o Sve promenljive u programu deklarisane pre korienja
o Operandi svakog operatora su odgovarajueg tipa
o Broj i tip argumenata funkcije odgovara broju i tipu parametara u pozivu funkcije
Optimizacija meukda
Generisanje kda
Semantika analiza
Osnovna ideja:
31
By LadyBrune
Anotirano parsno stablo Parsno stablo anotirano sa vrednostima atributa na svakom voru. Proces
evaluacije atributa naziva se anotacija parsnog stabla. Sintetizovani atributi evaluiraju se korienjem
semantikih akcija u bottom-up (postorder) redosledu obilaska parsnog stabla.
32
By LadyBrune
33
By LadyBrune
AST (Abstract Syntax tree) jedan od moguih oblika meukda. Prostija struktura u odnosu na
parsno stablo, pogodnija za sledee faze kompilacije. AST je kondenzovano parsno stablo.
U toku procesa kopajliranja, kompajler prijavljuje ako postoje, greke u izvornom programu.
Greke se mogu javiti u razliitim fazama procesa kompajliranja tako da se mogu podeliti na:
o Leksike
o Sintaksne
o Semantike
Leksiki analizator
Leksiki analizator (skener, lekser) je program koji se koristi u leksikoj analizi za skeniranje ulaznog
teksta. Skener ita ulazni tekst i prepoznaje rei na osnovu zadatih ablona; prpoznatu re izdvaja i
klasifikuje u token. Zadatak skenera je da iz ulaznog niza znakova prepozna i izdvoji tokene. Pred
osnovne uloge, (prepoznavanje tokena), leksiki analizator obavlja i zadatak izbacivanja iz ulaznog
niza znakova delova koji nisu znaajni zasintaksnu analizu, (komentari, praznine-blanko znaci, tab i
newline simbole).
34
By LadyBrune
runo ili
Korienjem gotovih alata za generisanje skenera
Flex specifikacija sadri regularne izraze koji opisuju rei koje skener treba da
prepozna
U specifikaciji, svakom regularnom izrazu moe se pridruiti akcija koja se
izvrava kada se u ulaznom tekstu prozna string opisan regularnim izrazom.
Akcije se piu u C kdu i kopiraju se u datoteku koja sadri generisani skener u
obliku
C
funkcije yylex()
Svakom regularnom izrazu pridruene su akcije koje se izvravaju kada se prepozna token. U primeru,
parser poziva skener, pa su koriene akcije prosleivanja.
U globalnu promenljivu yylval smeta se vrednost tokena (ako vrsta tokena ima vrednosti).
Promenljiva yylval je tipa union, tako da moe memorisati vrednosti razliitih tipova.
Zadatak parsera: provera da li je ulazni niz tokena, dobijen od skenera, u skladu sa zadatom
gramatikom. Ova provera moe se realizovati na dva naina:
35
By LadyBrune
Kod top-down parsiranja parser u toku izvoenja formira parsno stablo. Izvoenja mogu biti:
S leva (lefmost): u svakom koraku izvoenja krajnji levi neterminal sa desne strane
produkcionog pravila zamenjuje se sa pravilom koje ga definie, (ili jednim od svojih
alternativnih pravila),
S desna (rightmost); us vakom koraku se zamenjuje krajnji desni neterminal
Parser na svakom koraku izvoenja preuzima s leva (left to right) jedan token iz ulaznog niza
tokena i proverava d ali gramatika predvia pojavu preuzetog tokena u tom koraku. Za top-down
parsiranje najee se primenjuje izvoenje s leva jer se tada simboli sa ulaza preuzimaju u
prirodnom redosledu (LL parseri)
Postupak redukcije kod bottom-up parsiranja je inverzan (suprotan) postupku izvoenja kod top-
down parsiranja. U praksi je prihvaen postupak redukcije koji se inverzan postupku izvoenja s
desna (desna derivacija). Postupak redukcije podrazumeva reduciranje nekog ulaznog stringa prema
startnom simbolu date gramatike.
redukciju:
oigledno da redukcija ne vodi do
startnog simbola date gramatike.
36
By LadyBrune
ANTLR je implementiran u Java programskom jeziku (Terence Parr, University of Sam Francisco).
ANTLRWorks je raznojno okruenje, jednostavno za korienje.
Terence Parr: The definitive ANTLR Reference: Building domain-Specific Languages. ANTLR
website:http//www.antlr.org/
Razlikuje tri faze kompilacije: Leksika analiza, sintaksna analiza i opciono jednu ili vie tree walking
faza.
Specifikacija za parser daje se u BNF notaciji (datoteka sa ekstenzijom .y). Svakom pravilu mogue
je pridruiti semantike akcije (u C kdu) koje se izvravaju kada parser prepozna dato pravilo. Na
osnovu specifikacije bison generie parser u C kdu (smeten u datoteci y.tab.c), tj. U obliku C
funkcije: int yyparse(). Parser u C kdu alje se C kompajleru da vi se kao izlaz dobio program a.out,
koji predstavlja izvrni parser za proveru sintakse ispravnosti ulaznog teksta.
37
By LadyBrune
Interpreteri
38
By LadyBrune
39
By LadyBrune
Tip je apstraktan, ako su klijentima (programima koji koriste definisani tip) vidljivi samo:
Skup opoeracija preko kojih se stanja objekata tipa jedino mogu menjati javni interfejs ATP
Naziv tipa Klijenti mogu da kreiraju instance (objekte) definisanig ATP
INKAPSULACIJA (Encapsulation)
Skrivanje informacija (Information hiding)
Deklaracija tipa i operacija nad obljektima tipa specificiraju se u jednom sintaksnom unit-u
Reprezentacija tipa i implementacija njegovih operacija mogu biti u istom ili posebnom
sintaksnom unit-u
U oba sluaja mora biti skrivena za klijente
Prednosti inkapsulacije:
Skrivanje informacija: omoguava korienje interfejsa ATP bez poznavanja njegove implementacije.
40
By LadyBrune
Reprezentacija tipa nije vidljiva za klijenta, ali mora biti vidljiva za kompajler (klauzula private
omoguava vidljivost reprenzentacije tipa za kompajler)
41
By LadyBrune
Inkapsulacija
Skrivanje informacija
- Private klauzula : Entiteti u private klauzuli su vidljivi samo za lanice klase i prijateljske (friends)
klase ili funkcije
- Public klauzulu :Javni entiteti su u public ; ova klauzula opisuje javni interfejs
- Protected klauzula: Za nasleivanje
42
By LadyBrune
U C++, klijenti mogu pristupati nekoj od javnih lanica klase, ali samo preko instanci klase
Klijentski programi mogu da pristupe nekom od javnih entiteta Ada package pomou njegovog
imena
Inkapsulacija
Skrivanje informacija Za svaku lanicu klase definie se vrsta pristupa; koriste se modifikatori pristupa
umesto klauzula
- Public
- Private
- Protected
Programski jezik Java koristi i package scope kao drugi mehanizam dosega (umesto prijateljskih
funkcija i klasa u C++). Svi entiteti u svim klasama koji nemaju modifikatore pristupa vidljivi su u celom
paketu.
43
By LadyBrune
Inkapsulacija
Skrivanje informacija Za svaku lanicu klase definie se vrsta pristupa, pomou sledeih modifikakatora
pristupa:
Reenje:
- Grupisanje manjih programskih unit-a koji su logiki povezani u jedan (kompilacioni) unit koji
se moe posebno kompajlirati
- Inkapsulacione konstrukcije obezbeuju nain za oraganizovanje programa u unit-e koji se
mogu, nezavisno jedan od drugih, kompajlirati
- Inkaspulacije se obino smetaju u biblioteke i raspoloive su za ponovno (reuse) korienje u
drugim programima
Inkapsulacione konstrukcije
44
By LadyBrune
- Assemblies, vea konstrukcija od klase i koristi se od strane svih .NET programskih jetika
- Assembly se kreira u procesu kompilacije programa napisanog u nekom .NET programskom
jeziku
- Assembly je kolekcija
datoteka koje mogu biti
DLL ili EXE
- DLL (Dynamic Link
Library) je kolekcija klasa i metoda koje se individualno povezuju sa izvrnim programom kada
je potrebno (na zahtev)
45
By LadyBrune
Assembly sadri
Imenovane inkapsulacije druga vrsta inkaspulacija koja se koristi u konstruisanju velikih programa
- Druga vrsta inkapsulacija koja se koristi za definisanje dosega imena u velikim programima
- Veliki programi definiu veliki broj globalnih imena, pa mora postojati nain za organizovanje
takvih imena u logike grupe
- Imenovane inkasulacije su logike inkapsulacije i koriste se za definisanje dosega (namespace-
a) imena
Namespaces imenovana
inkaspulacija reprezentuje se preko
specifikacije namespace. Svaka
biblioteka ina sopstveni namespace,
a za njihovo korienje izvan
namespace-a koriste se
kvalifikovana imena sa imenom
namespace
Imenovana inkapsulacija u C#
- Imenovana inkapsulacija u C# je
namespace
- Namespace-ovi su programski
elementi projektovani
prvenstveno za organizovanje
programskog koda
- Mogu se organizovati u
hijerarhijsku strukturu, koja se
reprezentuje preko
ugnjedavanja namespace-ova
- lanice namespace mogu da
budu: klase, strukture,
enumeracije, delegati, interfejsi
46
By LadyBrune
- Imenovana inkaspulaciona konstrukcija je package koji moe da sadri vie definicija klsa
- lanice definisane u klasi koja je sadrana u package-u mogu biti private, public, protected ili
su bez modifikatora pristupa, pa su u tom sluaju vidljive za sve klase u paketu (package scope
by default)
- Deklaracija paketa: package myStack;
- Klijent package-a referencira imena definisana u package-u koristei ili
o Puno kvalifikovano ime myStack.top
o Ili deklaraciju import, koja dozvoljava skraene reference za imena definiana u
package-u
Import myStack.*;
XML je danas postao defacto standard za opis sadraja i logike strukture (tekstualnih i multimedijalnih)
dokumenata i razmenu dokumenata na Web-u
Markup : oznake pomou kojih se dodaju posebna znaenja podatku. U XML-u koristi se tag za
predstavljanje markup-a
Podataka (teksta) i
Tagova
47
By LadyBrune
Korienje XML-a
48
By LadyBrune
Definisan u SGML
Koristi fiksni broj predefinisanih tagova
Prvenstveno projektovan za formatiranje i
prezentovanje dokumenata na Web-u
Elementima se mogu pridruiti atributi. XML atributi obezbeuju dodatne informacije o elementima.
Hijerarhijska struktura (stablo) koja se sastoji iz elementata, atributa i znakovnih podataka. XML
dokument ima jedan i samo jedan koreni (root) element. Svi ostali elementi uu strukturi su elementi
deca korenog elementa. Dozvoljeno je viestruko ugnjedavanje elemenata.
49
By LadyBrune
XML deklaracija- svaki XML dokument mora da sadri XML deklaraciju, tj instrukciju obrade kojom se
dokument identifikuje kao XML dokument
50
By LadyBrune
Definisanje tipova XML dokumenata W3C jeponudio dva standardnanaina za definisanje tipova
XML dokumenta, odnosno opisisivanje strukture XML dokumenta:
DTD nasleen od SGML-a. Poseban jezik za opis strukture dokumenta. Vrlo ograniene mogunosti
za definisaje tipova
51
By LadyBrune
XML Schema- preporuka W3C od maja 2001. XML Schema je data preko XML sintakse (XML ema je
XML dokument). Podrava definicije prostih i sloenih tipova i poseduje napredne mehanizme za
grupisanje XML elemenata u XML dokumentu. Za konstrukciju svake XML eme koristi se:
Deklaracija elemenata u XML emi - za svaki element u XML emi definie se naziv i tip (atributi name
i type)
Definisanje sloenih tipova sloeni tipovi se konstruiu od prostih i drugih sloenih tipova
korienjem konstruktora:
52
By LadyBrune
53
By LadyBrune
XML parser je softver koji ita XML dokument, analizira i ini dostupnim njegov sadraj i strukturu
aplikaciji preko API-a (Application Programming Interfaces).
1) XML parseri koji verifikuju samo sintaksnu ispravnost XML dokumenta (da li je XML dokument
dobro oformljen)
2) XML parseri koji vre validaciju XML dokumenta u skladu sa XML emom ili DTD
DOM model - Standardni objektno orjentisani programski interfejs za obradu XML dokumenata.
W3C standard. W3C DOM specifikacija prua samo definiciju interfejsa za DOM biblioteke, a ne i detalje
njihove implementacije.
DOM model reprezentuje XML dokument kao memorijsko stablo vorova (DOM stablo) i omoguava,
(preko skupa svojih interfejsa), navigaciju i izmene dokumenta.
Preko ovog modela se iz softverskih aplikacija moe manipulisati s XML dokumentima i njihovim
elementima kao sa objektima.
54
By LadyBrune
Prednosti:
Nedostaci:
55
By LadyBrune
DOM parseri MS
o XmlDocument (.NET Framework)
o MSXML (Microsoft XML Parser ili Microsoft XML Core Services)
Je COM (Component Object Model) implementacija W3C DOM modela
Razliite verzije MSXML su ukljuene u razliite MS proizvode kao to su MS
Internet Explorer, MS Office, MS SQL Server
MSXML obezbeuje jo i sledee servise: XSD, XSLT 1:0, SAX, Xpath
Java
o JAXP (java API for XML Processing) obezbeuje sledee servise:
DOM
SAX
XSLT
SAX model- Event-based model (zasnovan na dogaajima). Razvijen o dstrane XML-DEV grupe.
Industrijski standard (Verzija 2.0 2000.)
SAX parser ita XML dokument kao stream XML tagova. Prilikom itanja XML dokumenta. SAX
parser generie dogaaje kad god otkrije element / atribut / tekst / instrukciju obrade i alje
aplikaciji
Aplikacija obrauje dogaaje generisane od strane parsera. Aplikacija implementira
odgovarajue hendlere koji sadre metode kojima se ti dogaaji obrauju
56
By LadyBrune
SAX parseri:
XSLT eXtensible Stylesheet Language Transformation. XSLT je deklarativni jezik koji se koristi za opis
pravila transformacija XML dokumenta u
XSLT stylesheet dokument je XML dokument. XSLT instrukcije se izraavaju kao XML elementi.
Elementi koji se koriste za konstruisanje stylesheet dokumenta definisani su preko XSLT namespace-a,
lokacija se specificira preko URL-a:
- Stylesheet element sadri skup teplejt pravila koja se deklariu sa <xsl:template> elementima
- Pravila opisuju kako se pojedini elementi u XML dokumentu transformiu u rezultujue
elemente u izlaznom dokumentu
57
By LadyBrune
- Match atribut koristi se za povezivanje templejta sa nekim delom ulaznog XML dokumenta
- Vrednost match atributa je Xpath pattern
- XSLT instrukcija
- I mogue elemenata koji specificiraku neki eljeni izlazni tekst koji XSLT procesor treba da ubaci
u izlazni dokument
58
By LadyBrune
XSLT procesori:
- Standalone XSLT procesori: Java XSLT procesor, SAXON, Oracle XSLT, Xalan (Apache projekat)
- Korienje Web Browser-a za XSLT transformacije
o MS Internet Explorer 5.5 i novije (XSLT procesor u IE je deo MSXML parsera)
o Netscape 6.0
o JavaScript
- Korienje Web servera za XSLT transformacije : 3 naina za izvravanje XSLT transformacija
o Java servleti
o ASP (Active Server Pages)
o JSP (Java server Pages)
59
By LadyBrune
Obrada XML dokumenata u .NET Framework-u- - Postoje dve opcije obrade XML dokumenata:
60
By LadyBrune
Korienje XmlTextReader-a:
XmlValidatingReader&XmlNodeReader
Korienje XmlTextWriter-a :
61
By LadyBrune
- System.Xml.Xsl namespace
- Transformie ulazni XML dokument
korienjem XSLT stylesheet-a
- Kljune metode
o Load
o Transform
62
By LadyBrune
Obezbeuju:
- Prosta lista (A B C D)
- Ugnjedena lista koja sadri 4 elementa (A (B C) D (E(FG)))
63
By LadyBrune
Logiki jezici
Dve osnovne karakteristike logikog programiranja su: upotreba injenica i pravila, upotreba
(primena) dedukcije (izvoenja) za odgovaranje na pitanja.
injenica tvrenje o nekoj osobini objekta ili vezi izmeu dva ili vie objekta. injenice se u programu
predstavljau predikatima oblika: P(X1, ...,Xn)
Primer: injenica otac (Petar, Milan) ima znaenje da su Petar i Milam u relaciji otac, tj Petar je
Milanov otac
Pravilo omoguava izvoenje o postojanju osobine ili veze, zasniva se na preduslovima. Pravilo se
zapisuje u obliku:
64
By LadyBrune
Logiki jezici: Prolog (PROgramming in LOGic), Datalog deklarativni logiki upitni jezik (Prolog-like)
Objektno-orjentisani jezici
Javili su se kao odgovor na softversku krizu kao nain da se , grupisanjem objekata sa slinim osobinama
u klase (a ne uz aplikacije), dobije programski kod koji se moe ponovo upotrebiti. Ekstenzija
imperativne paradigme. Objektno-orjentisanu paradigmu karakteriu sledee osobine:
Program: objekti izmeu sebe komuniciraju porukama. Porukom se od objekta koji ih prima zahteva
da izvri neku od operacija definisanih u klasi kojoj pripada.
Skrivanje informacija objektu se moe pristupiti samo preko poruka tj metoda koje su
definisane za klasu kojoj objekat pripada
Uaurenje podataka i operacija u celinu (objekat)
Nasleivanje- nova klasa moe se definisati kao izvedena klasa (podklasa) ve definisane klase
(osnovne klase ili nadklase)
Polimorfizam
65
By LadyBrune
Domensko-specifini jezici
Web domen:
o Markup jezici. HTML, XML
o Script jezici: JavaScript, PHP, CSS (cascading style sheet)
Domen relacione baze podataka
o SQL
Domen matematike
o MATLAB
DSJ se mogu izraavati u tekstualnoj i grafikoj notaciji. Sa aspekta implementacije, DSJ se mogu
klasifikovati na: interne (DSJ implementira se u jeziku domainu (host language)) i eksterne .
Za razvoj i implementaciju eksternih DSJ koriste se softverski alati:
Alati zasnovani na generatorima parsera u kojima se specificirani jeziki model zasniva na
gramatikama
Napredni alati (jezika okruenja) u kojima se specifikacija eksternog modela bazira na
metamodelu
XML parseri
XML parser, je u sutini, softver koji ita XML datoteku i ini dostupnim podatke koji se u njoj nalaze.
Postoje dva razliita pristupa implementaciji XML parsera:
W3C DOM specifikacija prua samo definiciju interfejsa za DOM biblioteke, a ne i detalje
njihove implementacije
SAX nije W3C preporuka ve industrijski standard
66
By LadyBrune
Microsoft MSXML
Java- Xerces2, XML4J, Porject X. JDOM
C Expat
Microsoft je razvio XML parser tehnologiju koja omoguava programski pristup XML podacima. Ivaj
parser se naziva Microsoft XML Parser (kada su upitanju verzija 3.0 i prethodne verzije) odnosno,
Microsoft XML Core Services (za verziju 4.0). Za oba se koristi skraenica MSXML. MSXML omoguava
korisnicima da razviju aplikacije zasnovane na XML-u. Meu osnovnim servisima koje MSXML prua
alazi se i podrka projektantima za:
Document Object Model (DOM), standardna biblioteka interfejsa aplikacionih programa (API)
za pristup XML dokumentima
Simple API for XML (SAX2), programska alternativa obradi zasnovanoj na DOM-u
SAX nije implementiran u .NET Frameworku iako se moe formirati korienjem XmlReader klase.
67
By LadyBrune
DOM Parser
Document Object Model (DOM) je objektni model (stablo), kojim se prikazuje struktura i sadraj XML
dokumenta. Ovim modelom upravlja MSXML parser.
Dom tretira XML podatke kao standardni skup objekata. System.Xml namespace prua programsku
reprezentaciju XML dokumenata i vorova. Zasnovan je na W3C DOM Level Core i DOM Level Core 2
preporukama. Koncepti koje prua System.Xml namespace:
- XmlDocument
- XmlNode
- XmlNodeList
- XmlAttribute
- XmlAttributeCollection
- ChildNodes ...
Dakle kao rezultat parsiranja dobija se XmlDocument klasa i klase koje su sa njom povezane.
68
By LadyBrune
- XmlDocument
- XmlDocumentFragment
- XmlAttribute
- XmlEntity
- XmlLinkedNode
- XmlNotation
XmlNode klasa prua skup metoda i svojstava
pomou kojih se moe uzeti ceo vor, kao i
informacije koje taj vor sadri (npr tekst).
XmlDocument klasa
XmlDocument objekat prestavlja konkretan XML dokument i sadri sve informacije o njemu. Sam
dokument s eposmatra kao jedan vor koji predstavlja vrh stabla i sadri sve ostale vorove ukljuujui
i vor koji predstavlja koreni element dokumenta, koji daljesadri sve vorove u dokumentu: element,
atribute.
Kada postoji referenca na dokument mogue je kretanje po hijerarhiji. Preko XmlDocument objekta
moe se pristupiti ChildNodes svojstvu, koji prua mogunost pristupa svim vorovima u dokumentu,
sa vrha na dole. vorovi se pojavljuju u istom redosledu u kome su se malazili u XML datoteci.
ChildNodes svojstvo imaju i svi ostali vorovi u hijerarhiji.
69
By LadyBrune
70
By LadyBrune
ema je XML dokument koji definie klasu XML dokumenata specificiranjem njihove strukture. ema
definie dozvoljeni sadraj XML dokumenta odnosno opisuje gramatiku koje dokumenti moraju da se
pridravaju da bi se smatrali validnim u odnosu na datu emu. ema definie strukturu, sadraj i
semantiku XML dokumenta.
.NET Framework omoguava I manipulisanje XML emama pomou SOM-a. Omoguava itanje,
izmenu i validaciju XML ema programskim putem. SOM radi sa XML emama na sliam nain kao to
DOM radi sa konkretnim XML doumentima.
71
By LadyBrune
72
By LadyBrune
15.NET Framework
.NET Framework
osnova za ispunjenje vizije
servisi i nove tehnologije koje omoguavaju razvoj distribuiranih aplikacija
.NET platform
Hardver
Serveri, radne stanice, personalni raunari i neraunarski ureaji kao to su mobilni telefoni, pejderi, ...
Operativni sistem
Windows Server 2003,Windows XP, Windows 2000, Windows CE, BSD Unix, Linux, ...
73
By LadyBrune
.NET Framework
Obezbeuje
komponentnu infrastrukturu (Component infrastructure)
integraciju programskih jezika (Language integration)
internet interoperabilnost (Internet interoperability)
jednostavan razvoj (Simple Development)
jednostavnu instalaciju (Simple Deployment)
pouzdanost (Reliability)
bezbednost (Security)
74
By LadyBrune
.NET jezici
C# (C Sharp) nov jezik razvijen posebno za .NET Framework. Postojei jezici su ili redizajnirani ili proireni (VB.NET,
managed C++, ...)
75
By LadyBrune
dok se Java kod interpretira, MSIL se uvek prevodi (ne postoji gubitak performansi koji je neminovan prilikom
interpretacije)
ne prevodi se cela aplikacija odjednom, ve samo deo koji se pozove
prevedeni kod se uva sve dok se aplikacija ne zavri
jezika interoperabilnost
kod dobijen prevoenjem iz jednog programskog jezika u MSIL, je interoperabilan sa kodom koji je na isti nain
dobijen iz nekog sasvim drugog programskog jezika
Karakteristike MSIL-a
Objektna orijentisanost i korienje interfejsa
podrava sve osobine objektno orijentisanih jezika ukljuujui apstrakciju podataka, nasleivanje, polimorfizam i
korisne koncepte kao to su izuzeci i dogaaji
podrava jednostruko nasleivanje klasa
klase koje implementiraju dati interfejs moraju da obezbede implementaciju metoda i svojstava naznaenih
konkretnim interfejsom
stroga tipiziranost
svaka promenljiva pripada odreenom, konkretnom tipu podataka
nisu dozvoljene operacije koje ostavljaju mogunost dvosmislenog tumaenja na koju vrstu podataka se njihov
rezultat odnosi (Variant u VB-u)
ta je omogueno ?
jezika interoperabilnost
automatsko upravljanje memorijom
bezbednost
aplikacioni domeni
Jezika interoperabilnost
klase napisane u jednom jeziku mogu direktno da komuniciraju sa klasama koje su napisane u drugom jeziku,
odnosno:
klasa napisana u jednom jeziku moe da nasledi klasu napisanu u drugom jeziku
klasa moe da sadri primerke drugih klasa koje su realizovane korienjem razliitih jezika
76
By LadyBrune
objekat moe direktno da pozove metodu drugog objekta koja je napisana u drugom jeziku
objekti se mogu slobodno prenositi izmeu metoda
Sklop (assembly)
Sklop je kolekcija koja se sastoji od jedne ili vie
datoteka, pri emu jedna od njih sadri
metapodatke poznate pod nazivom manifest
sklopa
manifest sklopa definie ta sve ulazi u sastav
sklopa, verzije, autora sklopa, kakve su
bezbednosne dozvole potrebne da bi sklop radio
IL kod + metapodaci kojima se opisuju tipovi i
definisane metode u kodu
sklop je u potpunosti samoopisujua logika
jedinica
dve vrste
privatni sklopovi
zero impact installation
moe ih koristiti samo njihov softverski paket
deljeni sklopovi
instaliraju se u poseban direktorijum globalni ke
sklopa
deljena biblioteka moe ih koristiti bilo koja druga
aplikacija
78