polymorphism dr. leon jololian. dr.jololian2 class person { private: string name; int age; public:...

16
Polymorphism Dr. Leon Jololian

Upload: whitney-black

Post on 02-Jan-2016

217 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Polymorphism Dr. Leon Jololian. Dr.Jololian2 class Person { private: string name; int age; public: Person(string na, int ag); Person(string na); string

Polymorphism

Dr. Leon Jololian

Page 2: Polymorphism Dr. Leon Jololian. Dr.Jololian2 class Person { private: string name; int age; public: Person(string na, int ag); Person(string na); string

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();

};

Page 3: Polymorphism Dr. Leon Jololian. Dr.Jololian2 class Person { private: string name; int age; public: Person(string na, int ag); Person(string na); string

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();

};

Page 4: Polymorphism Dr. Leon Jololian. Dr.Jololian2 class Person { private: string name; int age; public: Person(string na, int ag); Person(string na); string

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();

}

Page 5: Polymorphism Dr. Leon Jololian. Dr.Jololian2 class Person { private: string name; int age; public: Person(string na, int ag); Person(string na); string

Dr.Jololian 5

Name: John DoeAge: 18Name: Jane SmithAge: 19Major: BusinessGPA: 3.8Name: John DoeAge: 21Name: Jane SmithAge: 20

Output

Page 6: Polymorphism Dr. Leon Jololian. Dr.Jololian2 class Person { private: string name; int age; public: Person(string na, int ag); Person(string na); string

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

Page 7: Polymorphism Dr. Leon Jololian. Dr.Jololian2 class Person { private: string name; int age; public: Person(string na, int ag); Person(string na); string

Dr.Jololian 7

OutputName: John DoeAge: 18Name: Jane SmithAge: 19Major: BusinessGPA: 3.8Name: John DoeAge: 21Name: Jane SmithAge: 20Major: BusinessGPA: 3.8

Page 8: Polymorphism Dr. Leon Jololian. Dr.Jololian2 class Person { private: string name; int age; public: Person(string na, int ag); Person(string na); string

Dr.Jololian 8

class Employee : public Person {private:

string title;float salary;

public:Employee( string n, int a, string t, float s);//...void print();

};

Page 9: Polymorphism Dr. Leon Jololian. Dr.Jololian2 class Person { private: string name; int age; public: Person(string na, int ag); Person(string na); string

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;

}

Page 10: Polymorphism Dr. Leon Jololian. Dr.Jololian2 class Person { private: string name; int age; public: Person(string na, int ag); Person(string na); string

Dr.Jololian 10

void main() {Employee emp("Bill Johnson", 25,

"Programmer", float(54325.0));

Person* p;emp.print();

p = &emp;p->print();

}

Page 11: Polymorphism Dr. Leon Jololian. Dr.Jololian2 class Person { private: string name; int age; public: Person(string na, int ag); Person(string na); string

Dr.Jololian 11

OutputName: Bill JohnsonAge: 25Title: ProgrammerSalary: 54325

Name: Bill JohnsonAge: 25Title: ProgrammerSalary: 54325

Page 12: Polymorphism Dr. Leon Jololian. Dr.Jololian2 class Person { private: string name; int age; public: Person(string na, int ag); Person(string na); string

Dr.Jololian 12

class Undergrad : public Student {private:

int year;public:

Undergrad(string n, int a, string m, float g, int y);

void print();};

Page 13: Polymorphism Dr. Leon Jololian. Dr.Jololian2 class Person { private: string name; int age; public: Person(string na, int ag); Person(string na); string

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;

}

Page 14: Polymorphism Dr. Leon Jololian. Dr.Jololian2 class Person { private: string name; int age; public: Person(string na, int ag); Person(string na); string

Dr.Jololian 14

void main() {Person* p;

Undergrad und("Tom Jones", 19, "Accounting", float(3.99), 3);

und.print();

p = &und;p->print();

}

Page 15: Polymorphism Dr. Leon Jololian. Dr.Jololian2 class Person { private: string name; int age; public: Person(string na, int ag); Person(string na); string

Dr.Jololian 15

OutputName: Tom JonesAge: 19Major: AccountingGPA: 3.99Year: 3Name: Tom JonesAge: 19Major: AccountingGPA: 3.99Year: 3

Page 16: Polymorphism Dr. Leon Jololian. Dr.Jololian2 class Person { private: string name; int age; public: Person(string na, int ag); Person(string na); string

Dr.Jololian 16