You are on page 1of 3

11.10.2018.

Evolucija programskih jezika


Nestrukturirano programiranje
Proceduralno programiranje
Modularno programiranje
Objektno orijentirano programiranje

Objektno-orijentirano programiranje
u programskom jeziku C++

11.10.2018. 2 / 38

Nestrukturirano programiranje Proceduralno programiranje


Učenje programa počinje pisanjem malih i jednostavnih programa koji se Izdvajanjem naredbi u procedure, program postaje slijed poziva
sastoje od slijeda naredbi i djeluju nad zajedničkim skupom podataka procedura

Glavni program
Glavni program
Podaci

Podaci

Procedura 1 Procedura 2 Procedura 3

Lokalni podaci Lokalni podaci Lokalni podaci

Ponavljanje nekog posla znači i kopiranje naredbi

3 / 38 4 / 38

Modularno programiranje Objektno orijentirano programiranje - OOP


Procedure srodne funkcionalnosti grupiraju se u module koji mogu svaki objekt brine se o svome stanju, stvaranju i uništenju
imati vlastite podatke Objekti međusobno komuniciraju porukama
PORUKA
Program OBJEKT 3 OBJEKT 4
Modul 1
Podaci
Podaci 1 PORUKA PORUKA
PORUKA
Procedura 1
OBJEKT 2 OBJEKT 5

Lokalni podaci Modul 2


PORUKA PORUKA
Podaci 1 PORUKA

Procedura 2 Procedura 3 OBJEKT 1


OBJEKT 7
OBJEKT 6
Lokalni podaci Lokalni podaci

5 / 38 6 / 38

1
11.10.2018.

Zašto OOP? Objektni način razmišljanja


složenost današnjih računalnih sustava objektni pogled na svijet prati čovjekov prirodni način razmišljanja – sve
banke, osiguranja, trgovački lanci
je objekt!
državna uprava, policija, sveučilišta
objekti su svuda oko nas:
ostali poslovni sustavi
kebap iz Istanbula
fleksibilnost programa i mogućnost ponovnog korištenja programa
juha iz Bukurešta
modularnost pudding iz Londona
grupiranje svega što znamo o nekom objektu u jednu klasu olakšava croissant iz Pariza
programerima pozivanje, kopiranje i manipuliranje podacima knedli iz Praga
kontrola pristupa što su svi ovi objekti?
dijelovi programa koji klasu pozivaju i koriste, mogu koristiti objekt bez što im je zajedničko?
brige o tome kako su funkcije definirane
sakrivanje implementacije – omogućava promjenu implementacije bez
promjene ostalih modula u programu
11.10.2018. 7 / 38 Algoritmi i strukture podataka, FER, 2008./09. 11.10.2018. 8 / 38

Klasifikacija Klase i objekti


Klasa
klasifikacija VelikiStan
čovjeku prirodna stvar koja je razlika između objekta i klase?
Objekt klase
Objekt klase
programa koji se razvija odnosi se na određenu domenu primjene MaliStan
VelikiStan

svaka poslovna domena ima svoje klase


domena - fakultet: (klase) studenti, nastavnici, ispiti itd.
domena - osiguranje: (klase) osiguravatelj, osiguranici, police, itd. Objekt klase
VelikiStan

svaka klasa određene poslovne domena ima svoje objekte


(klasa) studenti: (objekti) Ana Anić, Ivo Ivić, Maja Majić,…
(klasa) polica: (objekti) kasko, imovina, auto osiguranje, …
Objekt klase
opis jednog poslovnog pravila na fakultetu MaliStan
“Student mora sakupiti 50% bodova da bi prošao završni ispit” Klasa
MaliStan
11.10.2018. 9 Algoritmi i strukture podataka, FER 11.10.2018. 10

Klase i objekti... Objektno orijentirani jezici


Simula (1967.)
U realnom životu ne igramo se s definicijom mačke (konceptom); nego s prvi programski jezik sa svojstvima objektno-orijentirane paradigme
određenom mačkom namijenjen izgradnji sustava za simulaciju
Postoji razlika između koncepta mačke (klase Macka) i one određene uveden pojam klase / razreda
mačke koja se u ovome trenutku izležava u našoj dnevnoj sobi (Macka Smalltalk (1972.)
prvi “pravi” (čisti) objektno-orijentiran programski jezik (“sve je objekt”)
objekta).
razvijen u laboratoriju Xerox PARC
Npr. Frisky je objekt klase Macka slično kao što je npr. tezina varijabla tipa float
Smalltalk-80 je najkorištenija verzija
C++
“MAČKA” “hibridni” objektno-orijentirani jezik nastao iz C-a - ispočetka se zvao “C s klasama”
(“C with Classes”)
razvio ga je Bjarne Stroustrup (1983.) u Bell Labs
Def. Mačka je početna ANSI standardizacija dovršena je 1998., a 2003. je izdana ISO/IEC
sisavac, mali standardna verzija s ispravljenim pogreškama
mesožder, kućni
ljubimac, …. neki od posljednjih standarda su C++10, C++11
C++ je “predak” danas široko korištenih jezika - Java, C# i VB.NET
Algoritmi i strukture podataka, FER,. 11.10.2018. 12
11

2
11.10.2018.

Povijest C/C++ Dizajnerski cilj za C i C++


In Bell Labs, ‘B’ language created, based on BCPL
1971-1973 : Dennis Ritchie extended ‘B’ to create ‘C’ Ciljevi za C:
Main features of C developed over this time
1973-1980 : New features were added Mogućnost da se napiše kod niske-razine (kao O/S)
C needed to be standardised! Brz i efikasan
1979 : Bjarne Stroustrup (Bell labs) extended C to make ‘C with classes’
1982 : ‘K&R’ (Kernighan and Ritchie) unofficial C ‘standard’ Jednostavan za programere
1983 : ‘C with classes’ renamed C++, features still being added Kompajliranje za različite platforme (uspoređujući strojni kod)
1989 : ANSI standard C (started in 1983!) (=> ISO standard in 1990)
Differs in some ways from K&R ‘C’ and is often named ‘C89’
Together with Amendment 1, forms ‘C’ element of ‘C++’
1990s : C++ took centre stage (Standardisation progressing) C++ je proširenje C:
1994 : Standard Template Library makes it into the ISO standard C++
(Some template implementation arguments ongoing as late as 2003) zadržao je neke slične ciljeve
1998 : ISO standard C++ ratified (C++98)
1999 : New version of C standard (C99) (Differs from C++)

We will concentrate on C++


13 14

Što C++ uključuje? Je li C++ OO ili proceduralan


Procedural C Classes C je proceduralan jezik (bez klasa i OO principa)
Global Functions - Grouping of related data together
File-specific functions - With associated methods (functions)
Structs ‘new’ for object creation
C++ omogućuje:
Pointers (addresses) ‘delete’ for object destruction pisanje proceduralnog C++ koda
Low-level memory access Constructors, Destructors pisanje objektnog C++ koda
C Preprocessor Operator Overloading ili oboje zajedno (često loša ideja)
Assignment operators
Variables Conversion operators
Arrays Inheritance (sub-classing) C++ dodatno uključuje mnogo Ne-OO značajki
Loops Virtual functions & polymorphism e.g. predlošci, new/delete naredbe, preopterećivanje operatora, …
Conditionals Access control (private/public/protected)

Function Libraries Templates Class Libraries Proceduralan ili objektni pristup = način je razmišljanja
Standard functions (Generic classes) (+templated classes) Je li program
Custom libraries Standard library skup objekata koji komuniciraju
O/S functions Non-C features Custom libraries
e.g. References ili slijed procedura tipa “napravi ovo onda ono onda ono …”
Platform specific libraries
15 16

Osnovni elementi objektnog modela


osim klasa i objekata da bi model bio objektno orijentiran mora vrijediti:
apstrakcija
zanemarivanje nebitnih dijelova objekta i koncentriranje na one koji ga razlikuju od
ostalih objekata
potrebna radi lakšeg pojednostavljivanja kompleksnih sustava
učahurivanje (encapsulacija)
niti jedan dio složenog sustava ne smije ovisiti o unutrašnjim dijelovima drugog dijela
sustava
robusnost se postiže skrivanjem podataka i detalja implementacije
hijerarhija apstrakcija / polimorfizam
“is a” (je) hijerarhija klasa i “part of” (dio-od) hijerarhija objekata
jednostruko i višestruko nasljeđivanje predstavlja generalizaciju/ specijalizaciju
modularnost
dijeljenje sustava u skup relativno nezavisnih modula koji objedinjuju klase koje imaju
nešto zajedničko
11.10.2018. 17

You might also like