Zada´ca 3
Objektno orijentirano programiranje
Decembar, 2011
Sadrˇ
zaj
1 Napomena
2
2 Problem 1
2
3 Problem 2
3
1
1
Napomena
Rok za zavrˇsetak zada´ce je 03.01.2012.
2
Problem 1
Implementirati klasu BazaRadnika koja implementira bazu radnika i omogu´cava:
• Unos pojedinaˇcnog radnika u bazu. Baza ne dozvoljava unos dva radnika istog imena. Ukoliko se pokuˇsa unijeti radnik dva puta metod
generira domain_error
• Brisanje radnika odreženog imena iz baze. Ako radnik nije izbrisan
metod vra´ca false.
• Unos i ispis kompletne baze pomo´cu objekata klasa istream i ostream
• Raˇcunanje prosjeˇcne plate i starosti radnika.
Klasu testirati sljede´cim glavnim programom:
#include "radnik.h"
#include "baza.h"
#include <iostream>
int main()
{
BazaRadnika b1;
b1.ucitaj(std::cin);
if (b1.izbrisi_radnika("alen"))
std::cout << "alen izbrisan" << std::endl;
std::cout << "U bazi su" << std::endl;
b1.ispisi(std::cout);
std::cout << "Prosjek plata je: " << b1.prosjek_plata() << std::endl;
std::cout << "Prosjek godina je: " << b1.prosjek_godina() << std::endl;
return 0;
}
Primjer pozivanja:
selim 2300.4 34
alen 1950.6 55
alan 2130 59
2
alen 1200 23
Radnik vec u bazi
armando 5000 29
^Z
alen izbrisan
U bazi su
alan 2130 59
armando 5000 29
selim 2300.4 34
Prosjek plata je: 3143.47
Prosjek godina je: 40.6667
3
Problem 2
Napisati klasu Matrica koja ima sljede´ce karakteristike:
• Klasa implementira matricu generiˇckog tipa T, dimenzija m × n, pomo´cu dinamiˇcki alociranog jednodimenzionalnog primitivnog C++ niza
elemenata T. Objekte klase Matrica mogu´ce je konstruisati pomo´cu
dimenzija matrice m i n, dok se elementi matrice inicijaliziraju pomo´cu
default konstruktora klase T.
• Metod operator()(int i, int j) implementirati na naˇcin da se pomo´cu ovog metoda moˇze proˇcitati ili postaviti element matrice u i-tom
redu i j-toj koloni. Obezbijediti verzije za konstantan i nekonstantan
pristup elementu.
• Definirati potrebnu funkcionalnost kako bi bilo mogu´ce sabrati dvije
matrice sa operatorom + i ispisati matricu na objektu tipa ostream
pomo´cu operatora <<. Kod sabiranja matrica ukoliko su dimenzije
matrica nekompatibilne generirati greˇsku tipa std::domain_error sa
odgovaraju´com porukom).
• Implementirati sve dodatne metode koje smatrate potrebnim kako bi
klasa pravilno dealocirala dinamiˇcki alocirane resurse.
Klasu testirati sa sljede´cim programom:
#include "matrica.h"
#include <iostream>
int main()
3
{
Matrica<int> a(2,2);
a(0,0) = 1;
a(0,1) = 34;
a(1,0) = 5;
a(1,1) = 100;
Matrica<int> b(a);
try
{
Matrica<int> c = a + b;
std::cout << c << std::endl;
}
catch (std::domain_error e)
{
std::cout << e.what();
}
return 0;
}
koji svojim izvrˇsenjem proizvodi sljede´ci ispis:
2
10
68
200
4
Download

Zadaca 3 Objektno orijentirano programiranje