Advertisement
Guest User

Untitled

a guest
May 19th, 2017
536
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.31 KB | None | 0 0
  1. #include <iostream>
  2. #include <list>
  3. using namespace std;
  4.  
  5. /*
  6. class Date
  7. {
  8. private:
  9. int year, month, day;
  10. public:
  11. Date(int y, int m, int d) { year = y; month = m; day = d; }
  12. bool operator=(const Date d)
  13. {
  14.  
  15. }
  16.  
  17. };
  18. */
  19.  
  20. class MyObject
  21. {
  22. virtual MyObject* clone()=0;
  23. virtual string toString()=0;
  24.  
  25. };
  26.  
  27.  
  28. class UniMember : public MyObject
  29. {
  30. private:
  31. string e_mail, dob;
  32.  
  33. public:
  34. string name;
  35. UniMember(string n, string e, string d);
  36. virtual void print();
  37. string toString() final override;
  38. };
  39.  
  40. void UniMember::print(){
  41. cout << "UniMember name: "<<name<<endl;
  42. cout << "UniMember e_mail: "<<e_mail<<endl;
  43. cout << "dob: "<<dob<<endl;
  44. }
  45.  
  46. UniMember::UniMember(string n, string e, string d)
  47. : name(n), e_mail(e), dob(d)
  48. {
  49. cout << "UniMem init" << endl;
  50. }
  51.  
  52.  
  53. class Student : public UniMember
  54. {
  55. private:
  56. int admissionYear;
  57. list<string> courses;
  58.  
  59. public:
  60. Student(string n, string e, string d, int y, list<string> coursesList);
  61. virtual void print();
  62. Student* clone() override;
  63.  
  64. };
  65.  
  66. Student* Student::clone(){
  67. return new Student(*this);
  68. }
  69.  
  70. void Student :: print (){
  71. cout <<"Student Admission Year: "<<admissionYear<<endl;
  72. }
  73. Student :: Student(string n, string e, string d, int y, list<string> coursesList)
  74. : UniMember(n, e, d), admissionYear(y), courses(coursesList)
  75. {
  76. cout << "student init" << endl;
  77. }
  78.  
  79. class Teacher : public UniMember
  80. {
  81. private:
  82. list<string> courses;
  83.  
  84. public:
  85. Teacher(string n, string e, string d, list<string> coursesList);
  86. virtual void print();
  87. Teacher* clone() override;
  88.  
  89. };
  90.  
  91. Teacher* Teacher::clone(){
  92. return new Teacher(*this);
  93. }
  94.  
  95. void Teacher :: print(){
  96. UniMember::print();
  97. //print courses
  98. }
  99. Teacher :: Teacher(string n, string e, string d, list<string> coursesList)
  100. : UniMember(n, e, d), courses(coursesList)
  101. {
  102. cout << "teacher init" << endl;
  103. }
  104.  
  105. void test1()
  106. {
  107. UniMember* pUniMember;
  108. list<string> L = { "maths", "c++", "stuff" };
  109. pUniMember = new Student{"John", "john@stud.com", "1827-05-28", 1997, L};
  110.  
  111. list<string> tL = { "theory of something", "physics" };
  112. pUniMember = new Teacher {"Peter", "boss@uni.ro", "1672-02-12", tL};
  113. pUniMember->print();
  114.  
  115. Teacher* pTeacher;
  116. pTeacher = new Teacher {"Ralph", "ralph@uni.ro", "1972-02-12", tL};
  117. // pTeacher = new UniMember { ""}
  118. }
  119.  
  120. void test_lab10_1(){
  121. list<UniMember*>uList;
  122. list<string> L = { "maths", "c++", "stuff" };
  123. list<string> tL = { "theory of something", "physics" };
  124. uList.push_back(new Teacher{"Peter", "boss@uni.ro", "1672-02-12", tL});
  125. uList.push_back(new Student{"John", "john@stud.com", "1827-05-28", 1997, L});
  126. // uList.push_back(new UniMember{"DASAS","asd@asd.com","123-123-123"});
  127. for (list<UniMember*>::iterator it = uList.begin();it!=uList.end();++it){
  128. (*it)->print();
  129. cout << endl;
  130. }
  131. }
  132.  
  133. //void testNotInst(){
  134. // UniMember{"ASDAWD","asd22@a22sd.com","123-123-123"};
  135. //
  136. //}
  137.  
  138. string UniMember::toString(){
  139. return string("abc");
  140. }
  141.  
  142. class PhDStudent : public Student, public Teacher
  143. {
  144. private:
  145. const static list<string> EMPTY_LIST;
  146. Teacher* coordonator;
  147. public:
  148. PhDStudent(const char* name, const string& dob);
  149. Teacher* getCoordonator() const{
  150. return coordonator;
  151. }
  152. void setCoordonator(const Teacher* pT){
  153. coordonator = pT;
  154. }
  155.  
  156.  
  157. };
  158.  
  159. PhDStudent :: PhDStudent(const char* name, const string& dob)
  160. : Student{name,"12-12-12"},
  161. Teacher{"Pop","12-12-12",EMPTY_LIST},
  162. coordonator{NULL};
  163. {
  164. cout << "INFO: PhDStudent constructor called";
  165. }
  166.  
  167.  
  168.  
  169. void testMultipleInh(){
  170. PhDStudent stud{"Ionescu","12-12-21-"};
  171. assert(stud.name == "Ionescu","INFO:name mismatch");
  172.  
  173. }
  174.  
  175.  
  176. int main()
  177. {
  178. // UniMember Andrew{"Andrew", "andrew@uni.com", "2017-04-12"};
  179. //
  180. // list<string> L = { "maths", "c++", "stuff" };
  181. // Student John{"John", "john@stud.com", "1827-05-28", 1997, L};
  182. //
  183. // list<string> tL = { "theory of chibrit", "boring stuff III" };
  184. // Teacher Peter{"Peter", "boss@uni.ro", "1672-02-12", tL};
  185. testMultipleInh();
  186.  
  187. return 0;
  188. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement