View
3
Download
2
Category
Preview:
DESCRIPTION
Iz Wikipedije, slobodne enciklopedijeTaiji dijagram, simbol taoizmaTaoizam je naziv za filozofska i religijska učenja koja se temelje na metafizičkom tumačenju kineskog znaka Tao. Taoisti Tao tumače kao princip kontinuiteta u vječno mijenjajućem Univerzumu. Taoizam je ostavio neizbrisiv trag na razne oblasti kineske kulture, a poslije se proširio i po drugim oblastima istočne Azije.Jedan od utemeljitelja taoizma je i Lao Tse, koji je živio u 6. vijeku pne. Lao Ce je poučavao da ljudi treba da žive u harmoniji sa prirodom. On je naglašavao važnost jednostavnog života i održanje ravnoteže sa prirodom, pri čemu se nije slagao sa Konfučijevim uvjerenjem da su u jednom društvu najvažniji snažna porodica i država. On nije vjerovao u zakone i poučavao je da je najbolji način života ne preduzimati nikakve snažne, protivprirodne akcije. Temeljno djelo taoizma je Tao Te Chinga, koja se često prevodi kao Knjiga Puta i Vrline.Središnji pojam taoizma je Tao (ili Dao). Tao je nepromjenjiv, prije je svih stvari. Od njega potiču nebo i zemlja, kao dva pola. Muški princip Jang (duh, dobro, ljubav, svjetlo) i ženski princip Jin (tvar, zlo, mržnja, tmina), koji zajedno održavaju sklad svijeta u neprestanom mijenjanju. Taoisti Tao tumače kao princip kontinuiteta u vječno mijenjajućem univerzumu.Taoizam kao religija se pojavljuje dosta kasnije, u 2. vijeku ne. Taoizam je jedna od velikih religioznih tradicija nastalih u Kini. Za razliku od velikih zapadnjačkih religija, taoizam nema jednog Boga ni proroka osnivača. Jedno od glavnih vjerovanja taoizma je da svaka osoba treba da slijedi sopstveni Tao ili Put. Univerzalan, a ipak veoma lične prirode, taoizam je imao značajnog utjecaja na duhovni život mnogih kultura, kako u Aziji, tako i širom svijeta.Važno je međutim napomenuti da taoizam nije jasno izdiferencirana religija, baš kao ni konfucijanstvo i kineski budizam, već svi zajedno čine jednu cjelinu - kinesku narodnu religiju koja se je godinama razvijala i prihvaćala razna učenja. Podjela Kineza na taoiste, budiste i konfičijaniste je jedna velika zabluda na Zapadu, a u stvari su ovo samo tradicije koje zajedno čine jednu cjelinu. Istina je da se Kinezi izjašnjavaju kao pripadnici jedne od ovih religija, ali to je samo zato što time žele istaknuti da su više privrženi tom vjerovanju nego ostalima. Mnogi deklarirani taoisti ili konfucijanci idu često u budističke hramove i obrnuto.
Citation preview
04/28/23 Programski jezici 1
Moduli kao sredstvo apstrakcijeModuli kao sredstvo apstrakcije
04/28/23 Programski jezici 2
DekompozicijaDekompozicija
Kompleksna aktivnost se razlaže na niz jednostavnih koraka koji se dalje redukuju na niz elementarnih akcija (atoma) relevantnih za domen istraživanja.
Svaki korak u dekompoziciji zahteva opis niza elemenata sa puno detalja.
04/28/23 Programski jezici 3
ApstrakcijaApstrakcija
Konceptualno pojednostavljenje složenog sistema pri čemu se namerno ignorišu detalji a ističu globalna svojstva
Na primer, koncept građevine ignoriše činjenicu da li su se za gradnju koristile cigle,crepovi, malter i sl.
Na sličan način složene aktivnosti predstavljaju se kao elementarne tako što se imenuju i to se privremeno ignorišu detalji koje tako imenovani koncept obuhvata.
04/28/23 Programski jezici 4
Apstakcija u programskim Apstakcija u programskim jezicimajezicima
Jaki tipovi podataka - prvi korak ka apstrakciji
Moduli kao sredstvo apstrakcije Apstrakni tipovi podataka Objekti i klase objekata Softverske komponente i Web servisi
04/28/23 Programski jezici 5
Pregled tehnika programiranjaPregled tehnika programiranja Nestrukturno - proceduralno programiranje
Glavni program direktno operiše sa globalnim podacima.
Dugi i nepregledni programi
Copy paste- Kod se višestruko koristi kopiranjem delova
04/28/23 Programski jezici 6
Pregled tehnika programiranjaPregled tehnika programiranja
Proceduralno programiranje
Program se može posmatrati kao sekvenca poziva potprograma (procedura).
Strukture podataka se modeliraju odvojeno od koda procedura koje ih obrađuju.
Višestruko korišćenje koda postiže se preko biblioteka procedura i funkcija.
04/28/23 Programski jezici 7
Pregled tehnika programiranjaPregled tehnika programiranja
Modularno programiranje
Procedure sa zajedničkom funkcionalnošću su integrisane u jedan modul
Svaki modul može da ima svoje sopstvene podatke. Višestruko korišćenje struktura podataka i procedura
04/28/23 Programski jezici 8
Pregled tehnika programiranjaPregled tehnika programiranja
Object Oriented Programming
Strukture podataka i procedure integrisane u klase Program može da se posmatra kao mreža objekata koji su u interakciji pri čemu
svaki objekat svoje stanje. Apstracija, inkapsulacija, nasleđivanje i polimorfizam Ponovno korišćenje objekata
04/28/23 Programski jezici 9
Pregled tehnika programiranjaPregled tehnika programiranja
Komponentno programiranje (Component Development)
Aplikacija se gradi od pšrekompiliranih softverskih blokova, slično konceptu integrisanih kola u elektronici
Akcenat je na modeliranju interfejsa Komponente se mogu višestruko koristiti (Binary reuse of functionality) Nezavisnost od programskog jezika i platforme na kojoj se aplikacija koristi.
04/28/23 Programski jezici 10
Moduli - AdaModuli - Ada
package IME_PAKETA is --Opisi podataka i funkcija paketa
end IME_PAKETA;
package body IME_PAKETA is--Opisi podataka;--Imperativni deo paketa;
end IME_PAKETA;
Vidljivi deo
Skriveni deo
04/28/23 Programski jezici 11
Moduli - PascalModuli - Pascal
04/28/23 Programski jezici 12
Lokalno povezani podaci i operacije (1)Lokalno povezani podaci i operacije (1)
package PRIMER is--Definicija tipova podataka;type T is --itd.--Opisi podataka;V:T;--Globalne promenljive;--Opisi procedura i funkcija;procedure PROC (X:in T;Y:out T);function F(X:in T)return T;end PRIMER;
04/28/23 Programski jezici 13
Lokalno povezani podaci i operacije (2)Lokalno povezani podaci i operacije (2)
package body PRIMER isprocedure PROC (X:in T;Y:out T)is--Detalji same procedure;end PROC;function F (X:in T)return T is--Detalji same funkcije;end F;end PRIMER;
04/28/23 Programski jezici 14
Apstraktni tipovi podatakaApstraktni tipovi podataka
package MAGACIN isMAX:constant INTEGER :=100;subtype INDEX is INTEGER range 1..MAX;subtype POKAZIVAC is INTEGER range 0..MAX;type STEK(DIM:INDEX)is record
MEM:array (1..DIM)of INTEGER;POK:POKAZIVAC :=0;--Magacin je prazan;
end record ;procedure PUSH(S:in out STEK;PODAT:in
INTEGER);procedure POP (S:in out STEK);function VRH (S:STAK)return INTEGER;function PRAZAN(S:STEK)return BOOLEAN;function PUN (S:STEK)return BOOLEAN;
end MAGACIN;
04/28/23 Programski jezici 15
(2)(2)package body MAGACIN isend MAGACIN;--Glavni program:declareuse MAGACIN;MOJ_STEK:STEK(DIM =>40);--Magacin sa 40 elemenata;VRED,PRIV:INTEGER;begin
--Generisanje nove vrednosti;PUSH(MOJ_STEK,VRED);if not PRAZAN(MOJ_STEK)then
POM :=VRH(MOJ_STEK);POP(MOJ_STEK);
end if ;--....end ;
04/28/23 Programski jezici 16
ZatvaranjeZatvaranje
package ZASTICENI_MAGACIN isMAX:constant INTEGER :=40;type STEK(DIM:INTEGER range 1..MAX)is private
;procedure PUSH(S:in out STEK;I:INTEGER);--Ostalo je sve isto kao u prethodnom
primeru;private type STEK(DIM:INTEGER range 1..MAX)is
recordMEM:array (1..DIM)of INTEGER;POK:INTEGER range 0..MAX :=0;
end record ;end ZASTICENI_MAGACIN;
04/28/23 Programski jezici 17
Predefinisanje operatora u funkciji Predefinisanje operatora u funkciji apstrakcijeapstrakcije
package KOMPLEKSNI istype COMPLEX is private ;function "+"(X,Y:COMPLEX)return COMPLEX;function "-"(X,Y:COMPLEX)return COMPLEX;function "*"(X,Y:COMPLEX)return COMPLEX;function "/"(X,Y:COMPLEX)return COMPLEX;function "*"(X:COMPLEX,Y:INTEGER)return COMPLEX;function PAR_COMPLEX(X,Y:FLOAT)return COMPLEX;privatetype COMPLEX isrecordRE,IM:FLOAT :=0.0;end ;end KOMPLEKSNI;
04/28/23 Programski jezici 18
Predefinisanje operatora (2)Predefinisanje operatora (2)package body KOMPLEKSNI isfunction PAR_COMPLEX(X,Y:FLOAT)return COMPLEX is
beginreturn COMPLEX'(X,Y);end PAR_COMPLEX;
function "+"(X,Y:COMPLEX)return COMPLEX isbeginreturn COMPLEX'(X.Re +Y.Re,X.Im +Y.Im);end "+";
function "-"(X,Y:COMPLEX)return COMPLEX isbeginreturn COMPLEX'(X.Re -Y.Re,X.Im -Y.Im);end "-";
04/28/23 Programski jezici 19
function "*"(X,Y:COMPLEX)return COMPLEX isbeginreturn COMPLEX'(X.Re*Y.Re -X.Im*Y.Im,X.Re*Y.Im
+X.Im*Y.Re);end "*";
function "/"(X,Y:COMPLEX)return COMPLEX isD:FLOAT :=Y.Re **2 +Y.Im **2;beginreturn COMPLEX'((X.Re *Y.Re +X.Im *Y.Im)/D,X.Re *Y.Re -X.Im *Y.Im)/D);end "/";
function "*"(X:COMPLEX,Y:INTEGER)return COMPLEX isbeginreturn COMPLEX'(X.Re *FLOAT(Y),X.Im *FLOAT(Y));end "*";
end KOMPLEKSNI;
04/28/23 Programski jezici 20
Glavni programGlavni programprocedure GLAVNI isdeclareuse KOMPLEKSNI; --Navodenje modula koji se koristi;A,B,C,D:FLOAT;X1,X2:COMPLEX;--Tip COMPLEX se direktno koristi;begin
READ (A,B,C,D);X1 :=PAR_COMPLEX (A,B);X2 :=PAR_COMPLEX (C,D);X1 :=X1 +X2; --Sabiranje kompleksnih brojeva;C :=C +D; --Sabiranje realnih brojeva;
end ;
04/28/23 Programski jezici 21
Objektno orijentisani jeziciObjektno orijentisani jezici
04/28/23 Programski jezici 22
Osnovni konceptiOsnovni koncepti
- Klasa Definiše strukturu objekata (podatke) i njihovu funkcionalnost
(ponašanje). Klasa može da se posmatra kao šablon objekata, (template) kojim se opisuje model po kome ae se kreirati novi objekat. Klase se ponekad nazivaju fabrikama objekata (Cox 1986)
- Objekat Primerci (istace) klasa. pojedninaeni,. Svi objekti jedne klase imaju strukturu definisanu klasom i nad njima se
mogu izvršavati samo operacije definisane klasom kojoj pripadaju.
- Poruka Objekat odgovara na poruku time što se izvršava odgovarajući metod. Kažemo da na objekte delujemo porukama, pri čemu svaka poruka
pretstavlja poziv metoda (funkcije ili procedure) definisanog u klasi kojoj objekat pripada.
04/28/23 Programski jezici 23
Objektno orijentisano programiranjeObjektno orijentisano programiranje
krug center: x @ y radius:r;
04/28/23 Programski jezici 24
Interakcija između objekataInterakcija između objekata
A “Stand up”Komande B
“ “ (yes/no)
A “Look up in !”
B Koande sa argumentima
A “Where were you born?”
B “I was born in “
Pitanja
A B “Did you see on ?”Pitanja sa
argumentima
04/28/23 Programski jezici 25
Apstrakcija - Apstrakcija - zatvaranjezatvaranje
programer, kreator klase Korisnik klase
Interface (Methods and
messages)
04/28/23 Programski jezici 26
public class Light {
protected boolean isOn;
public void TurnOff() {/*...*/} public void TurnOn() {/*...*/} }
PropertiesMethods Class
Primer
Kreiranje objekta:
Light kitchenLight = new Light();kitchenLight.TurnOn();
04/28/23 Programski jezici 27
NasleđivanjeNasleđivanje Nasleđuju se sva svojstva postojeće klase i njima se dodaju
nova.
Uspostavlja se “is-like-a” relacija
Class Derived extends Base {
}
04/28/23 Programski jezici 28
NasleđivanjeNasleđivanje
Nasleđivanje omogućava da se definišu nove klase na osnovu postojećih.
Nova klasa se definiše kao specijalizacija ili proširenje neke klase koja već postoji.
Nova klasa inicijalno ima sva svojstva klase koju nasleđuje.
Novoj klasi mogu da budu pridodata nova svojstva.
Kada jedna klasa, u OO terminologiji podklasa (“subclass”, “child class”, “derived class”), nasleđuje neku klasu , u OO terminologiji superklasa (“superclass”, “parent class”, “base class”), onda podklasa nasleđuje sva svojstva superklase.
04/28/23 Programski jezici 29
NasleđivanjeNasleđivanje
Podklasi mogu biti pridodata nova svojstva (podaci, metodi, poruke), a neka svojstva (prvenstveno metodi) mogu biti izmenjena sa ciljem da se nova klasa prilagodi specifičnimpotrebama.
Sva dodata svojstva i izmene odnose se na poklasu (subclass) dok originalna klasa (superclass) ostaje nepromenjena.
Svojstva koja nisu definisana u podklasi automatski se preuzimaju iz njene superklase.
04/28/23 Programski jezici 30
Šta se može menjatiŠta se može menjati
Nove poruke, time se proširuje interfejs nove klase. Za svaku novu poruku treba da bude definisan odgovarajući metod.
Novi podaci instanci, time se prođiruje struktura objekata. Posmatrano sa strane apstrakcije objekti podklasa su specijalizovani (detaljnije opisani) od objekata superklasa. Subklase ne samo da imaju veću funkcionalnost već imaju i više svojstava..
Postojeći metodi mogu biti predefinisani, na taj način se modifikuje ponačanje objekta. U ovom slučaju govorimo o predefinisanju (overriding) metoda.
04/28/23 Programski jezici 31
Semantika nasleSemantika nasleđđivanjaivanja
Uspostavlja se Is-A relacija
Person
namefirstnameage
getName( )getId( )
Student
studIdgetCourses ( )getId( )
Employee
salary
getSalary ( )
04/28/23 Programski jezici 32
IS A IS A relacijarelacija
Nasleđivanjem se definiše IS A relacija između originalne klase i nove, izvedene klase.
Kako objekti podklase mogu da prime sve poruke kao i objekti superklase oni se mogu koristiti svuda gde se mogu koristiti i objekti superklase.
Svaki objekat jedne klase je i (is an) objekat njene superklase.
04/28/23 Programski jezici 33
Kompozicija Kompozicija
Kompozicija
MyNewClass
Instance ofexisting class
Instance ofexisting classInstance of
existing class
class Car {Engine eng = new Engine(100);Wheel[] wheels = new Wheel[4];Horn horn = new Horn();...}
04/28/23 Programski jezici 34
Kompozicija ili nasleđivanje
Engine
Car
Wheel[]Window []
Door []
Car
Wheel[]Window []
Door [] Engine
Car is an engine? Car has engine
Pogrešno
Ispravno
Nasleđivanje je određeno u fazi kompiliranja, dok kod kompozicije objekat može da se kreira zakasnelo u fazi izvršavalja.
04/28/23 Programski jezici 35
Hierarhija klasaHierarhija klasa
Object C1 C1a
C1b
C2 C2a
C2bPrimer hierarhije klasa
Kada se nasleđivanje primeni višestruko dobija se struktura tipa stabla koja se obično naziva hierarhija klasa.
04/28/23 Programski jezici 36
PolimorfizamPolimorfizam
Polimorfizam se često navodi kao najače svojstvo OO jezika.
Termin označava “više formi” - "many forms", i u kontekstu objektnih jezika ukazuje na mogućnost da se metodi više objekata pozivaju preko istog interfejsa.
Sposobnost da raziličiti objekti odgovore ne iste poruke (na sebi svojstven način).
Koristi se isti interfejs za ratličite objekte.
04/28/23 Programski jezici 37
PolimorfizamPolimorfizam
Zakasnelo povezivanje.
04/28/23 Programski jezici 38
Još jedan primer Još jedan primer polimorfizmapolimorfizma
Shape c = new Circle();Shape t = new Triangle();Shape s = new Square();// ...c.draw();t.draw();s.draw();
04/28/23 Programski jezici 39
Apstraktne klase i interfejsiApstraktne klase i interfejsi
Osnovne klase koje služe kao osnova za generisanje novih klasa.
Shapeprintresize
Lineprintresize
Circleprintresize
BoldLineprint
04/28/23 Programski jezici 40
- ima krila, leti
ApstrakcijaApstrakcija
Mentalni proces izdvajanja nekih karakteristika isvojstava i isključivanja preostalih koja nisu relevantna
Apstrakcija je uvek sa nekim ciljem, namenom Istre stvari moguće je apstrakovati na više različitih
načina Svaka apstrakcija je nepotpuna slika realnosti Ne želimo potpunost, već samo adekvatno
modeliranje!
04/28/23 Programski jezici 41
TTipovipovii apstrakcije apstrakcije Klasifikacija — grupa sličnih instanci objekta
DBMSsoftware
Sybase. . .Access Oracle
Ističu se zajednička svojstva i ignorišu posebna
Microsoftsoftware
Word PowerPoint . . .
RelacijaIS_MEMBER_OF
RelacijaIS_MEMBER_OF
04/28/23 Programski jezici 42
TTipovi apstrakcijeipovi apstrakcije agregacija — grupa različitih skupova objekata
avion
Motori. . .Krila Točkovi
RelacijaIS_PART_OF
ignorišu se razlike između delova - Koncentrišemo se na činjenicu da oni čine celinu
04/28/23 Programski jezici 43
TTipovi apstrakcijeipovi apstrakcije generalizacija — grupa sličnih skupova objekata
student
poslediplomci. . .redovni vanredni
IS_Arelationship
Uočimo razliku između klasifikacije i generalizacije– klasifikacija – primenjuje se na individualne instance
objekata– generalizacija – na skup objekata (klase)
superclass/supertype
subclass/subtype
04/28/23 Programski jezici 44
TTipovi apstrakcijeipovi apstrakcije
student
Redovni student
Jovan. . .Saša Tijana
. . .Ime Broj indekasa
generalizageneralizacijacija
agregaagregacijacija
klasifikacijaklasifikacija
04/28/23 Programski jezici 45
OO jezici OO jezici ALGOL Objective-C
Smalltalk
Pascal
C
C++
Eiffel
SIMULA
LISP Flavors Loops CLOS
Object Pascal
Actor
Java
Delphi
04/28/23 Programski jezici 46
SmalltalkSmalltalk
Smalltalk-80 verzija iz 1980. Program se sastoji od poruka čija sintaksa odgovara uprošćenom
engleskom jeziku Na objekte se deluje porukama koje prestavljaju pozive metoda. Dinamička implementacija, kasno povezivanje.
krug := Circle new;krug center: x @ y radius:r;vert := Line new; vert start: x @ (y-r);vert end: x @ (y+r);hori := Line new; hori start: (x-r) @ y;hori end: (x+r) @ y;ckrug display; vert display; hori display;
04/28/23 Programski jezici 47
C++C++
1980 Bjarne Stroustrup je projektovao skup jezika koji su bili nazvani "C With Classes" – što je poslužilo kao osnova za definisanje jezika C++.
Proširenje programskog jezika C Statička implementacija. Klase su ujedno i tipovi podataka
krug = new Circle(x,y,r)vert = new Line(x, x-r, x, y+r)hori = new Line(x-r, y, x+r, y)krug -> display()vert -> display()hori -> display()
04/28/23 Programski jezici 48
Object PascalObject Pascal - Delphi - Delphi• 1986 Apple realizuje Object Pascal za Mac.
• 1995 pojavljuje se Delphi- popularna verzija razvojnog okruženja (RAD tool) zasnovanog na Object Pascalu.
New(krug); krug.ICircle(x,,y,,r);New(vert); vert.ILine(x,x-r,x,y+r);New(hori); hori.ICircle(x-r,y,x+r,y);krug.display; vert.display, hory.display
04/28/23 Programski jezici 49
JavaJava• May 1995.
• Popularan je jer je jednostavniji od C++.
• Ima primenu u razvoju Internet aplikacija
04/28/23 Programski jezici 50
OO programiranjeOO programiranjeProgrammer Integrated Development Enviroment
Class Library (Class Hierarchy)
04/28/23 Programski jezici 51
Svojstva dobrog OO programaSvojstva dobrog OO programa
Reusability - Višestruko korišćenje Extensibility - Laka proširljivost Flexibility - Lako prilagođavanje Simplicity - Jednostavnost
Recommended