class Datum{
int * _dan, * _mjesec, * _godina;
};
class ObavezeNaPredmetu{
string _nazivObaveze; //seminarski rad; 1.parcijalni; 2.parcijalni; integralni
Datum * _datumIzvrsenja;
int _ocjena; // 5 – 10 // za sve ocjene koje nisu validne treba baciti izuzetak
public:
//1. operator<< :: ispisuje vrijednosti svih dostupnih atributa klase
};
class Predmet{
const int _predmetID;
string _nazivPredmeta;
vector<char *> _profesoriNaPredmetu; //imena profesora koja predaju na predmetu
public:/*
1. operator+= :: na osnovu parametra tipa string omogucava dodavanje novog profesora na predmet.
Prilikom dodavanja onemoguciti da se jednom predmetu dodaju dva profesora sa istim imenom. U
zavisnosti od uspjesnosti operacije funckija vraca true ili false. Unutar funkcije koristiti
iteratore.
2. operator-= :: na osnovu parametra tipa string uklanjanja ime profesora sa liste profesora na
predmetu. U zavisnosti od uspjesnosti operacije funckija vraca true ili false. Unutar funkcije
koristiti iteratore*/
};
template<class T>
class Kolekcija{
T * _niz;
int * _tretnutno;
int * _max;
public:/*
1. AddElement :: osigurava dodavanje novog elementa u kolekciju. Osigurati automatsko prosirenje
kolekcije.
2. RemoveElement :: na osnovu parametra tipa T vrsi uklanjanje elementa iz kolekcije. Prilikom
uklanjanja ocuvati redoslijed dodavanja elemenata*/
};
class PolozeniPredmet{
Datum _datumPolaganja;
Kolekcija<ObavezeNaPredmetu> _listaIzvrsenihObaveza;
int _konacnaOcjena; //formira se na osnovu ocjena izvrsenih obaveza
public: /*
1. FormirajKonacnuOcjenu :: je zaduzena za formiranje konacne ocjene na polozenom predmetu.Svi
predmeti trebaju imati najmanje tri izvrsene obaveze, od kojih jedna mora biti seminarski rad.
Ukoliko sve obaveze nisu izvrsene, konacna ocjena treba biti postavljena na vrijednost 5.
Funkcija vraca novoformiranu ocjenu.
2. DodajIzvrsenuObavezu :: na osnovu primljenog parametra dodaje obavezu u listu izvresnih
obaveza. Onemoguciti dodavanje identicnih obaveza.
3. ProfesorNaPredmetu :: funkcija koja vraca vrijednost true ili false u zavisnosti od toga da li
je trazeni profesor predavao na polozenom predmetu ili ne*/
};
void main(){
//izbjegavajte koristenje vlastitog imena i prezimena.
//provjeriti validnost izvrsenja svih dostupnih funkcionalnosti
//ukratko pojasniti i demonstrirati koncepciju polimorfizma
}