24
Razvoj softvera Vežbe 1

Razvoj softvera

Embed Size (px)

DESCRIPTION

Vezbe iz razvoja softvera na Matematickom fakultetu, autor: Mirjana Maljkovic

Citation preview

Page 1: Razvoj softvera

Razvoj softvera

Vežbe 1

Page 2: Razvoj softvera

Tokovi

• Tok – apstrakcija datoteka, ulaznih i izlaznihuređaja i komunikacionih linija

• istream – klasa koja definiše interfejs za izdvajanje podataka iz tokova. Osnova za sve ulazne tokove.

• ostream – klasa koja definiše interfejs za prosleđivanje podataka u tokove. Osnova za sve izlazne tokove.

• iostream – obuhvata oba interfejsa

Page 3: Razvoj softvera

Konzolni tokovi

• cin – objekat klase istream, vezan za standardni ulaz

• cout – objekat klase ostream, vezan za standardni izlaz

• cerr – objekat klase ostream, predstavlja izlaz za greške

Page 4: Razvoj softvera

Formatirano pisanje i čitanje

• operator prosleđivanja <<cout << a;

cout << a << b << c;

• operator izdvajanja >>cin >> a;

cin >> a >> b >> c;

Page 5: Razvoj softvera

Neformatirano čitaje i pisanje

• ostream& put (char) – ispisuje tačno jedan karakter u binarnom režimu

• ostream& write(const char* data, int n) – ispisuje u binarnom režimu niz on n karaktera, počev od karaktera na koji pokazuje pokazivač data

• int get() - čitanje tačno jednog karaktera u binarnom režimu

• istream& get(char& c) - čitanje tačno jednog karaktera u binarnom režimu

Page 6: Razvoj softvera

Neformatirano čitaje i pisanje

• istream getline (char* s, streamsize n)-čitanje reda karaktera. Čita se najviše n-1 znakova i upisuju se u niz karaktera na koji pokazuje s.

• istream& read (char* data, int n)–čita u binarnom režimu niz od n karaktera i upisuje ih u prostor na koji pokazuje pokazivač data

Page 7: Razvoj softvera

Prostori imena

• prostor imena – grupiše imena (klase, funkcije, objekte, ...) u logičku celinu

• rešava problem “zagađivanja” globalnog prostora imenanamespace <ime prostora imena> {

}

Page 8: Razvoj softvera

Prostori imena

• upotreba imena iz prostora imena:– <ime prostora imena>::<ime> …

– using <ime prostora imena>::<ime>;

– using namespace <ime prostoraimena>;

• std –prostor imena u kome su definisana svaimena standardne biblioteke

Page 9: Razvoj softvera

Reference

Page 10: Razvoj softvera

Kolekcije podataka

• sekvencijalne kolekcije: lista (list), vektor(vector) i dek (deque)

• elementi poređani u sekvencu i uređeni u nekomporetku

• uređene kolekcije: skup (set) i katalog (map)• apstraktne : stek (stack), red (queue) i red

sa prioritetom (priority_queue)

Page 11: Razvoj softvera

Vektor(vector)

• Elementi su poređani po svom rednom broju –indeksu

• Efikasan pristup elementima na osnovu indeksa i efikasno dodavanje i uklanjanje elemenata na kraj vektora

• Dodavanje i brisanje elemenata iz sredine vektora zahteva premeštanje velikog broja drugih elemenata i predstavljaju neefikasne operacije

Page 12: Razvoj softvera

Vektor(vector)• vector<TipElementa> imeVektora;• size_type size() const – izračunava veličinu

vektora• void push_back(const T& x) – dodavanje

elementa na kraj vektora• void pop_back() – brisanje elementa sa kraja vektora• T& operator[](size_type n) – pristupanje

elementu sa datim indeksomimeVektora[i]

• T& back() – pristup poslednjem elementu• T& front() – pristup prvom elementu

Page 13: Razvoj softvera

Iteratori

• Jedan od osnovnih koncepata na kojimapočivaju kolekcije standardne biblioteke

• Apstrakcija pokazivača, omogućavaju da se poistom principu obilaze elementi proizvoljnekolekcije

• Omogućavaju obradu elemenata nekekolekcije: poređenje, povećavanje ipristupanje elementima

Page 14: Razvoj softvera

Iteratori• U okviru svake apstraktne kolekcije definiše se klasaiterator kao apstrakcija pokazivača na elementekolekcije koja ima bar metode:– operator uvećava ++, prelazak na naredni element kolekcije– operator provere jednakosti ==, da li su dva iteratora jednaka– opeartor različitosti !=– operator dereferenciranja *, izračunava referencu na element

kolekcije na koji se odnosi iterator– begin()- iterator koji se odnosi na prvi element kolekcije– end()- iterator koji se odnosi na prvi element iza poslednjeg

elementa kolekcije, tj. vrednost koju iterator treba da ima nakonobrade svih elemenata kolekcije

Page 15: Razvoj softvera

Iteratori

• niz[n]

• Prosleđivanje elemenata u tokfor(unsigned i=0; i<velicina; i++)

cout << niz[i] << endl;

• Ili for(unsigned i=0; i<velicina; i++)

cout << *(niz+i) << endl;

Page 16: Razvoj softvera

Iteratori

• Ilifor(int* i=niz; i<niz+velicina; i++)

cout << (*i) << endl;

• Iliint* pocetak= niz;int* kraj= niz+velicina;

for(int* i=pocetak; i!=kraj; i++)

cout << (*i) << endl;

Page 17: Razvoj softvera

Iteratori

• Niz –kolekcija KK::iterator pocetak= niz.begin();

K::iterator kraj= niz.end();

for(K::iterator i=pocetak; i!=kraj; i++)

cout << (*i) << endl;

Page 18: Razvoj softvera

Iteratori

• vrste iteratora:– običan - omogućava čitanje i menjanje elemenata

kolekcije– konstantan - omogućava samo čitanje elemenata

kolekcije (const_iterator)– obrnut – omogućava obilazak elemenata od

poslednjeg prema prvom elementu(reverse_iterator)

– konstantan obrnut(const_reverse_iterator)

Page 19: Razvoj softvera

Klasa

• enkapsulacija• vidljivost članova klase

– private – članovi su na raspolaganju samo unutar klase– public – članovi su raspoloživi svim korisnicima klase– protected - članovi su raspoloživi samo unutar

definicija metoda klase i njenih naslednika

protected:int x;string y;

Page 20: Razvoj softvera

Konstruktori

• konstruktori – metodi za inicijalizaciju novihobjekataRazlomak(…)

• podrazumevani konstruktor – bezargumenata, sa praznim telom metoda

Page 21: Razvoj softvera

• podrazumevane vrednosti argumenata – mogu se navoditi u svim funkcijama i metodama klasa, osim u operatorimaRazlomak( int b=0, int i=1 )

• lista inicijalizacijaRazlomak( int b=0, int i=1 ): _Brojilac(b),_Imenilac(i)

{}

Page 22: Razvoj softvera

Operatori za čitanje i pisanje

ostream& operator << (ostream& str, const Razlomak& r)

istream& operator >> (istream& str, Razlomak& r)

Page 23: Razvoj softvera

Prijateljske klase i funkcije

• prijateljske klase i funkcije neke klase imajupristup svim privatnim i zaštićenimelementima te klasefriend class <ime klase>;

friend class <deklaracijafunkcije>;

Page 24: Razvoj softvera

Operatori• aritmetički operatori

Razlomak operator + ( const Razlomak& y ) const

• operatori poređenjabool operator==( const Razlomak& x ) const

• operatori inkrementiranjaRazlomak& operator++ ()Razlomak operator++ (int)

• operator konverzijeoperator double() const