#include <iostream>
#include <exception>
using namespace std;
class osoba
{
private:
int god;
char* ime;
public:
osoba(char* i, int g)
{
ime=new char[strlen(i)+1];
strcpy(ime, i);
god=g;
}
osoba(const osoba& o)
{
ime=new char[strlen(o.ime)+1];
strcpy(ime, o.ime);
god=o.god;
}
friend ostream& operator<<(ostream& out, const osoba& obj)
{
out<<"\tIme: "<<obj.ime<<endl;
out<<"\tGodiste: "<<obj.god<<endl;
return out;
}
~osoba()
{
delete [] ime;
}
};
template <class T>
class studenti
{
private:
int brojac;
T* niz[10];
public:
studenti()
{
brojac=0;
}
void dodaj(T& obj)throw (exception)
{
if(brojac>=10)
throw exception("Maksimalan niz studenata je popunjen!");
niz[brojac]=new T(obj);
brojac++;
}
friend ostream& operator<<(ostream& out, const studenti<T>& obj)
{
if(obj.brojac>0)
{
for(int i=0; i<obj.brojac; i++)
out<<*(obj.niz[i]);
}
else
out<<"Trenutno nema studenata"<<endl;
return out;
}
};
template <class T>
class predmet
{
private:
studenti<osoba> st;
T* profesor;
char* naziv;
public:
predmet(char* n, char* i, int g)
{
profesor=new osoba(i, g);
naziv=new char[strlen(n)+1];
strcpy(naziv, n);
}
void dodajStudent(char* ime, int god)
{
osoba* temp=new osoba(ime, god);
st.dodaj(*temp);
delete temp;
}
friend ostream& operator<<(ostream& out, const predmet<T>& obj)
{
out<<"Naziv Predmeta: "<<obj.naziv<<endl;
out<<"Profesor:"<<endl;
out<<*(obj.profesor)<<endl;
out<<"Studenti:"<<endl;
out<<obj.st<<endl;
return out;
}
void info()
{
cout<<*this<<endl;
}
~predmet()
{
delete profesor;
delete [] naziv;
}
};
class fakultet:public predmet<osoba>
{
private:
char* fax;
public:
fakultet(char* faks, char* naziv, char* ime, int god)
:predmet<osoba>(naziv, ime, god)
{
fax=new char[strlen(faks)+1];
strcpy(fax, faks);
}
void ispis()
{
cout<<"Naziv fakulteta: "<<fax<<endl;
predmet<osoba>::info();
}
~fakultet()
{
delete [] fax;
}
};
void main()
{
try
{
fakultet faks("FIT", "Programiranje 2", "Jasmin Velagic", 1970);
faks.dodajStudent("Zlatko Lakisic", 1984);
faks.dodajStudent("Sabina Meric", 1982);
faks.ispis();
}
catch(exception& e)
{
cout<<"Greska! - "<<e.what()<<endl;
}
catch(...)
{
cout<<"Greska se desila!"<<endl;
}
system("pause");
}
da li moze neko da mi iskomentarise ovaj kod tako da mogu da poslije opisem uradeno za seminarski rad tj. taj rad trebam odbranit... trebam znati objasniti zasto sam recimo koristio u template klasi objekat druge template klase itd...
unaprijed hvala
pozdrav












treba mi pomoc oko komentarisanja koda za seminarski