Post on 02-Jan-2016
Polymorphism
Dr. Leon Jololian
Dr.Jololian 2
class Person {private:
string name;int age;
public:Person(string na, int ag);Person(string na);string getName();int getAge();void setName(string na);void setAge(int ag);void print();
};
Dr.Jololian 3
class Student : public Person {private:
string major;float gpa;
public:Student(string na, int ag, string ma, float gp);string getMajor() { return major; }float getGpa() { return gpa; }void setMajor(string ma) { major = ma; }void setGpa(float gp) { gpa = gp; }void print();
};
Dr.Jololian 4
#include "Student.h"
void main() {Person per("John Doe", 18);per.print();Student stu("Jane Smith", 19, "Business", float(3.8));stu.print();
Person* p;p = &per;p->setAge(21);p->print();
p = &stu;p->setAge(20);p->print();
}
Dr.Jololian 5
Name: John DoeAge: 18Name: Jane SmithAge: 19Major: BusinessGPA: 3.8Name: John DoeAge: 21Name: Jane SmithAge: 20
Output
Dr.Jololian 6
class Person {private:
string name;int age;
public:…virtual void print();
};
class Student : public Person {private:
string major;float gpa;
public:…void print();
};
Virtual Function
Dr.Jololian 7
OutputName: John DoeAge: 18Name: Jane SmithAge: 19Major: BusinessGPA: 3.8Name: John DoeAge: 21Name: Jane SmithAge: 20Major: BusinessGPA: 3.8
Dr.Jololian 8
class Employee : public Person {private:
string title;float salary;
public:Employee( string n, int a, string t, float s);//...void print();
};
Dr.Jololian 9
Employee::Employee(string n, int a, string t, float s): Person(n, a) {
title = t;salary = s;
}
void Employee::print(){Person::print();cout << "Title: " << title << endl;cout << "Salary: " << salary << endl<<endl;
}
Dr.Jololian 10
void main() {Employee emp("Bill Johnson", 25,
"Programmer", float(54325.0));
Person* p;emp.print();
p = &emp;p->print();
}
Dr.Jololian 11
OutputName: Bill JohnsonAge: 25Title: ProgrammerSalary: 54325
Name: Bill JohnsonAge: 25Title: ProgrammerSalary: 54325
Dr.Jololian 12
class Undergrad : public Student {private:
int year;public:
Undergrad(string n, int a, string m, float g, int y);
void print();};
Dr.Jololian 13
Undergrad::Undergrad(string n, int a, string m, float g, int y) : Student(n, a, m, g) {year = y;
}
void Undergrad::print() {Student::print();cout << "Year: " << year << endl;
}
Dr.Jololian 14
void main() {Person* p;
Undergrad und("Tom Jones", 19, "Accounting", float(3.99), 3);
und.print();
p = &und;p->print();
}
Dr.Jololian 15
OutputName: Tom JonesAge: 19Major: AccountingGPA: 3.99Year: 3Name: Tom JonesAge: 19Major: AccountingGPA: 3.99Year: 3
Dr.Jololian 16