Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <list>
- using namespace std;
- /*
- class Date
- {
- private:
- int year, month, day;
- public:
- Date(int y, int m, int d) { year = y; month = m; day = d; }
- bool operator=(const Date d)
- {
- }
- };
- */
- class MyObject
- {
- virtual MyObject* clone()=0;
- virtual string toString()=0;
- };
- class UniMember : public MyObject
- {
- private:
- string e_mail, dob;
- public:
- string name;
- UniMember(string n, string e, string d);
- virtual void print();
- string toString() final override;
- };
- void UniMember::print(){
- cout << "UniMember name: "<<name<<endl;
- cout << "UniMember e_mail: "<<e_mail<<endl;
- cout << "dob: "<<dob<<endl;
- }
- UniMember::UniMember(string n, string e, string d)
- : name(n), e_mail(e), dob(d)
- {
- cout << "UniMem init" << endl;
- }
- class Student : public UniMember
- {
- private:
- int admissionYear;
- list<string> courses;
- public:
- Student(string n, string e, string d, int y, list<string> coursesList);
- virtual void print();
- Student* clone() override;
- };
- Student* Student::clone(){
- return new Student(*this);
- }
- void Student :: print (){
- cout <<"Student Admission Year: "<<admissionYear<<endl;
- }
- Student :: Student(string n, string e, string d, int y, list<string> coursesList)
- : UniMember(n, e, d), admissionYear(y), courses(coursesList)
- {
- cout << "student init" << endl;
- }
- class Teacher : public UniMember
- {
- private:
- list<string> courses;
- public:
- Teacher(string n, string e, string d, list<string> coursesList);
- virtual void print();
- Teacher* clone() override;
- };
- Teacher* Teacher::clone(){
- return new Teacher(*this);
- }
- void Teacher :: print(){
- UniMember::print();
- //print courses
- }
- Teacher :: Teacher(string n, string e, string d, list<string> coursesList)
- : UniMember(n, e, d), courses(coursesList)
- {
- cout << "teacher init" << endl;
- }
- void test1()
- {
- UniMember* pUniMember;
- list<string> L = { "maths", "c++", "stuff" };
- pUniMember = new Student{"John", "john@stud.com", "1827-05-28", 1997, L};
- list<string> tL = { "theory of something", "physics" };
- pUniMember = new Teacher {"Peter", "boss@uni.ro", "1672-02-12", tL};
- pUniMember->print();
- Teacher* pTeacher;
- pTeacher = new Teacher {"Ralph", "ralph@uni.ro", "1972-02-12", tL};
- // pTeacher = new UniMember { ""}
- }
- void test_lab10_1(){
- list<UniMember*>uList;
- list<string> L = { "maths", "c++", "stuff" };
- list<string> tL = { "theory of something", "physics" };
- uList.push_back(new Teacher{"Peter", "boss@uni.ro", "1672-02-12", tL});
- uList.push_back(new Student{"John", "john@stud.com", "1827-05-28", 1997, L});
- // uList.push_back(new UniMember{"DASAS","asd@asd.com","123-123-123"});
- for (list<UniMember*>::iterator it = uList.begin();it!=uList.end();++it){
- (*it)->print();
- cout << endl;
- }
- }
- //void testNotInst(){
- // UniMember{"ASDAWD","asd22@a22sd.com","123-123-123"};
- //
- //}
- string UniMember::toString(){
- return string("abc");
- }
- class PhDStudent : public Student, public Teacher
- {
- private:
- const static list<string> EMPTY_LIST;
- Teacher* coordonator;
- public:
- PhDStudent(const char* name, const string& dob);
- Teacher* getCoordonator() const{
- return coordonator;
- }
- void setCoordonator(const Teacher* pT){
- coordonator = pT;
- }
- };
- PhDStudent :: PhDStudent(const char* name, const string& dob)
- : Student{name,"12-12-12"},
- Teacher{"Pop","12-12-12",EMPTY_LIST},
- coordonator{NULL};
- {
- cout << "INFO: PhDStudent constructor called";
- }
- void testMultipleInh(){
- PhDStudent stud{"Ionescu","12-12-21-"};
- assert(stud.name == "Ionescu","INFO:name mismatch");
- }
- int main()
- {
- // UniMember Andrew{"Andrew", "andrew@uni.com", "2017-04-12"};
- //
- // list<string> L = { "maths", "c++", "stuff" };
- // Student John{"John", "john@stud.com", "1827-05-28", 1997, L};
- //
- // list<string> tL = { "theory of chibrit", "boring stuff III" };
- // Teacher Peter{"Peter", "boss@uni.ro", "1672-02-12", tL};
- testMultipleInh();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement