#include <iostream>
using namespace std;
/*
编写一个C++程序, 计算程序员( programmer )工资
1 要求能计算出初级程序员( junior_programmer ) 中级程序员 ( mid_programmer )高级程序员( adv_programmer)的工资
2 要求利用抽象类统一界面,方便程序的扩展, 比如:新增, 计算 架构师 (architect ) 的工资
*/
class programer
{
public:
virtual void getSal() = 0;
};
class junior_programmer : public programer //初级程序员
{
public:
junior_programmer(char *name, char *job, int sal)
{
this->name = name;
this->job = job;
this->sal = sal;
}
virtual void getSal()
{
cout << name << " " << job << " : " << sal << endl;
}
private:
char *name;
char *job;
int sal;
};
class mid_programmer : public programer //中级程序员
{
public:
mid_programmer(char *name, char *job, int sal)
{
this->name = name;
this->job = job;
this->sal = sal;
}
virtual void getSal()
{
cout << name << " " << job << " : " << sal << endl;
}
private:
char *name;
char *job;
int sal;
};
class adv_programmer : public programer //高级程序员
{
public:
adv_programmer(char *name, char *job, int sal)
{
this->name = name;
this->job = job;
this->sal = sal;
}
virtual void getSal()
{
cout << name << " " << job << " : " << sal << endl;
}
private:
char *name;
char *job;
int sal;
};
//系统拓展添加一个架构师类
class architect : public programer
{
public:
architect(char *name, char *job, int sal)
{
this->name = name;
this->job = job;
this->sal = sal;
}
virtual void getSal()
{
cout << name << " " << job << " : " << sal << endl;
}
private:
char *name;
char *job;
int sal;
};
//简单框架
void CalPerSal(programer *base)
{
base->getSal();
}
void main()
{
junior_programmer jp("小杨", "初级程序员", 7000);
mid_programmer mp("小詹", "中级程序员", 8000);
adv_programmer ap("小周", "高级程序员", 9000);
//系统拓展添加一个架构师类
architect arh("老李", "架构师 ", 10000);
CalPerSal(&jp);
CalPerSal(&mp);
CalPerSal(&ap);
CalPerSal(&arh);
system("pause");
}
第七天之面向抽象类编程计算程序员工资
最新推荐文章于 2023-10-08 20:35:16 发布