programske paradigme i stilovi programiranja - ns2.math.rsns2.math.rs/~vladaf/courses/pmfbl ti...

11
Programske paradigme i stilovi programiranja Vladimir Filipović [email protected]

Upload: hoangnhi

Post on 05-Feb-2018

228 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Programske paradigme i stilovi programiranja - ns2.math.rsns2.math.rs/~vladaf/Courses/PmfBl TI OP/Predavanja/op02-1... · Objektno-orijentisano programiranje - programska ... jeziku

Programske paradigme i

stilovi programiranja

Vladimir Filipović

[email protected]

Page 2: Programske paradigme i stilovi programiranja - ns2.math.rsns2.math.rs/~vladaf/Courses/PmfBl TI OP/Predavanja/op02-1... · Objektno-orijentisano programiranje - programska ... jeziku

[email protected] 2/11

Zahtevi koji se postavljaju pred program

Da korektno radi, tj. da daje korektne rezultate.

Da bude lako čitljiv, kako bi se mogao lakše održavati i

nadograđivati u budućnosti.

Pregled metodologija programiranja

“Trik”programiranje – karakteriše tzv. Herojsko doba

računarstva. U ovom periodu programi su pisani bez opštih

pravila. Korišćenje specifičnosti u radu računara, trikovi za

uštedu memorije, pisanje samomodifikujućih programa su bile

karakteristika vrhunskog profesionalca. Ali takav pristup je

dovodio do kreiranja teško čitljivih programa.

Strukturno programiranje.

Objektno orijentisano programiranje

Page 3: Programske paradigme i stilovi programiranja - ns2.math.rsns2.math.rs/~vladaf/Courses/PmfBl TI OP/Predavanja/op02-1... · Objektno-orijentisano programiranje - programska ... jeziku

[email protected] 3/11

Strukturno programiranje

Autori prvih radova o strukturnom programiranju su E.W.

Dijkstra, A.P. Hoare, N. Wirth i dr.

Popularnosti strukturnog programiranja doprinela i pojava

programskog jezika PASCAL.

Strukturno programiranje bilo povezano sa automatskim

dokazivanjem korektnosti programa.

Pod strukturnim programiranjem podrazumeva se opšta

metodologija za pisanje kvalitetnih programa. Ona sadrži:

Programiranje od opšteg ka posebnom (top-down)

Modularnost

Korišćenje ograničenog broja upravljačkih struktura u

zapisu programa

Page 4: Programske paradigme i stilovi programiranja - ns2.math.rsns2.math.rs/~vladaf/Courses/PmfBl TI OP/Predavanja/op02-1... · Objektno-orijentisano programiranje - programska ... jeziku

[email protected] 4/11

Objektno-orijentisano programiranje

Objekat - integralna celina podataka i procedura za rad sa

njima. Zbog prisustva procedura u objektima, objekti imaju

mogućnost da samostalno deluju, tj. postaju dinamički.

Objektno-orijentisano programiranje - programska

paradigma zasnovana na skupu objekata koji dejstvuju

međusobno. Glavne obrade zasnivaju se na manipulisanju

objektima.

Metod - funkcija koja je sastavni deo objekta, tj. postupak

kojim se realizuje poruka upućena objektu.

Poruka - skup informacija koji se šalje objektu. Sastoji se iz

adrese (objekta primaoca poruke) i saopštenja (kazuje šta

treba da se uradi).

Page 5: Programske paradigme i stilovi programiranja - ns2.math.rsns2.math.rs/~vladaf/Courses/PmfBl TI OP/Predavanja/op02-1... · Objektno-orijentisano programiranje - programska ... jeziku

[email protected] 5/11

Klasa - Skup objekata sa zajedničkim svojstvima (koji se ponašaju

na isti način). Definiše šablon za kreiranje instanci.

Primerak (instanca) - konkretan objekat iz klase. Skup instanci

sa skupom metoda kreira jednu klasu.

Klasa B je potklasa klase A ako su svi primerci klase B

istovremeno i primerci klase A. Za klasu kažemo da je nadklasa

klase B. Potklase nastaju dodavanjem novih svojstava (metoda)

postojećoj klasi.

Nasleđivanje - mehanizam za kreiranje novih klasa iz postojećih.

Nasleđivanjem se formiraju relacije između jedne i više drugih

klasa.

Polimorfizam - Mogućnost primene istog metoda (operatora) na

primerke različitih klasa.

Page 6: Programske paradigme i stilovi programiranja - ns2.math.rsns2.math.rs/~vladaf/Courses/PmfBl TI OP/Predavanja/op02-1... · Objektno-orijentisano programiranje - programska ... jeziku

[email protected] 6/11

Primeri nasleđivanja

Prilikom projektovanja programa uočavaju se veze između pojedinih klasa i način povezivanja tih klasa sa drugim klasama.

Ovde je bitna uloga nasleđivanja.

Živo biće

Životinja Biljka

Sisar Ptica

Grabljivica Pevačica

Jastreb Orao

Page 7: Programske paradigme i stilovi programiranja - ns2.math.rsns2.math.rs/~vladaf/Courses/PmfBl TI OP/Predavanja/op02-1... · Objektno-orijentisano programiranje - programska ... jeziku

[email protected] 7/11

Još jedan primer hijerarhijskog nasleđivanja

bibliotečki primerak

časopis knjiga mikrofilm

dnevni ostali

beletristika stručna

Page 8: Programske paradigme i stilovi programiranja - ns2.math.rsns2.math.rs/~vladaf/Courses/PmfBl TI OP/Predavanja/op02-1... · Objektno-orijentisano programiranje - programska ... jeziku

[email protected] 8/11

Primer višestrukog nasleđivanja

(klasa može imati više direktnih natklasa)

letilica vozilo brod

jedrilica avion sa motorom bez motora

putničko teretno amfibija

Višestruko nasleđivanje nije podržano u jeziku Java, ali jeste u

jeziku C++.

Page 9: Programske paradigme i stilovi programiranja - ns2.math.rsns2.math.rs/~vladaf/Courses/PmfBl TI OP/Predavanja/op02-1... · Objektno-orijentisano programiranje - programska ... jeziku

[email protected] 9/11

Uloga pojedinih pojmova (Wagner)

Objektno-

zasnovani jezici

Objektno-

orijentisani jezici

Ada, Actors

Klasno zasnovani

jezici

+klasa

+nasleđivanje

CLU

Smalltalk, Simula 67

Page 10: Programske paradigme i stilovi programiranja - ns2.math.rsns2.math.rs/~vladaf/Courses/PmfBl TI OP/Predavanja/op02-1... · Objektno-orijentisano programiranje - programska ... jeziku

[email protected] 10/11

Zašto je objektno-orijentisan koncept

doživeo veliki uspeh?

Ponovno korišćenje softvera.

Pogodan za: analizu, projektovanje i programiranje.

Najpogodniji za simuliranje događaja.

Objašnjenje se delimično može naći kroz pogled

istorijskog razvoja OOP.

1967: Dall i Simula 67.

70-tih godina: A. Kay i Smalltalk.

Razvoj ostalih OO jezika.

Page 11: Programske paradigme i stilovi programiranja - ns2.math.rsns2.math.rs/~vladaf/Courses/PmfBl TI OP/Predavanja/op02-1... · Objektno-orijentisano programiranje - programska ... jeziku

[email protected] 11/11

Dalji razvoj paradigmi programiranja

Programiranje vođeno događajima

Aspekt-orjentisano programiranje

Ekstremno programiranje

Obrasci dizajna

Unifikovani jezik za modeliranje – UML