资源描述:
《继承与派生应用实例》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、第五章继承与派生应用实例一小型诊所的简单信息管理程序以一个小型诊所的简单信息管理程序为例,来说明类和数据成员、成员函数的设计,以及继承与派生的应用。1.提出问题前面讨论过“人”Person类,在此基础上,我们通过增加医生、患者和账单,使它们共同用于表示一家诊所的信息管理。在一条医生记录中,包括医生的专业说明(specialty),如内科医生(internist)>外科医生(surgeon)、儿科医生(pediatrician)>产科医生(obstetrician)及全科医生(generalpractitioner);除此之外,Doctor记录还含有诊费(offic
2、e_visit_fee)o在一条患者记录中,包括该患者产生的药费(drug_fee),患者的诊费(即医牛的诊费)。在一条账单中,包括一名患者对象、该患者对应的主治医生、该患者产生的诊费和药费。应用程序能够显示出诊所中每个患者的信息和对应主治医生的信息,还应能统计出所有患者的总费用。2.类的设计根据上述需求,设i^一个基类Person,派生出Doctor医生类和Patient患者类,由于账单中包括患者记录以及该患者对应的主治医生,因此,构造Billing账单类时,包含Doctor类和Patient患者类的内嵌对象成员;除此之外,在Billing类中还应含有静态数据成
3、员,用于统计全部患者的总费用,即诊所的总收入。每个类都包含构造函数和析构函数。Person类:姓名(name)年龄(age)性别(gender)身份证号码(id_number)构造函数析构函数getName()showlnfo()Doctor类:专业名称(specialty)诊费(office_visit_fee)构造函数析构函数getOfficeVisit_fee()showlnfo()Patient类:药费(drug_fee)费用(payment,包括诊费和药费)主治医生(dr)构造函数析构函数getPayment()showlnfo()Billing类:患者
4、对象(m_patient)主治医生(m_doctor)总收入(total_income)构造函数析构函数showlnfo()get_total_income()参考代码如下:#include#includeusingnamespacestd;classPerson〃基类{protected:stringname;〃姓名intage;〃年龄chargender;〃性别,f女性,'nT男性stringidNumber;//身份证号码public:Person(string,int,char,string);Person(Person
5、&);〜Person(){}stringgetName();voidshowlnfo();};classDoctor:publicPerson〃医牛类{private:stringspecialty;〃专业名称doubleofficeVisitFee;〃诊费public:Doctor(string,int,char,string,string,double);〜Doctor。{}doublegetOfficeVisitFee();voidshowlnfo();};classPatient:publicPerson〃患者类{private:doubledrugFee
6、;〃药费doublepayment;〃患者费用,包括诊费和药费Doctordr;public:Patient(string,int,char,string,double,Doctor&);〜Patient(){}doublegetPayment();voidshowlnfo();};classBilling〃账单类{private:PatientmPatient;//内嵌患者类对象DoctormDoctor;〃内嵌医生类对象staticdoubletotalincome;//诊所总收入,静态数据成员public:Billing(Patient&,Doctor&);
7、-Billing(){}voidshowlnfo();staticdoublegetTotalIncome();〃静态成员函数};doubleBilling::totallncome=0.0;Person::Person(stringtheName,inttheAge,chartheGender,stringtheldNumber){name=theName;age二theAge;gender=theGender;idNumber=theldNumber;}Person::Person(Person&theObject){name二theObject.name;a
8、ge=th