You are on page 1of 67

Objektno orijentisano

programiranje
Sloenost programske
podrke
Razlozi sloenosti programske podrke
sloenost i esto nejasna definicija problema
iterativni razvoj, interakcija s korisnikom
tekoe u upravljanju razvojnim procesom
dekompozicija u module, koordinacija
softver omoguava ostvarenje svih elementarnih gradivnih
elemenata to se esto koristi zbog nedostatka standarda
problem opisa ponaanja diskretnih sistema
ne mogu se modelirati kontinualnom funkcijom,
mogu imati ogroman broj diskretnih stanja
nerazumni zahtevi korisnika

Objekto orijentisano progr 2


Pet atributa sloenih sistema
1. imaju hijerarhijsku formu
sastoje se od povezanih podsistema koji mogu imati svoje podsisteme
2. definicija osnovnih komponenti nije jednoznana
zavisi o subjektivnom gleditu posmatraa
3. veze unutar komponenti su jae od veza meu komponentama
sistemi su razloivi jer se mogu razdeliti na komponente
sistemi su skoro razloivi jer komponente nisu nezavisne
4. esto se sastoje od samo nekoliko razliitih podsistema, ali u mnogim
kombinacijama i pojavnim oblicima
osnovne komponente s dna hijerarhije esto su zajednike
5. sloeni sistemi evoluiraju iz jednostavnijih
Razumevanje sloenih sistema olakava prepoznavanje svojstava koja
su zajednika s drugim sistemima
avion, automobil

Objekto orijentisano progr 3


industrial - strength software
nijedan lan razvojnog tima ne moe biti upoznat sa svim
detaljima projekta
vrlo dugi ivotni vek programske podrke

mnogi korisnici zavise od korektnog funkcionisanja programske


podrke
veliki broj ljudi je ukljuen u odravanje i poboljanje programa

softverska kriza
zahtevi korisnika su se drastino poveali

programska podrka je sve obimnija i zahtevnija

trokovi odravanja su u dramatinom porastu

ne postoji dovoljan broj ljudi osposobljenih za razvoj kvalitetne


programske podrke

Objekto orijentisano progr 4


Evolucija programskih jezika
(i tipian redosled uenja
programera)
Nestrukturirano programiranje
Proceduralno programiranje
Modularno programiranje
Objektno orijentisano programiranje

Objekto orijentisano progr 5


Nestrukturirano
programiranje
Uenje programa poinje pisanjem malih i jednostavnih
programa koji se sastoje od niza naredbi i deluju nad
zajednikim skupom podataka
Ponavljanje nekog posla znai i kopiranje naredbi

Glavni program

Podaci

Objekto orijentisano progr 6


Proceduralno programiranje
Izdvajanjem naredbi u procedure, program
postaje niz poziva procedura

Glavni program

Podaci

Procedura 1 Procedura 2 Procedura 3

Lokalni podaci Lokalni podaci Lokalni podaci

Objekto orijentisano progr 7


Modularno programiranje
Procedure srodne funkcionalnosti grupiu se u module
koji mogu imati vlastite podatke
Modul 1 Program
Podaci 1
Podaci
Procedura 1

Lokalni podaci
Modul 2

Procedura 2 Podaci 1
Procedura 3
Lokalni podaci

Lokalni podaci

Objekto orijentisano progr 8


Objektno orijentisano
programiranje
korienje objekata koji meusobno komuniciraju
porukama
Svaki objekt brine se o svome stanju, stvaranju i
unitenju
PORUKA
OBJEKT OBJEKT

PORUKA PORUKA
PORUKA

OBJEKT OBJEKT

PORUKA PORUKA
PORUKA

OBJEKT
OBJEKT

OBJEKT

Objekto orijentisano progr 9


Prevladavanje sloenosti
programske podrke
Poveanje produktivnosti programera

problemi koji se esto ponavljaju reavaju se po standardizovanom


uzorku
ponovna iskoristivost postojeeg koda
bolja iskoristivost postojeeg programskog koda modularizacijom i
jasnim interfejsom
postepeni razvoj od malih/jednostavnih do velikih/sloenih sistema
bolja kontrola sloenosti i trokova odravanja
bolje razumevanje problema
terminologija koriena kod definisanja problema ima odraz na
sloenost programske podrke

Objekto orijentisano progr 10


Metode analize i oblikovanja
programske podrke
Metoda: proces izrade skupa modela koji opisuju elemente
i ponaanje sistema, uz korienje dobro definisane
notacije
Metodologija: skup metoda koje se primenjuju tokom
razvoja programske podrke, a koje poseduju zajedniki
idejni pristup
oblikovanje odozgo prema dole (top-down design)
prilagoeno strukturiranim programskim jezicima (glavni program,
funkcije)
zasad je jo najvei deo postojee programske podrke oblikovan uz
pomo ovih metoda
podatkovno orijentisano oblikovanje (data-driven design)
preslikava ulaz sistema na izlaz
objektno orijentisano oblikovanje (object-oriented design)
sistem razlae na objekte koji meusobno komuniciraju

Objekto orijentisano progr 11


Dekompozicija
Divide et impera (podeli pa vladaj)
algoritamska dekompozicija
problem razlae na niz dogaaja ili funkcija
objektno-orijentisana dekompozicija
definie povezanost i meusobnu komunikaciju meu objektima
u sistemu

Objekto orijentisano progr 12


Algoritamska dekompozicija
Narui i plati karticom

Provera narudbe Provera kartice Obavljanje narudbe Izvrenje

Postoji li roba Dovoljna Proveri Proveri valjanost Auriraj Auriraj Poalji Auriraj
u skladitu koliina ? kontrolnu cifru kartice skladite karticu knjige knjigu rauna

Proveri Proveri stanje


valjnost u banci na raunu

Objekto orijentisano progr 13


Objektna dekompozicija
Narudba
Prov
er a
s
skla tanja
dit na
Akt u
iv
sta
no a

nar iranj
va over

ud e
be Skladite
lja
Pr

Prove una
ra

na
ra nje
Is
ra st

po

u
Kartica

ji g ir a
ru
ka

kn ur
anja

e
A
Kupac
Knjiga rauna

Bankovni raun

Objekto orijentisano progr 14


Vrste programskih paradigmi
(obrazaca)
proceduralno orijentisana algoritmi
logiki orijentisana ciljevi, predikatni raun
orijentisana funkcijama definicije i pozivi funkcija
orijentisana pravilima ako-tada pravila
orijentisana ogranienjima odnosi meu varijablama
objektno orijentisana klase i objekti

Objekto orijentisano progr 15


Objektno orijentisano
programiranje - OOP
OOP je nain ugradnje programske podrke kod
koje su programi organizovani kao kooperativne
grupe objekata, od kojih svaki predstavlja
manifestaciju neke klase, a sve klase su lanovi
neke hijerarhije klasa sjedinjene preko
nasleivanja
Programiranje bez nasleivanja nije objektno orijentisano, ve je
re o programiranju s apstraktnim tipovima podataka
Osnovni gradivni element jezika je objekat a ne
algoritam

Objekto orijentisano progr 16


Objektno orijentisano
programiranje - OOP
Jezik je objektno orijentisan ako i samo ako:
podrava objekte koji predstavljaju apstrakciju

stvarnog sveta sa skrivenim lokalnim stanjem i


sa interfejsom koji definie operacije nad tim
objektima
objekti pripadaju nekoj klasi

klase mogu nasleivati svojstva od nadklasa

Za jezik bez nasleivanja kae se da je


zasnovan na objektima (object-based)

Objekto orijentisano progr 17


Objekat
ta je objekat:
sve moe biti objekat
program je skup objekata koji meusobno komuniciraju razmenjujui
poruke
svaki objekat ima vlastitu memoriju sastavljenu od drugih objekata
podatke, te skup funkcija koje je u stanju obaviti postupke
neke od postupaka i podataka objekat izlae drugim objektima
(interface)
svaki objekat je odreenog tipa
svi objekti nekog tipa imaju istu internu strukturu podataka, te mogu
primati, slati i obraivati iste vrste poruka.
Objekat ima:
svojstva
ponaanje

Objekto orijentisano progr 18


OOP Objektno Orijentisano
Programiranje
Objekti komuniciraju sa interfejsom drugog
objekta NIVO GORIVA

TEMPERATURA ULJA
VOZA AUTOMOBIL
ITD.

ITD.

SKRENI

POKRENI MOTOR

Objekto orijentisano progr 19


Elementi objektnog modela
Osnovni elementi objektnog modela (moraju postojati da bi
model bio objektno orijentisan):
apstrakcija (abstraction)
uaurivanje (encapsulation)
modularnost (modularity)
hijerarhija (hierarchy)
Sporedni elementi objektnog modela
tipizacija (typing)

istodobnost (concurrency)

postojanost (persistence)

Objekto orijentisano progr 20


Apstrakcija
Problemi iz stvarnog ivota s kojima se susreemo
obino su sloeni
Potrebno je razlikovati bitne od nebitnih detalja: nainiti
apstraktni pogled na problem tj. model

Problem
Problem

Model

Objekto orijentisano progr 21


Apstrakcija podataka
Zanemarivanje nebitnih delova objekta i koncentrisanje
na one koji ga razlikuju od ostalih objekata
Potrebna radi lakeg poimanja kompleksnih sistema
Vrste apstrakcije (redom od najkorisnije prema manje
korisnima):
apstrakcija entiteta - objekat koji predstavlja neki model iz
podruja problema
apstrakcija akcije - objekat koji sadrava skup operacija
apstrakcija virtuelne maine - objekat koji grupie operacije koje
se koriste na nekom viem stepenu kontrole
sluajna apstrakcija - objekat koji grupie skup operacija meu
kojima ne postoji povezanost

Objekto orijentisano progr 22


Apstrakcija
Subjektivnost
Menader kao objekte vidi: zaposlene, zgrade, odeljenja,
dokumente
Mainski inenjer kao objekte vidi: gume, vrata, motor
Hemiar kao objekte vidi: atome, molekule
Programer kao objekte vidi: stekove, redove, prozore,
elemente interfejsa

Objekto orijentisano progr 23


Apstrakcija
Subjektivnost postoji ak i kod posmatranja istog
objekta:

Kupac vidi: cenu, snagu, potronju, boju, opremu, ...


Inenjer vidi: motor, gume, vrata, elektroniku, aerodinamiku, ...
Policija vidi: registraciju, broj motora, ...
Korisnik vidi: starost, potronju, termine odravanja, trokove,
prodajnu cenu, ...
Objekto orijentisano progr 24
Apstrakcija
Detalji koji e se odabrati za model zavise od problema
koji se reava
Od problema zavisi i izbor podataka i izbor postupaka
Definie se entitet koji se sastoji od podataka i
postupaka nad tim podacima, od kojih su neki postupci
ili podaci izloeni kroz spregu. Ako se podacima pored
toga jo moe pristupati samo kroz postupke sprege,
takav se entitet naziva apstraktni tip podatka (Abstract
Data Type, ADT)

Objekto orijentisano progr 25


Klasa
Strukture podataka koja e sadravati stanje i
funkcije koje e definisati ponaanje jednakih
objekata opisane su u njihovoj zajednikoj
klasi
Objekti se stvaraju na temelju opisa
definisanog u klasi
Pojavnost (instance) i objekat su sinonimi

Objekto orijentisano progr 26


Stanje
Stanje objekta sadri sva (obino statika) svojstva objekta i
trenutne (obino dinamike) vrednosti svakog od ovih svojstava.
Sva svojstva imaju neku vrednost
svojstvo moe biti jednostavna varijabla ili neki sloeni drugi

objekat
Objekti postoje u vremenu, promenjivi su, imaju stanje, stvaraju se i
unitavaju, te mogu biti deljeni.
Budui da ima stanje, svaki objekat zauzima odreeni prostor.
Stanje objekta predstavlja kumulativni rezultat njegovog ponaanja.
class Osoba {
private:
char JMBG[13+1];
char
Prezime[40+1];
char Ime[40+1];
float Plata;
// ponaanje
}
Objekto orijentisano progr 27
Ponaanje
Kako objekat deluje i reaguje s obzirom na promene
stanja i protok poruka.
U istim objektno-orijentisanim jezicima (Smalltalk)
govori se o objektu koji predaje poruku drugom objektu,
a u C++ se govori o objektu koji poziva funkciju lanicu
drugog objekta.
Operacije koje klijenti mogu obaviti na objektu zovemo
postupcima. Postupci su deo deklaracije klase.
class Osoba {
private:
// stanje
public:
string GetJMBG();
string GetPrezime();
string GetIme();
float GetPlata();
void PromeniPlatu(int
posto);

}

Objekto orijentisano progr 28


Modelovanje objekta
Klase modeluju osnovne karakteristike realnih objekata.

Pas
ime
boja

Pas
ime
Izbor karakteristika vlasnik
zavisi od upotrebe
objekta bolest
Objekto orijentisano progr 29
Modelovanje objekta
C++ klase takoe modeluju ponaanje realnih objekata

Karakteristike

Pas Ptica
Alarm vrsta
Ime
alarmVreme zvuk
Boja
alarmMod peva()
laje()
setAlarmVreme() setZvuk()
jede()
stopAlarm()

Ponaanje

Objekto orijentisano progr 30


Postupci (methods, member functions) - usluge koje
klasa nudi klijentima.
Postupci se u nekim jezicima mogu ostvariti kao
slobodni potprogrami (dakle ne kao postupci neke
klase).
korisno kada postupak deluje nad razliitim objektima ili
razliitim klasama (teko se odluiti kojem bi objektu ili
kojoj klasi pripadao).

Objekto orijentisano progr 31


Uaurivanje (encapsulation)
niti jedan deo sloenog sistema ne bi smeo zavisiti o

unutranjim detaljima drugoga dela


robustnost se postie skrivanjem podataka i detalja ugradnje

komplementaran koncept u odnosu na apstrakciju

apstrakcija se fokusira na vidljivo ponaanje objekta, dok se


enkapsulacija fokusira na ugradnju koja podrava takvo
ponaanje
enkapsulacija omoguava eksplicitnu granicu izmeu razliitih
apstrakcija
opis klase ima dva dela : interfejs (interface) i ugradnju
(implementation).
interfejs predstavlja vanjski pogled na klasu
ugradnja klase predstavlja mehanizme pomou kojih su
ostvareni postupci opisani u interfejsu

Objekto orijentisano progr 32


Interfejs objekta
Interfejs objekta skriva konkretnu implementaciju od
okoline

interfejs implementacija

Objekto orijentisano progr 33


Modularnost
Razlaganje sistema u skup relativno nezavisnih
modula koji objedinjuju klase koje imaju neto
zajedniko.
primer : identifikacija skupa klasa i objedinjavanje njihovih
deklaracija i definicija u zajednike datoteke
Skladiste.h i Skladiste.cpp -interfejs i ugradnja za
klase :
Skladiste
Knjiga
KnjigaRacuna
Racun
Slino bi se klase

KreditnaKartica
Banka

mogli objediniti u Placanje.h i Placanje.cpp

Objekto orijentisano progr 34


Modeliranje stvarnog sveta
Apstrakcija
(uproena slika realnog koncentriemo se na bitne stvari)

Pravljenje razlika
(uoavanje (bitnih) razlika izmeu modela: visok ovek- nizak ovek, plava
lopta crvena lopta)

Klasifikacija
(Klasifikacija objekata (po nekim bitnim osobinama) u kategorije, grupe,
klase)

Generalizacija, specifikacija
(proirivanje suavanje kategorija:
Ovaj objekat je isti kao i onaj, ali on ima i osobinu ...,
Ovaj objekat je ..., ali...,
Pas je kuna ivotinja, ali takva koja ima etiri noge...)

Objekto orijentisano progr 35


Kreiranje veza (relacija),
rasparavanje
Kola ini: 50 dkg brana, 10 jaja ...
Tom i Jerry se poznaju.
Pas uva kuu.
Pas ima jednu glavu, etiri noge...

Postoje dva tipa veza:


poznanstvo-kada su objekti nezavisni jedan od
drugog
sadrajno kada jedan objekat ini deo nekog
drugog objekta

Objekto orijentisano progr 36


Primer za generalizaciju i
specifikaciju

Objekto orijentisano progr 37


Glavne osobine objektno
orijentisanog modela
Da bi jedan program bio OO nije dovoljno koristiti OO
programski jezik....

Objekat: Sadri informacije, na zahtev izvrava neke radnje. Logika celina.


OOProgram: niz objekata koji meusobno komuniciraju. Svaki objekat ima
svoj (dobro definisan) zadatak.

Objekto orijentisano progr 38


Primer -pripremanje supe
Data je jedna porodica sa sledeim
lanovima: otac Marko, majka Marija, erke
Zorica i Marica. Markova majka (baka) je
zamolila sina da za ruak pripremi goveu
supu:

Marko.pripremi(goveasupa)

Objekat.poruka(parametar_poruke)

Objekto orijentisano progr 39


Objekto orijentisano progr 40
Markova rutina pripremi:

pripremi (goveu_supu)
if Zorica.hoe()
zorica.pripremi (goveu_supu)
else if Marija.hoe()
Marija.pripremi (goveu_supu)
else
Marica. pripremi (goveu_supu)
end if
End pripremi

Svaki objekat drugaije reaguje na istu (pripremi) poruku.


Pripremi rutina za ostale tri lanice porodice:

pripremi (goveu_supu)
kupovina()
kuvanje()
pranje()
End pripremi

Objekto orijentisano progr 41


Poruka (molba-zahtev)
Preko poruka komuniciramo sa objektima i
zahtevamo od njih da urade neto. Ovo je
ustvari poziv jedne subrutine koja je
ugraena u sam objekat.

Jedan objekat samo tada moe da alje


poruku drugom objektu ako je u vezi sa njime
(poznaje ga ili ga sadri).

Objekto orijentisano progr 42


Primeri rutine kupovina:

If mesara1.otvorena() and mesara1.ima(goveemeso)


mesara1.prodaje(goveemeso, 1.5 kg)
...
If mesara3.otvorena() and mesara3.ima(goveemeso)
mesara3.prodaje(goveemeso, 1.5 kg)
...

Objekte sistema i razmenu poruka izmeu njih mogli smo videti na


predhodnoj slici, sada je vano da se vidi da svaki objekat ima tano
definisan zadatak:
enski deo familije:
Izjanjava se da li ima volje da kuva
Pripremi goveu supu
Odlazi u kupovinu
Kuva
Pere sue

Objekto orijentisano progr 43


Mesara:
Izjanjava se da li radi (otvorena radnja?)
Izjanjava se da li ima goveeg mesa
Prodaje meso

Piljarnica:
Izjanjava se da li radi (otvorena radnja?)
Izjanjava se da li ima povra
Prodaje povre

Odgovornost:
Svaki objekat je odgovoran za izvrenje svojih zadataka.

Sakrivanje informacija:
Kako da se izvri neki zadatak je unutranja stvar objekta. Sa objektom se
komunicira jedino preko interfejsa.

Objekto orijentisano progr 44


Polimorfizam i klasifikacija

Polimorfizam: svaki objekat drugaije reaguje


na isti zahtev (pripremi supu ne znai isto za
Marka i ostale lanove porodice).
Klasifikacija: U primeru moemo definisati
sledee klase:
Marko
Tri posebne klase za tri enske osobe
Mesara
piljarnica

Objekto orijentisano progr 45


Objekto orijentisano progr 46
Klase prodavnica

Objekto orijentisano progr 47


Late bindings kasno
vezivanje
Pojavu kada se samo tokom izvrenja

programa moe rei koja metoda e da


odgovori na datu poruku, zovemo late
bindings.

(Kontra je rano povezivanje)

Objekto orijentisano progr 48


Klase, objekti
Po definiciji objekat sadri podatke i na zahtev odrauje neki zadatak.
Podaci - atributi
Metode - rutine koje rade sa podacima objekta.

Objekto orijentisano progr 49


Objekto orijentisano progr 50
Klasa, primerak
Klasa je takav ablon na osnovu kojeg se mogu napraviti primerci (objekti)
klase. Svaki objekat pripada jednoj klasi. U klasi su definisani:
Podaci objekata

Metode objekata

Objekto orijentisano progr 51


Klasu i primerak obeleavamo sa pravougaonicima.

Objekto orijentisano progr 52


Hijerarhija
Skup apstrakcija esto formira hijerarhiju.
Definiimo hijerarhiju:

Hijerarhija predstavlja rangiranje apstrakcija


Dve najvanije hijerarhije su:
struktura klase (je (is a) hijerarhija)
struktura objekata (deo od (part of) hijerarhija)
Hijerarhija nasleivanja
nasleivanje definie odnose meu klasama, gde jedna klasa deli
strukturu i ponaanje jedne ili vie drugih klasa (jednostruko i viestruko
nasleivanje).
je tip (is a kind of) veza izmeu nadreene i podreene klase
predstavlja hijerarhiju generalizacija/specijalizacija.

Objekto orijentisano progr 53


Hijerarhija nasleivanja

MEMORIJE
SPECIJALIZACIJA

GENERALIZACIJA
READ-ONLY NESTALNE
STALNE MEMORIJE
MEMORIJE MEMORIJE

FLOPPY HD CD RAM

Objekto orijentisano progr 54


Hijerarhija sadravanja

Univerzitet u Beogradu

PMF ETF FON ...

Hemijski fakultet Biologija Fizika ...

Objekto orijentisano progr 55


Tokom razvoja hijerarhija nasleivanja, struktura i
ponaanje koji su zajedniki za vie klasa, prelaze u
zajedniku nadklasu (superclass).
Principi apstrakcije, enkapsulacije i hijerarhije
meusobno su u konfliktu
enkapsulacija podataka postavlja barijeru iza koje su
sakrivene metode i stanja objekta, dok nasleivanje zahteva
otvaranje interfejsa i mogunost pristupa stanju i metodama
bez enkapsulacije.
dve vrste klijenta klasa :
objekti koji pozivaju operacije nad instancama klase

podklase koje nasleuju klasu

U C++ deklaratori:
private - lanovi dostupni samo samoj klasi
protected - lanovi dostupni klasi i njenim podklasama
public - lanovi dostupni svima

Objekto orijentisano progr 56


Viestruko nasleivanje
U nekim situacijama je dobro imati mogunost nasleivanja od vie
razliitih klasa.
Primer : sistem za simulaciju saobraaja u gradu s ciljem dobijanja
verovatnih vremena dolaska hitnih vozila (emergency) na odredite.
class cVozilo {
protected:
double Brzina;
struct Position Polozaj;
struct Position CiljPuta;
};

class cEmergency {
protected:
bool UpaljenaSirena;
};

class cPolicijskiAuto {
};

class cHitnaPomoc {
};

class cVatrogasniAuto {
};

Objekto orijentisano progr 57


Viestruko nasleivanje
Vozilo

Auto Emergency Kamion

PolicijskiAuto HitnaPomoc VatrogasniAuto

class cVozilo { };
class cEmergency { };
class cAuto : public cVozilo{ };
class cKamion : public cVozilo{ };
class cPolicijskiAuto : public cAuto, public cEmergency { };
class cHitnaPomoc : public cAuto, public cEmergency { };
class cVatrogasniAuto : public cKamion, public cEmergency { };

Objekto orijentisano progr 58


esto postoji mogunost izbora izmeu
korienja nasleivanja i korienja lanskih
varijabli da bi se predstavio neki odnos:
class cEmergency { };

class cVehicle {
public:
cEmergency *eptr;
}

class cAuto : public cVozilo{ };


class cKamion : public cVozilo{ };
class cPolicijskiAuto : public cAuto { };
class cHitnaPomoc : public cAuto { };
class cVatrogasniAuto : public cKamion { };

cAuto::cAuto {
eptr = NULL;
}
cPolicijskiAuto::cPolicijskiAuto {
eptr = new Emergency;
}

Objekto orijentisano progr 59


Sadravanje (aggregation)
Sadravanje se prepoznaje po deo od odnosu meu klasama.
Nije karakteristina samo za OOP (strukture u ostalim programskim
jezicima)
class cMotor {
...
public:
double Zapremina;
int BrojCilindara;
}

class cVozilo {
...
private:
cMotor Motor;
}

pitanje vlasnitva nad agregatnim objektima


sadravanje po vrednosti
sadravanje po referenci

Objekto orijentisano progr 60


Tipizacija
Tip je precizna karakterizacija strukture ili ponaanja
koju deli neki skup entiteta
Tipizacija je potovanje klase objekta, tako da se objekti
razliitih tipova ne mogu meusobno zamenjivati, ili se
mogu zamenjivati na vrlo ogranien nain

stroga i slaba tipizacija (strong & weak typing)


stroga tipizacija: poreenje tipova se strogo provodi (naruavanje
uskladivosti tipova otkriva se prilikom prevoenja).
slaba tipizacija: klijent moe slati bilo kakve poruke drugim klasama,
ak iako klasa ne zna kako ih interpretirati (greke se otkrivaju
prilikom izvoenja programa).
Uz strogu tipizaciju oblikovanje sistema zavisi o tipovima
podataka.
Loa strana je to se unose semantike zavisnosti tako da
sasvim male promene u baznoj klasi mogu zahtevati
promenu i ponovno prevoenje svih podklasa.

Objekto orijentisano progr 61


class cVozilo{
public:
double TrenutnaBrzina ();
void UpaliMotor ();
virtual void UbaciUVisuBrzinu ();
virtual void UbaciUNizuBrzinu ();
protected:
double Brzina;
string ImeTipa;
}
class cKamion : public cVozilo {
public:
void UkrcajTeret (double Tezina);
double TezinaUkrcanogTereta();
void UbaciUVisuBrzinu ();
void UbaciUNizuBrzinu ();
private:
double TezinaTereta, MaxDopustenaTezina;
}
class cBus : public cVozilo {
public:
void UkrcajPutnike (int Broj);
void UbaciUVisuBrzinu ();
void UbaciUNizuBrzinu ();
private :
int BrojPutnika, MaxBrojPutnika;
}

Objekto orijentisano progr 62


cVozilo v1, v2;
cKamion kam;
cBus bus;

double brz = v1.TrenutnaBrzina();


kam.UkrcajTeret(1000);
bus.UkrcajPutnike(25);

v1.UkrcajTeret(100); // nelegalno, osnovna klsa nema UkrcajTeret()


bus.UkrcajTeret(100); // nelegalno, Bus nema UkrcajTeret()

bus.UpaliMotor();

Pridruivanje varijabli (primer stroge tipizacije)


v1 = v2;
v1 = kam; // odbacuju se svojstva koje nema cVozilo

bus = v1; // nelegalno


bus = kam; // nelegalno

Moemo obaviti konverziju jednog tipa u drugi, ako smo sigurni da je


argument nad kojim obavljamo konverziju stvarno datog tipa
void NekaFunkcija (cVozilo &v)
...
if( ((cKamion&)v).TezinaUkrcanogTereta() > 20000 )
...

Objekto orijentisano progr 63


Statiko i dinamiko
povezivanje (static (early) &
dynamic (late) binding)
Odnosi se na trenutak kada se imena povezuju s tipovima

statiko povezivanje
: tipovi svih varijabli i izraza su poznati prilikom
prevoenja
dinamiko povezivanje : poznati tek kod izvoenja
razliit koncept u odnosu na strogu i slabu tipizaciju (jezik moe biti slabo
tipiziran sa statikim povezivanjem, i obrnuto)

int Prestigni (CVozilo &v1, CVozilo &v2)


if (v1.TrenutnaBrzina() > v2.TrenutnaBrzina())
v2.UbaciUVisuBrzinu();

ne zna se unapred (prilikom prevoenja) koja klasa e biti v1 i v2


ali, bez obzira kojeg tipa bili v1 i v2 poziv funkcije TrenutnaBrzina() e
biti statiki povezan (biti e pozvana funkcija iz osnovne klase)
za razliku od toga pozivanje funkcije UbaciUVisuBrzinu() e zavisiti od
toga kog su tipa varijable v1 i v2, te e biti dinamiki povezan (odredie se
prilikom izvoenja programa)
primer vieoblija (polymorphism)

Objekto orijentisano progr 64


Istodobnost
Istodobnost (concurrency)
pojam procesa (drveta)

prava istodobnost vieprocesorski raunar

simulirana istodobnost - jednoprocesorski raunar

aktivni i neaktivni objekti

podrana od jezika:

Smalltaltk - razred Process koji se dalje nasljeuje


Ada - posao (task)
VB - threading model, thread per object / thread pool
u C++ se implementira preko dodatnih biblioteka (library) koje
implementiraju razrede Sched, Timer, Task i druge (AT&T),
u Javi razred Thread.
MS Windows AfxCreateThread(int (*f) (...))

Objekto orijentisano progr 65


Postojanost
Svojstvo objekta preko kojeg se njegovo postojanje
transcendira u vremenu i prostoru
Razliite vrste postojanosti objekata :
prelazni rezultati u izraunavanjima izraza
lokalne varijable kod aktiviranja procedura
globalne varijable
podaci koji postoje izmeu izvoenja programa
podaci koji postoje izmeu razliitih verzija programa
podaci koji nadive program

Objekto orijentisano progr 66


Prednosti objektnog modela
ta e nam objektno orijentisano programiranje kada sve moemo
napisati i u obinom C-u ???
apstrakcija podataka (data abstraction)

ponovna iskoristivost koda (code reusability)

jednom napisani kod se koristi vie puta i na vie razliitih naina

(npr. lista se moe realiziovati tako da se definie javni interfejs a


da se tipovi objekata koji e se u njoj uvati definiu naknadno =
parametrizirani tipovi)
ukoliko je potrebno promeniti ili dodati neke postupke u ve

definisanu klasu, to se izvodi jednostavno pomou nasleivanja i


vieoblija
sistemii se grade na osnovu stabilnih meuformi, tako da sistem

evoluira tokom vremena.

Objekto orijentisano progr 67

You might also like