Professional Documents
Culture Documents
17 Oop
17 Oop
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
softverska kriza
zahtevi korisnika su se drastino poveali
Glavni program
Podaci
Glavni program
Podaci
Lokalni podaci
Modul 2
Procedura 2 Podaci 1
Procedura 3
Lokalni podaci
Lokalni podaci
PORUKA PORUKA
PORUKA
OBJEKT OBJEKT
PORUKA PORUKA
PORUKA
OBJEKT
OBJEKT
OBJEKT
Postoji li roba Dovoljna Proveri Proveri valjanost Auriraj Auriraj Poalji Auriraj
u skladitu koliina ? kontrolnu cifru kartice skladite karticu knjige knjigu rauna
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
TEMPERATURA ULJA
VOZA AUTOMOBIL
ITD.
ITD.
SKRENI
POKRENI MOTOR
istodobnost (concurrency)
postojanost (persistence)
Problem
Problem
Model
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);
}
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
interfejs implementacija
KreditnaKartica
Banka
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...)
Marko.pripremi(goveasupa)
Objekat.poruka(parametar_poruke)
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
pripremi (goveu_supu)
kupovina()
kuvanje()
pranje()
End pripremi
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.
Metode objekata
MEMORIJE
SPECIJALIZACIJA
GENERALIZACIJA
READ-ONLY NESTALNE
STALNE MEMORIJE
MEMORIJE MEMORIJE
FLOPPY HD CD RAM
Univerzitet u Beogradu
U C++ deklaratori:
private - lanovi dostupni samo samoj klasi
protected - lanovi dostupni klasi i njenim podklasama
public - lanovi dostupni svima
class cEmergency {
protected:
bool UpaljenaSirena;
};
class cPolicijskiAuto {
};
class cHitnaPomoc {
};
class cVatrogasniAuto {
};
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 { };
class cVehicle {
public:
cEmergency *eptr;
}
cAuto::cAuto {
eptr = NULL;
}
cPolicijskiAuto::cPolicijskiAuto {
eptr = new Emergency;
}
class cVozilo {
...
private:
cMotor Motor;
}
bus.UpaliMotor();
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)
podrana od jezika: