C++実験七


実験七継承と派生【実験目的】1、継承が対象向けプログラム設計における重要な役割を理解する.2、継承と派生の概念を理解する.3、継承を通じて新しいクラスを派生させる方法を身につける.4、簡単なオブジェクト向けプログラムの作成をさらに学ぶ.【実験内容】1.Personクラスを設計します.2つの派生クラスStudentとEmployeeがあり、Employeeには2つの派生クラスFacultyとStaffがあります.•Personクラスにはstringタイプの名前name、stringタイプのアイデンティティID、stringタイプの電話番号phonenumberがあり、Personクラス構築関数の対応するnameのパラメータにはデフォルトのパラメータ値はありません.•Studentクラスには、属性値を定数として定義する学年grade属性(Freshman、Sophomore、Junior、またはSenior)があります.•Employeeクラスにはstring型のオフィスオフィスオフィスオフィス、double型の月給salary、MyDate型の雇用日dateHiredがあります.Facultyクラスにはレベルrank属性(Professor=3、AssociateProfessor=2、AssistantProfessor=1)があり、属性値も定数として定義されます.教師の給料の計算方法は「給料=基本給」×レベル;•Staffクラスにはstringタイプの職務position属性があり、教職員の給与計算方式は「給与=基本給+手当」×勤務年数」.勤続年数は2010年1月1日までで、基本給BasicWages、手当Allowanceは定数と定義されています.•上記の5つのクラスにはprintメンバー関数があり、そのクラスオブジェクトの給与以外の基本情報を出力します.•MyDateクラスにはyear、month、dayの3つのデータメンバーがあり、2つのMyDateオブジェクト間の年差を計算するメンバー関数diffYear(MyDate&)があり、年差計算は月までしか正確ではありません.3つのデータ・メンバーの取得関数.3.上記のクラスを定義し、構造関数およびその他の必要な関数を合理的に補足します.main関数では、Personクラスオブジェクト、Studentクラスオブジェクト、およびEmployeeクラスオブジェクト、Facultyクラスオブジェクト、およびStaffクラスオブジェクトを定義します.Personクラスとその派生クラスオブジェクトの基本情報を出力し、FacultyクラスオブジェクトとStaffクラスオブジェクトの給与を出力します.
#include 
#include 
#include
using namespace std;
class Person{
public:
	Person(){}
	Person(string _name,string _id="0",string _phonenumber="0000"):name(_name),id(_id),phonenumber(_phonenumber){
	}
	void print(){
		cout<bd.year){
			mons=(year-bd.year)*12+month-bd.month;
		}else{
			mons=(bd.year-year)*12-month+bd.month;
		}
		tmp.year=mons/12;
		tmp.month=mons%12;
		return tmp;
	}
	int getYear(){
		return year;
	}	
	int getDay(){
		return day;
	}
	int getMonth(){
		return month;
	}
	string toString(){
		stringstream ss;
		ss<