`
_jia_shun
  • 浏览: 27234 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

C++大学基础教程_12_面向对象编程:继承

 
阅读更多
//CommisionEmployee.h

//佣金雇员类,薪水完全是销售提成
/*
#ifndef x //先测试x是否被宏定义过
#define x
程序段 1 //如果x没有被宏定义过,定义x,并编译程序段 1
#endif
程序段 2 //如果x已经定义过了则编译程序段2的语句,“忽视”程序段 1。
*/

#ifndef COMMISION_H
#define COMMISION_H

#include <string>
using namespace std;
class CommisionEmployee
{
public:
	//构造函数,参数分别为firstname,lastname,社会保障编号socialSecurityNumber,
	//                            销售额grossSales,销售提成commisionRate。
	CommisionEmployee(const string &,const string &,const string &,
		                           double = 0.0,double = 0.0);
	~CommisionEmployee();//析构函数
	void setFirstName(const string &);
	string getFirstName();
	
	void setLastName(const string &);
	string getLastName();
	
	void setSocialSecurityNumber(const string &);
	string getSocialSecurityNumber();
	
	void setGrossSales(double);
	double getGrossSales();
	
	void setCommisionRate(double);
	double getCommisionRate();

	double earnings();
	void print();

private:
	string firstName;
	string lastName;
	string socialSecurityNumber;
	double grossSales;
	double commisionRate;
};

#endif

 

//CommisionEmployee.cpp

#include "CommisionEmployee.h"
#include <iostream>

CommisionEmployee::CommisionEmployee( const string &first,const string &last,
	const string &ssn,double sales,double rate)
{
	setFirstName(first);
	setLastName(last);
	setSocialSecurityNumber(ssn);
	setGrossSales(sales);
	setCommisionRate(rate);

	cout << "CommisionEmployee constructor: " << endl;
	print();
	cout << "\n\n";
}

CommisionEmployee::~CommisionEmployee()
{
	cout << "CommisionEmployee destructor: " << endl;
	print();
	cout << "\n\n";
}

void CommisionEmployee::setFirstName(const string &first)
{
	firstName = first;
}

string CommisionEmployee::getFirstName()
{
	return firstName;
}

void CommisionEmployee::setLastName(const string &last)
{
	lastName = last;
}

string CommisionEmployee::getLastName()
{
	return lastName;
}

void CommisionEmployee::setSocialSecurityNumber(const string &ssn)
{
	socialSecurityNumber = ssn;
}

string CommisionEmployee::getSocialSecurityNumber()
{
	return socialSecurityNumber;
}

void CommisionEmployee::setGrossSales(double sales)
{
	grossSales = (sales < 0.0)? 0.0:sales;
}

double CommisionEmployee::getGrossSales()
{
	return grossSales;
}

void CommisionEmployee::setCommisionRate(double rate)
{
	commisionRate = (rate > 0.0)? rate:0.0 ;
}

double CommisionEmployee::getCommisionRate()
{
	return commisionRate;
}

double CommisionEmployee::earnings()
{
	return getCommisionRate()*getGrossSales();
}

void CommisionEmployee::print()
{
	cout << "commision employee :" << getFirstName() << " " 
		   << getLastName() << endl;
	cout << "social security number :" << getSocialSecurityNumber() 
		   << "\ngross sales :" << getGrossSales()
		   << "\ncommision rate :" << getCommisionRate() << endl;
}

 

//BasePlusCommisionEmployee.h

//带底薪佣金雇员类,薪水由底薪和提成构成

#ifndef BASEPLUSCOMMISIONEMPLOYEE_H
#define BASEPLUSCOMMISIONEMPLOYEE_H

#include "CommisionEmployee.h"
#include <string>
using namespace std;

class BasePlusCommisionEmployee :public CommisionEmployee
{
public:
	BasePlusCommisionEmployee(const string &,const string &,const string &,
		                                        double = 0.0,double = 0.0,double = 0.0);
	~BasePlusCommisionEmployee();
	void setBaseSalary(double);
	double getBaseSalary();
	double earnings();
	void print();
private:
	double baseSalary;
};

#endif

 

//BasePlusCommisionEmployee.cpp

#include "BasePlusCommisionEmployee.h"
#include <iostream>
using namespace std;

BasePlusCommisionEmployee::BasePlusCommisionEmployee(const string &first,
	const string &last,const string &ssn,double sales,double rate,double salary)
	:CommisionEmployee(first,last,ssn,sales,rate)
{
	setBaseSalary(salary);

	cout << "BasePlusCommisionEmployee constructor: " << endl;
	print();
	cout << "\n\n";
}

BasePlusCommisionEmployee::~BasePlusCommisionEmployee()
{
	cout << "BasePlusCommisionEmployee destructor: " << endl;
	print();
	cout << "\n\n";
}

void BasePlusCommisionEmployee::setBaseSalary(double salary)
{
	baseSalary = salary;
}

double BasePlusCommisionEmployee::getBaseSalary()
{
	return baseSalary;
}

double BasePlusCommisionEmployee::earnings()
{
	return getBaseSalary() + CommisionEmployee::earnings();
}

void BasePlusCommisionEmployee::print()
{
	cout << "base-salaried " ;
	CommisionEmployee::print();
	cout << "base salary :" << getBaseSalary() << endl;
}

 

//mian.cpp

#include "BasePlusCommisionEmployee.h"
#include "CommisionEmployee.h"
#include <iostream>
#include <iomanip> 
using namespace std;

//这个实例旨在明晰继承关系中的析构函数与构造函数调用顺序!!!
int main()
{
	cout << fixed << setprecision(2);
	{
	CommisionEmployee cemployee("Bob","Swift","0123-7890-32",5000,0.04);
	cemployee.print();
	cout << "employee's earning is " << cemployee.earnings();
	cemployee.setCommisionRate(0.05);
	cout << "\n\nUpdate employee information output by print function:" << endl;
	cemployee.print();
	cout << "employee's earning is " << cemployee.earnings();
	cout << endl << endl;
	}
	{
	BasePlusCommisionEmployee bpcemployee("Jax","Lanester","0341-8907-82",8000,0.04,800);
	bpcemployee.print();
	cout << "employee's earning is " << bpcemployee.earnings() << endl;
	bpcemployee.setCommisionRate(0.06);
	cout << "\nUpdate employee information output by print function:" << endl;
	bpcemployee.print();
	cout << "employee's earning is " << bpcemployee.earnings();
	cout << "\n\n";
 	}
	system("pause >> cout");
	return 0;
}

 

分享到:
评论

相关推荐

    面向对象编程:C++与Java比较教程 英文版

    本书《面向对象编程:C++与Java比较教程》详细比较和对比了当今最流行的两种编程语言C++和Java,旨在教授互联网时代至关重要的技能和面向对象编程技术。作者Avinash C. Kak凭借其成功教授的课程,撰写了一本全面的...

    C++大学基础教程_12767412.pdf

    面向对象编程(OOP) - **类与对象**:了解类的概念及其成员函数、属性;掌握对象的创建和使用。 - **继承**:理解类的继承机制,包括单继承和多继承。 - **封装与多态**:学习封装的实现方法以及多态性的概念。 ###...

    c++面向对象编程实例大全

    《C++面向对象编程实例大全》是一本专为初级学习者设计的教程,旨在通过丰富的实例深入浅出地讲解C++的面向对象编程概念。面向对象编程(Object-Oriented Programming,简称OOP)是C++的核心特性,也是现代软件开发...

    Visual C++面向对象编程教程

    《Visual C++面向对象编程教程》是清华大学王育坚教授编著的一本深入浅出的教材,旨在教授读者如何利用Microsoft的Visual C++环境进行面向对象的程序设计。该书结合了理论与实践,旨在帮助初学者理解面向对象编程的...

    Visual C++面向对象编程教程 王育坚

    《Visual C++面向对象编程教程 王育坚》第二版是深入学习C++编程的一本经典教材,尤其强调面向对象编程的理论与实践。王育坚教授以其丰富的教学经验,将复杂的C++语言概念与实际应用相结合,帮助读者更好地理解和...

    C++基础教程_完整版 - 副本.pdf

    综上所述,这本C++基础教程覆盖了从最基础到较为高级的主题,不仅包括了C++语言的语法和标准库的使用,还涵盖了面向对象编程、高级编程概念以及如何利用这些知识来编写实用的C++程序。通过结合实践,本教程旨在帮助...

    面向对象编程(c++)教程

    本教程的PPT文件分别涵盖了C++的多个版本和主题,例如可能包含C++2、C++5、C++11等版本的关键特性介绍,以及面向对象编程的各个核心概念。通过学习这些材料,你可以逐步掌握C++的面向对象编程,提高编程能力。

    Visual C++面向对象编程教程--王育坚

    《Visual C++面向对象编程教程--王育坚》是一本深入浅出地介绍如何使用Microsoft的Visual C++环境进行面向对象编程的教材。这门课程或教程的重点在于理解和应用C++语言的核心特性,特别是它的面向对象特性,如类、...

    《C++大学教程》课后题详细答案(1—11)

    5. `cpphtp5_06_IM.pdf`:这一章可能涉及到类和对象,这是面向对象编程的核心。学习者会接触到类的定义、对象的创建、成员函数、访问修饰符(public、private、protected),以及构造函数和析构函数。 6. `cpphtp5_...

    浙江大学_C++面向对象_翁凯教学视频[1-13][共41]

    《浙江大学_C++面向对象_翁凯教学视频[1-13][共41]》是一部深入探讨C++面向对象编程的教程,由浙江大学的翁凯教授主讲。本系列视频涵盖了C++语言的核心面向对象特性,包括类、对象、封装、继承、多态等关键概念。...

    C++大学基础教程 光盘

    《C++大学基础教程》是针对初学者设计的一门课程,旨在系统地介绍C++编程语言的基本概念和应用。这本教程,特别是第五版《Small C++ How to Program》,是许多大学入门级C++课程的首选教材。它深入浅出地讲解了C++的...

    C++思想与方法_c++程序设计教程_appliedm3u_

    学习C++的过程中,你需要理解面向对象编程的概念,包括封装、继承和多态,这些都是C++的核心特性。封装允许我们将数据和操作数据的方法组合在一起,形成一个独立的对象;继承则是实现代码重用的一种方式,一个类可以...

    Visual C++ 面向对象编程教程 (第2版) 电子课件

    这本书深入浅出地介绍了如何使用Microsoft的Visual C++开发环境进行面向对象编程,涵盖了C++语言的基础、类与对象、封装、继承、多态等核心概念。 首先,面向对象编程(Object-Oriented Programming,简称OOP)是...

    Visual C++ 面向对象编程教程 王育坚

    《Visual C++ 面向对象编程教程》是王育坚编著的一本针对C++初学者的指导书籍,旨在帮助读者深入理解C++语言,特别是其面向对象编程(Object-Oriented Programming, OOP)的概念和技术。C++是一种强大的、通用的编程...

    C++面向对象程序设计教程——课件PPT

    第2章“C++基础”回顾了C++的基础语法,如变量、数据类型、控制结构、函数等,这些都是学习面向对象编程的必备前提。理解这些基本元素对于后续章节的学习至关重要。 第3章和第4章“类和对象1”及“类和对象2”详细...

    C++基础教程_完整版

    C++基础教程通常被设计为引导初学者掌握这种语言的基础知识,并逐步深入至高级主题。本教程由Juan Soulié编写,Jing Xu(aqua)翻译,并经过最新校对。它覆盖了从C++的基础概念到ANSI-C++标准中新增功能的广泛话题。 ...

Global site tag (gtag.js) - Google Analytics