You are on page 1of 39

OBJEKTNO ORJENTISANO

PROGRAMIRANJE

Programski jezik C++

Predavač: dr Dragica Jovanović


Asistent: Marko Bursać

1
Literatura:

1. Autorizovana predavanja OOP C++, dr


Dragica Jovanović, VŽŠSZ, Beograd
2. Autorizovane vežbe OOP C++, dr Dragica
Jovanović, VŽŠSZ, Beograd
3. Naučite C++ za 21 dan, Jesse Liberty
Kompjuter biblioteka

2
Polaganje ispita:

► Sticanje prava na polaganje


- urađene vežbe, domaći zadaci
- položeni kolokvijumu/testovi

3
Uvod u programski jezik C++
► Štaje objektno orjentisano programiranje
(OOP)?
► Object Oriented Programming(OOP)
► OOP je pristup realizaciji softvera kao modela
realnog sveta

►U OOP –u se u problemu identifikuju objekti koji


nešto rade i apsrakcije koje predstavljaju skupove
objekata istih svojstava.
► Objekat student, autobus, račun

4
Objekti:
► Student
 Atributi: ime, brInd, DatUpisa, Semestar, Pred1, Oce1,
Pred2, Oce2....
 Metode: položio, stekaoUslov, prosek, praksa
► Autobus
 Atributi: marka, regBr, cm3, brSed, linija,
 Metode: aktivan, trenutaPozicija, prodaoKarata,
► račun
 Atributi: BrojRac, stanje, valuta, datum,
 Metode: uplata, istpata, izveštaj, konverzija, pozajmica

5
► Objekat ima svoje unutrašnje stanje
 čija je realizacija nedostupna drugim objektima i
 operacije (akcije) koje se nad njim mogu izvršiti spolja.

► Objekti međusobno sarađuju izvršavanjem


operacija.
► Primeri objekata:
 bankomat, telefonska govornica, vaga,

► Instanca objekta:
 Objekat Student --> instanca: student Marija Ćirić

6
Ključni koncepti OOP-a
► Klase
► Objekti
► Nasleđivanje i
► Polimorfizam

► CILJ je
 da prograsmski modul bude što bliži realnom
svetu.
7
Klase
Korisnički struktura podataka tipa klase objedinjava:
► podatke (atribute) i
► operacije nad njima (metode)
►u jednu celinu (paket) pomoću koje deklarišemo
objekte.
Korišćenje takvih objekata u programima se naziva
OBJEKTNO ORJENTISANO PROGRAMIRANJE.

8
Primer klase:

Klasa: AritmOperacije
Atributi: brojevi a, b , c
Metode:
 Sab // c = a+b
 Oduz // c = a – b
 Mno // c = a * b
 Delj // c = a / b i a # 0

9
PRIMER:
► Fabrika - odeljenje za pakovanje eksera
 mašina za proizvodnju eksera od metalne žice,
 sanduk sa napravljenim ekserima,
 kutijice sa ekserima(500kom).

► Mašina se isključuje ako:


 nestane žice ili
 ako se istupi nož za sečenje ili
 ako se prepuni sanduk sa ekserima.
10
Zašto OOP ?

► OOPje smišljen pre više od 20 godina kao


odgovor na softversku krizu!

► Projektovanje, izrada i održavanje softvera


su postali previše skupi, preglomazni,
►a greške u softveru su su postajale sve
ozbiljnije, teže za uočavanje i otklanjanje.

11
Softverska kriza --> problemi:
► Zahtevi korisnika su se drastično povećali
► Povećanje broja programera u timu
► Brige oko organizacije projekta
► Sklapanje delova programa u celinu

12
Ključ uspeha
► velikih softverskih sistema projekata je:
 podela posla na delove
 koji imaju jasno specifikovane interakcije i
 koji ne zalaze jedan drugome u ' u
unutrašnjost',
 kao i mogućnost višestruke upotrebe istih
modula – softverskih delova.

13
Šta je je jezik C++ i kako je nastao?

► C++ je objektno orjentisani jezik opšte namene.


► C++ je nastao kao rezultat pokušaja rešavanja
praktičnih problema programera.
► Pogodan je za sistemsko i aplikativno
programiranje svih namena.
► Nastao je kao naslednik jezika C.
► C++ je zamislio Bjarne Struostrup, početkom 80-
tih godina.
14
Šta daju OOP i C++ kao rešenja?

► OOP daje kao rešenja a


► C++ podržava sledeće koncepte:

 apstraktne tipove podataka,


 enkapsulaciju,
 nasleđivanje i
 polimorfizam.

15
Koncept apstraktnih tipova podataka

► omogućava da se u programu definišu

 korisnički tipovi predstavljeni

 internom strukturom podataka i

 operacijama koje se mogu vršiti.

16
► Enkapsulacija je
 zaštita unutrašnje realizacije tipa od pristupa
spolja.

► Nasleđivanje je
 relacija između tipova:
 jedan tip predstavlja jednu vrstu drugog tipa
 Npr. TransportnoVozilo (marka, RegBroj, cm3,
KmSt)
Kamion (nosivost), Autobus (brojPutnika),
KombiP(brojPutnika), KombiT(nosivost)
17
► Polimorfizam predstavlja
 ponašanje nasleđenog tipa na njemu svojstven
način,
 iako se koristi kao osnovni tip.
► Na primer:
► Račun (brojRačuna, stanje, valuta, vlasnik):
 tekućiRačun,
 žiroRačun,
 devizniRačun
► UplataNaRačun(arg1, arg2, arg3,..)
18
► C++ podržava i koncept preklapanja
operatora:

 mogu se definisati značenja operatora


ugrađanih u jezik, za korisničke tipove.

19
Termini na engleskom jeziku

► Apstraktni tipovi podataka ( abstract data types)

► Enkapsulacija ( encapsulation; information


hiding) – sakrivanje detalja realizacije nekog tipa
► Nasleđivanje ( inheritance) - mnogi se slažu da
je ovo najznačajniji koncept OOP-a.
► Polimorfizam (polymorphism) ili pojavljivanje u
više oblika

20
Šta se menja prelaskom na OOP?
► OOP uvodi drugačiji način razmišljanja u
programiranje.
►U OOP-u je najznačajnije projektovanje, a sama
realizacija (kodovanje) je jednostavniji posao koji
se odlaže za kasnije.
►U OOP-u se razmišlja o problemu koji se rešava, a
ne direktno o programskon rešenju.
►U OOP-u se razmišlja
 o delovima sistema (objektima) koji nešto rade
 a ne o algoritmima, tj o tome kako se nešto radi.
21
►U OOP-u se razmišlja tj. pažnja se prebacuje
 sa realizacije delova programa
 na međusobne veze između tih delova.

Težnja je da se
broj i intezitet tih veza što više smanji i
da se one strogo kontrolišu.

Cilj OOP-a je da smanji interakciju između


softverskih delova.

22
Razvojni ciklus C++ programa

► Pisanje programa
► Prevođenje programa
► Povezivanje programa
► Izvršavanje programa
► Otklanjanje grešaka

23
► 1)Izvorni kod programa – čine datoteke
kreirane u editoru
 (ekstenzija .cpp, .cp, .c zavisno od
prevodioca)

► Datoteka sa izvornim kodom


 nije program i
 ne može da se izvršava ili pokreće kao što
program može

24
► Prevođenje programa –
 potrebno je pokrenuti prevodilac ili kompajler
 koji će prevesti
 izvorni kod u objektnu datoteku (ekstenzija
.obj).

► Razne vrste prevodilaca --> različito se pokreću


na primer:
 Borland C++ prevodilac
 Borland C++ prevodilac za Windows
 Borland Turbo C++ prevodilac
 Microsoft prevodioci...
25
► C++ programi se obično kreiraju
povezivanjem
 jedne ili više OBJ datoteka sa
 jednom ili više biblioteka.

► Biblioteka je
 skup datoteka koje se mogu povezivati.
► Biblioteka sadrži
 funkcije i klase koje se uključuju u programe.

26
Napomena:
Funkcija je
► blok koda za rešavanje nekog problema.

Klasa je
► kolekcija podataka i
► funkcija koje se odnose na podatke iz klase.

Biblioteke se
► dobijaju sa prevodiocem ili
► se mogu kupiti posebno ili
► se mogu napraviti i prevesti.

27
Koraci:
► Kreiranje
datoteke sa izvornim kodom
.CPP ekstenzija;
► Prevođenjeizvršnog koda u datoteku sa
.OBJ ekstenzijom;
► PovezivanjeOBJ datoteke sa potrebnim
bibliotekama da bi se dobio izvršni program.
► Izvršavanje programa
► Otklanjanje grešaka
28
Primer: Zdravo.cpp --> Vaš prvi C++ program

# include <iostream.h>
int main ( )
{
cout <<''Zdravo svete! \ n'';
return 0;
}

29
Redosled radnji:
1) uneti program u editor
2) snimiti program --> Zdravo.cpp
3) prevesti program --> Zdravo.obj
4) povezati program--> Zdravo.exe
5) pokrenuti program -->

30
2. Delovi C++ programa

► delovi C++ programa


► kako delovi rade zajedno
► šta je to funkcija i šta ona radi

► C++ program se sastoji od


 objekata,
 funkcija,
 promenljivih i drugih delova.
31
2.1. Analiza delova jednostavnog
programa
.

# include <iostream.h>
int main ( ) Zdravo svete!
{
cout <<''Zdravo svete! \ n'';
return 0;
}

32
Linija 1: # include <iostream.h>

//datoteka iostream.h je uključena u program


# - znak koji prepoznaje pretprocesor
include – instrukcija koja pretprocesoru kaže:
'' Nađi datoteku <iostream.h> i uključi je u program na
ovo mesto.'‘
iostream.h – Input-Output-Stream ime datoteke
Pretprocesor (preprocessor) –
izvršava se pre prevodioca i
prevodi svaku liniju koja počinje sa znakom # u adekvatnu
komandu
33
Linija 3: int main ( )
// svaki program započinje funkcijom main ()
Kada se program pokrene funkcija main ( ) se poziva
automatski.

Int - je tip vrednosti koji funkcija vraća. Ako funkcija ne


vraća nikakvu vrednost onda se kao tip povratne
vrednosti navede void.

Main – ime funkcije

( ) – obavezan znak, unutar zagrada se upisuju argumenti


funkcije
34
Linija 4 i 7: { }

{ } – sve funkcije započinju


otvorenom velikom zagradom ({ ), a
završavaju se zatvorenom velikom
zagradom ( } ).

35
Linija 5: cout <<''Zdravo svete! \ n'';

// ispisuje poruku 'Zdravo svete! ' na ekran


cout – objekat koji se koristi za štampanje (naredba)
<< - operator izlazne redirekcije. Sve što je iza
njega se štampa na ekran.
''Zdravo svete! \ n'' – niz karaktera koje štampamo
stavljamo u dvostruke navodne znake. Znaci \ n
upućuju cout da pređe u novi red posle ispisa
navedenog stringa.
; - znak za kraj naredbe
36
Linija 6: return 0;

return – službena reč, služi za vraćanje vrednosti


funkcije
0 – vrednost koju funkcija vraća
; - znak za kraj naredbe

Napomena :
Prema litetaturi (C++ za 21 dan) funkcija main()
uvek vraća 0.
37
Zadtak: Napisati program u C++ koji sabira dva cela broja.
// Sabiranje dva broja

# include <iostream.h>
class kOperacije
{
public:
int pZbir; // atribut klase
int fSuma (int pBroj1, int pBroj2); // metoda (funkcija) klase

};

kOperacije :: fSuma (int pBroj1, int pBroj2) // definicija funkcije članice


{
pZbir = pBroj1 + pBroj2;
cout << " Suma brojeva " << pBroj1 << " i " << pBroj2 << " je " <<
pZbir;
cout << endl;
return 0; 38
};
// Glavni program

int main ( ) // zaglavlje main funkcije


{
kOperacije oRacun; // deklarisanje objekta

oRacun.fSuma (10, 20); // komunikacija sa


// objektom posrdstvom
// njegovih metoda
return 0;
}
KRAJ

39

You might also like