#ifndef _person_h_
#define _person_h_
#include <string.h>
#include <iostream.h>
class person {
public:
person() { strcpy(name, ""); }
person(const person& p) { strcpy(name, p.name); }
virtual person * clone() const = 0;
virtual void display(char *) const = 0;
void setName(char *);
void getName(char *) const;
enum { nameLen = 20 };
protected:
char name[nameLen+1];
};
class academic {
public:
academic() { strcpy(dept, ""); }
academic(const academic& a) { strcpy(dept, a.dept); }
void setDept(char *);
void getDept(char *) const;
enum { deptLen = 4 };
protected:
char dept[deptLen+1];
};
class industry {
public:
industry() { strcpy(company, ""); }
industry(const industry& i) { strcpy(company, i.company); }
void setCompany(char *);
void getCompany(char *) const;
enum { companyLen = 15 };
protected:
char company[companyLen+1];
};
class employee : public person {
public:
employee() { salary = 0; }
employee(const employee& e) { salary = e.salary; }
void setSalary(int);
void getSalary(int&) const;
protected:
int salary;
};
class student : public person, public academic {
public:
student() { ; }
student(const student& s);
person * clone() const;
void display(char *) const;
};
class instructor : public employee, public academic {
public:
instructor() { ; }
instructor(const instructor& i);
person * clone() const;
void display(char *) const;
};
class programmer : public employee, public industry {
public:
programmer() { ; }
programmer(const programmer& p);
person * clone() const;
void display(char *) const;
};
#endif