当前位置:文档之家› 实验报告3继承与多态

实验报告3继承与多态

实验报告3继承与多态
实验报告3继承与多态

计算机课程实验报告

2012—2013学年度第一学期

系别:数学与计算机科学学院

image =image-other.image; retur n *this;

}

int

{

mai n ()

COMPLEX c1(1,2)

COMPLEX c2(2);

}

COMPLEX

c3.pri nt ();

c2.add(c1);

c3. subs(c2);

c3.pri nt();

return 0;

c3(c1)

给出输出结果,分析this的用途■在此程序的基础上实现运算符” + ”和”的重载this是自身的地址,但是*this就是自身了■是按值回返了■如果函数的回返值是带有& 号的,那么回返值就是引用了

构造出五个公共类函数,此函数在运行时没有出现问题,但是我经过仔细阅读理解程序的过程中,主要对这个this的用途和用法在网上查阅学习了下,一种情况就是,在类的非静态成员函数

中返回类对象本身的时候,直接使用

return *this ;另外一种情

况是当参数与成员变量名相同时,如this->n = n (不能写成n = n )。

(2)运算符重载:以下程序要求实现运算符++的前置和后置重载,但实际上并没有实现试分析原因,并作出修改,以实现此功能。#in elude

class OperClass

{ int x;

public:

OperClass();

OperClass operator ++();

OperClass operator ++(int );

void display();

};

OperClass:: OperClass( ) { x=0; return;}

OperClass OperClass :: operator++() {OperClass A; ++x; A.x=x; return A;} OperClass OperClass :: operator++(int ) {OperClass 代x ++; A.x=x; return A;} void OperClass::display () { cout << “ x= “ <

void mai n ( )

{

OperClass X,Y ; X.display(); ++X;

Y=++X;

Y++.display();

}

内容2:重载<,>,==:

设计字符串类String,用来存放不定长的字符串,重载运算符“==”,“>”,“<”, 用于两个字符串的大于、小于和等于的比较运算。

提示:(1)属于双目运算符,在重载双目运算符时,函数中应该有两个参数。

⑵String类成员变量应为字符型指针;

(3 )多个构造函数的定义;测试数据:

1. Chi n a chi na

2. Nati onal Computer

3. Exam in ati on Rank

4. swust swust

#i ncludevstri ng.h> class CStri ng

{

public:

frie nd int mai n();

CStri ng();

CStri ng(CStri ng &s);

CStri ng(char *s);

friend bool operator >(CString s1,CString s2);

friend bool operator <(CString s1,CString s2); friend bool operator ==(CString s1,CString s2); void display();

~CStri ng();

private:

char *str;

};

CStri ng::CStri ng()

{

str=NULL;

}

CStri ng::CStri ng(CStri ng &s)

{

str=new char[strle n( s.str)+1];

if(str!=NULL)

{

strcpy(str,s.str);

}

}

CStri ng::CStri ng(char *s)

{

str=new char[strle n( s)+1];

if(str!=NULL)

{

strcpy(str,s);

}

i

实验三多态性实验报告

浙江理工大学信息学院 实验指导书 实验名称:类的多态性的实现学时安排:3 实验类别:设计性实验实验要求:1人1组 学号:姓名:  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 一、实验目的 1.理解重载运算符的意义。 2.掌握使用成员函数、友员函数重载运算符的特点。 3.掌握重载运算符函数的调用方法。 4.掌握动态联编的概念。 5.掌握虚函数和纯虚函数的使用方法。 二、实验原理介绍 设计性实验 具体原理请见实验内容和步骤 实现对抽象类的继承,通过operator函数调用的形式,实现运算符的重载 三、实验设备介绍 软件需求: windows或linux下的c++编译器 硬件需求: 对于硬件方面的要求,建议配置是Pentium III 450以上的CPU处理器,64MB以上的内存,200MB的自由硬盘空间、CD-ROM驱动器、能支持24位真彩色的显示卡、彩色显示器、打印机。 四、实验内容 某公司的员工有经理Manager、技术人员Technicist和营销人员SalsePerson,他们的薪金计算方法如下: 经理按月计酬,方法是:基本工资+奖金;技术人员按月计酬,方法是:基本工资;营销人员按月计酬,方法是:基本工资+销售利润*5%。 每类人员都有职工编号、姓名、性别、入职时间、职位、基本工资等数据;各类人员

使用统一接口get_pay()计算各类人员的月薪,重载<<运算符实现员工信息的输出。其次,设计一个统计并输出该公司员工当月薪金情况的报表类Report,该类提供insert接口向Report类的容器中添加员工信息,并提供print接口用于展示以职位为单位的每个员工的职工编号、姓名、性别、入职时间以及当月该员工的薪酬,并统计出该职位员工薪酬的最高值和最低值。为了提供更方便的查找功能,请为Report类重载[]运算符,下标值为职位,能根据职位信息查找出所有符合该职位的员工。在主函数中对实现的类进行测试,首先,创建各类人员对象,通过Report类的insert接口向报表中添加这些人员信息,然后通过Report类的print接口输出当月员工薪酬情况报表。存储员工对象的容器请选用合适的STL容器。 五程序清单 ormat("ddd")<<"\t"; cout<<(*it)->getbasicmoney()<<"\t"<<"\t"; cout<<(*it)->getpay(month) << endl; } } void Report::insert(Employee* p) { (p); } Report::~Report(){ list::iterator it; for(it = (); it != (); it ++){ delete *it; } } double Technicist::getpay(int m){ return basicmoney; } double SalesPerson::getpay(int m){ return basicmoney + sales[m] * ;

JAVA继承和多态实验报告

实验项目名称:继承和多态 (所属课程:Java语言程序设计) 院系:专业班级:姓名: 学号:实验地点:指导老师: 本实验项目成绩:教师签字:日期: 1.实验目的 (1)掌握类的继承机制。 (2)熟悉类中成员变量和方法的访问控制。 (3)熟悉方法或构造方法多态性。 2.实验内容 (1)模拟编写程序,理解类的继承、多态、继承和多态规则。 (2)独立编程,实现类的继承和多态。 3.实验作业 设计一个类Shape(图形)包含求面积和周长的area()方法和perimeter()方法以及设置颜色的方法SetColor(),并利用Java多态技术设计其子类Circle(圆形)类、Rectangle (矩形)类和Triangle(三角形)类,并分别实现相应的求面积和求周长的方法。每个类都要覆盖toString方法。 海伦公式:三角形的面积等于s(s-a)(s-b)(s-c)的开方,其中s=(a+b+c)/2 程序代码为: Class包 package Class; public class Shape { private String color = "while"; public Shape(String color){ this.color = color; } public void setColor(String color){ this.color = color; } public String getColor(){ return color;

} public double getArea(){ return 0; } public double getPerimeter(){ return 0; } public String toString(){ return"color:" + color; } } package Class; public class Circle extends Shape { private double radius; public Circle(String color,double radius) { super(color); this.radius = radius; } public void setRadius(double radius){ this.radius = radius; } public double getRadius(){ return radius; } public double getCircleArea(){ return 3.14*radius*radius; } public double getCirclePerimeter(){ return 3.14*2*radius; } public String toString(){

Java继承与多态实验报告

西安邮电大学 (计算机学院) 课内实验报告 实验名称:继承与多态 专业名称:计算机科学与技术 班级:计科1405班 学生姓名:高宏伟 学号:04141152 指导教师:刘霞林 实验日期:2016.10.13

一、实验目的 通过编程和上机实验理解Java 语言的继承和多态特性,掌握变量的隐藏、方法的覆盖、重载,掌握抽象类和接口的使用。 二、实验要求 1.编写体现类的继承性(成员变量、成员方法、成员变量隐藏)的程序。 2.编写体现类的多态性(成员方法重载)的程序。 3.编写体现类的多态性(构造方法重载)的程序。 4.编写使用接口的程序。 三、实验内容 (一)类的继承 1.创建公共类Student. (1)编写程序文件Student.java,源代码如下: public class Student { protected String name; //具有保护修饰符的成员变量 protected int number; void setData(String m,int h) //设置数据的方法 { name =m; number= h; } public void print() //输出数据的方法 { System.out.println(name+", "+number); } } (2)编译Student.java,产生类文件Student.class。 2.创建继承的类Undergraduate

(1)程序功能:通过Student 类产生子类undergraduate,其不仅具有父类的成员变量name()、number(学号),还定义了新成员变量academy(学院)、department (系)。在程序中调用父类的print 方法。 (2)编写Undergraduate 程序: class Undergraduate extends Student { 【代码1】//定义成员变量academy 【代码2】//定义成员变量department public static void main(String args[]) { 【代码3】//创建一个学生对象s 【代码4】//用父类的setData方法初始化对象s 【代码5】//对象s调用print方法 【代码6】//创建一个大学生对象u 【代码7】//调用父类的成员方法setData初始化对象u 【代码8】//设置对象u的成员变量academy 【代码9】//设置对象u的成员变量department System.out.print(https://www.doczj.com/doc/991400534.html,+", "+u.number+", "+u.academy+", "+u.department); } } (3)编译并运行程序 注意:公共类Student 与undergraduate 类要在同一文件夹(路径)。 (二)方法的重载 (1)程序功能:对不同的数进行排序输出。在IntSort 类中定义3 个同名的方法sort。 (2)编写Sort.java 文件,源代码如下。 import java.awt.Graphics; import java.applet.Applet; class IntSort { public String sort(int a, int b) { if (a>b) return a+""+b; else return b+""+a; } public String sort(int a, int b, int c) { int swap; if (a

继承与多态实验报告

《高级Java编程技术》课程实验报告 院(系)名称:计算机学院专业班级:09计科 3 班 学号:姓名: 实验题目:实验10继承与多态 实验日期:2011/11/29实验(上机)学时:2 一、实验内容、要求 1.实验内容:计算课程成绩 2.要求: 编写应用程序,读入以下风格的文本文件,并显示最后的课程成绩,根据列出的公式,对于本科生和研究生,课程成绩的计算方法不同。输入的文本格式如下: (1)用单独的一行表示一个学生的信息。 (2)每行使用下面的格式: 其中,指明学生是研究生,还是本科生;指明学 生的姓和名;指明是第i次测试成绩。 (3)“END”指明输入的结束。字母的大小写不重要。 公式如下: 学生类型评分方案 本科生通过,如果(test1+test2+test3)/3>=70 研究生通过,如果(test1+test2+test3)/3>=80 实现一个类完成以下功能: (1)读入输入文本文件。

(2)计算课程成绩。 (3)输出结果。 我们将用五个增量步骤开发此程序: (1)以程序结构开始,定义ComputeGrades类的框架。 (2)实现printResult方法,定义实现printResult所必需的任何其他方法。 (3)实现computerGrades方法,定义实现computerGrades所必需的任何其他方法。 (4)实现readDate方法,定义实现readDate所必需的任何其他方 法。 (5)最后完成并改进。 二、所采用的数据结构 如:线性表,二叉树,树,图等。你在此用到了啥样的数据结构就写啥。无数据结构。 三、实验的主要模块(或函数)及其功能 函数分块及各块主要功能的文字描述 ComputGrades类:这是本程序的主类,且是MainWindow的子类。MainWindows本身是Jframe的子类,并且又将其自身放在屏幕中间的功能。ComputGrades类包含的方法如下: 1、构造方法。生成任意大小的数组,让程序员在构造方法中传递数组的 大小,不在构造方法中生成数组。 2、printResult方法。将学生信息机计算出来的成绩输出到OutputBox

C++实验多态性实验报告

贵州大学实验报告 学院:电子信息学院专业:通信工程班级: 姓名学号实验组5实验时间指导教师成绩 实验项目名称多态性 实 验通过让学生进行实验,使其对于动态多态性有一个较为深入的了解和熟悉。最终可以目熟练使用。 的 实 1.编写 4 个重载函数 Double( x),返回值为输入参数的两倍;参数类型分别为int 、验long 、float 、 double ,返回值类型与参数类型一样。 2.请编写一个抽象类Shape,在此基础上派生出类Rectangle和Circle,二者都有 要 计算对象面积的函数GetArea ()和计算周长函数GetPerim ()。 求3.对类 Point 重载 ++(自增)、 -- (自减)运算符。 实 验Visual C++的编译环境下,独立完成实验要求的内容,独立完成编写、编译以及运行 原的过程 理 实 验 安装了 Visual C++ 的 PC机器 仪 器 实 验 按照实验要求的内容逐一完成实验的要求。顺序是编写、编译、运行。 步 骤

实 1. 编写 4 个重载函数 Double(x),返回值为输入参数的两倍;参数类型分别为int、 验 long 、 float 、 double ,返回值类型与参数类型一样。 2. 请编写一个抽象类Shape,在此基础上派生出类Rectangle 和 Circle,二者都有计 内算对象面积的函数GetArea ()和计算周长函数GetPerim ()。容 3. 对类 Point 重载 ++(自增)、 -- (自减)运算符。 1、代码如下: #include using namespace std; int Double(int x); long Double(long x); float Double(float x); double Double(double x); int main() { int myInt = 6500; cout< #define PI 3.1415926; using namespace std; class Shape // 抽象类的定义 { public: virtual double GetArea()= 0; //纯虚函数

实验报告(四)继承和多态 (完整代码)

福建农林大学计算机与信息学院实验报告 实验(四)继承和多态 一、实验目的和要求 1.掌握面向对象的继承关系 2.理解面向对象的多态 3.掌握方法的重写 4.掌握接口的实现 二、实验内容和原理 设计一个抽象类Shape,包括2个抽象方法,分别是计算形状的周长和面积。设计具体类Rectangle和Circle,分别表示矩形和圆,它们都是Shapes的子类。使Rectangle和Circle都实现Comparable接口(根据面积比较大小),编写一个通用的排序程序和一个通用的二分查找程序(自己写代码实现),能对这二种类型的数组进行排序并查找指定的对象。 三、实验环境 1.硬件环境: 2.软件环境:JDK1.5 四、算法描述及实验步骤 1.算法描述(可以用类图、流程图、伪代码或源程序描述) package test; import javax.swing.JOptionPane; import java.util.Scanner; public class Test { public static void main(String[] args) { System.out.println("要创建几个圆?:");

Scanner a1 = new Scanner(System.in); int a = a1.nextInt(); System.out.println("总共创建了" + a + "个圆\n请输入各个圆的半径:"); Shape[] circle = new Shape[a]; Scanner input2 = new Scanner(System.in); for (int i = 0; i < a; i++) { circle[i] = new Circle(input2.nextDouble()); } System.out.println("要创建几个矩形?:"); Scanner b2 = new Scanner(System.in); int b = b2.nextInt(); Shape[] rectangle = new Shape[b]; System.out.println("总共创建了" + b + "个矩形\n请依次输入各个矩形的长和宽:"); Scanner c3 = new Scanner(System.in); for (int i = 0; i < b; i++) { rectangle[i] = new Rectangle(c3.nextDouble(), c3.nextDouble()); } Shape.sort(circle); String str1 = ""; for (int i = 0; i < circle.length; i++) { str1 += String.valueOf(i + 1) + circle[i] + "\n"; } System.out.println("您所创建的圆按半径由小到大排序如下:\n" + str1); Shape.sort(rectangle); String str2 = ""; for (int i = 0; i < rectangle.length; i++) { str2 += String.valueOf(i + 1) + rectangle[i] + "\n"; } System.out.println("您所创建的矩形按面积由小到大排序如下:\n" + str2);

实验报告 继承、多态与接口

实验三继承、多态与接口 一、实验目的 1.掌握Ja v a的继承机制; 2.掌握对象引用的多态方法; 3.掌握接口的特点、结构和调用; 4.掌握接口和继承的混合使用。 二、实验要求 1.编写体现类的继承性(成员变量、成员方法、成员变量隐藏) 的程序。 2.编写体现类的多态性(成员方法重载、构造方法重载)的程 序。 3.编程使用系统接口的技术和创建自定义接口的方法。 三、实验内容 (一)类的继承性练习 1.理解继承的含义 新类可从现有的类中产生,并保留现有类的成员变量和方法并可根据需要对它们加以修改。新类还可添加新的变量和方法。这种现象就称为类的继承。 当建立一个新类时,不必写出全部成员变量和成员方法。只要简单地声明这个类是从一个已定义的类继承下来的,就可以引用被继承类的全部成员。被继承的类称为父类或超类 (su pe rc la ss),这个新类称为子类。 J a va 提供了一个庞大的类库让开发人员继承和使用。设计这些类是出于公用的目的,因此,很少有某个类恰恰满足你的需要。你必须设计自己的能处理实际问题的类,如果你设计的这个类仅仅实现了继承,则和父类毫无两样。所以,通常要对子类进行扩展,即添加新的属性和方法。这使得子类要比父类大,但更具特殊性,代表着一组更具体的对象。继承的意义就在于此。 2.创建公共类S Y3_1_P 编写程序文件S Y3_1_P.ja va,源代码如下:pu bl ic c la ss SY3_1_P{ pr ote c te d St ri ng x m; //具有保护修饰符的成员变量 pr ote c te d in t xh; vo id s et da ta(S tr in g m,in t h) { //设置数据的方法 xm =m; xh = h; } pu bl i c vo id p ri nt(){//输出数据的方法 Sy st em.o ut.pr i nt ln(x m+", "+xh); } }

实验三 多态性

河南**大学 实验报告 课程名称面向对象程序设计名称实验三多态性 院系_信息工程学院__ 班级__计科172 学生姓名_ ** __

实验三多态性 一.实验目的 本实验的目的是使学生了虚函数的作用,掌握多态的概念、编译时多态、运行时多态,掌握运算符重载和虚函数的用法。 二.实验环境 Visual C++ 6.0 及以上版本。 三.实验内容 熟悉掌握C++多态的相关知识。根据老师布置的实验题目,提前分析题目要求所需要的类,设计好解决题目要求需要的对象个数,设计解决问题需要的主函数等。题目可以从以下题目中选择一个。 1.定义一个实数类Real,类中包括一个数据成员real,构造函数、display()函数以及重载的+、-、*、/运算符。用公有继承方式声明一个复数类Complex,该类包括两个数据成员real,image,并重载Real类的函数和+、-、*、/运算符。编写一个复数四则运算计算器。 2.Shape是一个几何图形的基类,它至少有求自身周长函数Circumference()和求自身面积函数Area()。从Shape类派生出Circle类、Ellipse类、Triangle 类和Rectangle类,分别继承基类Shape的Circumference()和Area(),并增加新的成员。编写主函数,定义各派生类对象,求多派生类对象的周长之和、面积之和。 3.其它和本实验目的相符的题目,根据学生实际情况增加相应的题目,但题目难度不应低于以上两个题目。 注意:从以上题目中选择一个作为实验题目。 选择题目2 四、实验原理 1.按照题目要求分析解决问题需要的类; 2.进行类的设计并实现; 3.分析解决问题需要定义的对象及对象间的消息传递关系; 4.设计主函数实现题目要求。 五、数据结构和程序设计

c++多态性实验报告

实验3 多态性 实验课程名:面向对象程序设计(C++) 专业班级:学号:姓名: 实验时间:实验地点:指导教师: 3.1实验目的和要求 (1) 了解多态性的概念。 (2) 掌握运算符重载的基本方法。 (3) 掌握虚函数的定义和使用方法。 (4) 掌握纯虚函数和抽象类的概念和用法。

二、实验内容 一、构建一个复数类Complex,试对下列几个运算符进行重载:++,=,!=,+,-,==,其中要求要有成员重载形式和友元重载形式,而且,++运算符要求实现先加和后加两种形式。 该类定义原型说明: class complex { public: complex(double r=0,double i=0); complex &operator +(complex &c); complex operator -(complex &c); complex operator *(complex &c); friend complex operator /(complex &c1,complex &c2); friend int operator ==(complex &c1,complex &c2); friend int operator !=(complex &c1,complex &c2); //friend complex operator++(complex &c); complex operator++(); complex operator++(int); void disp(); private: double real; double imag; }; 实验代码如下: #include using namespace std; class complex { public: complex(){real=0;imag=0;} complex(double r,double i) { real=r;

c实验报告

面向对象程序设计 (C++) 实 验 报 告 告 指导老师:柯栋梁 学生:吴健 班级:软131 学号: 目录 实验一、VC6.0 环境入门与简单程序设计实验报告错误!未定义书签 实验二、函数的应用实验报告................................... 4..实验三、类与对象实验报告..................................... 9..实验四、C++程序结构实验报告 (17) 实验五、数组、指针与字符串实验报告 (20) 实验六、继承和派生实验报告 (25)

实验七、多态性实验报告 (32) 实验八、面向对象综合实验实验报告 (36) 实验一、VC6.0环境入门与简单程序设计实验报告 系软件工程班级131 学号_ 姓名吴健 同组者______________ 指导教师柯栋梁 一、实验目的: 1、熟悉VC++6.0开了环境并编写简单的C++程序。 3、使用C++语言编写简单的输入输出程序。 4、使用VC++6.0的DEBUG调试功能:单步执行、设置断点、观察变量值。 二、实验内容: 1、使用VC+建立一个标准C++程序,编译、运行如下程序: #in clude Int mai n() { Cout?” Hello World!\n ” ; Cout?” Welcome to C++!\n ” ; } 2、编程计算图形的面积。程序可计算圆形、长方形、正方形等的面积,运行时首先提示用户选择图形类型,然后根据不同图形类型,输入相关参数计算其面积,并将其显示出来。 3、使用DEBU功能观察任务2程序运行中变量值的变化情况。 三、实验要求: 1、任务1要求熟悉VC+开发环境,并能够使用其建立第一个C++程序。 2、实验前要做好充分准备,包括程序清单、调试步骤、调试方法,以及对 程序结果的分析等。 四、实验报告: 1. 程序运行截图

实验报告3继承与多态

计算机课程实验报告 2012—2013学年度第一学期 系别:数学与计算机科学学院

image =image-other.image; retur n *this; } int { mai n () COMPLEX c1(1,2) COMPLEX c2(2); } COMPLEX c3.pri nt (); c2.add(c1); c3. subs(c2); c3.pri nt(); return 0; c3(c1) 给出输出结果,分析this的用途■在此程序的基础上实现运算符” + ”和”的重载this是自身的地址,但是*this就是自身了■是按值回返了■如果函数的回返值是带有& 号的,那么回返值就是引用了 构造出五个公共类函数,此函数在运行时没有出现问题,但是我经过仔细阅读理解程序的过程中,主要对这个this的用途和用法在网上查阅学习了下,一种情况就是,在类的非静态成员函数 中返回类对象本身的时候,直接使用 return *this ;另外一种情 况是当参数与成员变量名相同时,如this->n = n (不能写成n = n )。 (2)运算符重载:以下程序要求实现运算符++的前置和后置重载,但实际上并没有实现试分析原因,并作出修改,以实现此功能。#in elude class OperClass { int x; public:

OperClass(); OperClass operator ++(); OperClass operator ++(int ); void display(); }; OperClass:: OperClass( ) { x=0; return;} OperClass OperClass :: operator++() {OperClass A; ++x; A.x=x; return A;} OperClass OperClass :: operator++(int ) {OperClass 代x ++; A.x=x; return A;} void OperClass::display () { cout << “ x= “ <,==: 设计字符串类String,用来存放不定长的字符串,重载运算符“==”,“>”,“<”, 用于两个字符串的大于、小于和等于的比较运算。 提示:(1)属于双目运算符,在重载双目运算符时,函数中应该有两个参数。 ⑵String类成员变量应为字符型指针; (3 )多个构造函数的定义;测试数据: 1. Chi n a chi na 2. Nati onal Computer 3. Exam in ati on Rank 4. swust swust #i ncludevstri ng.h> class CStri ng {

多态性实验报告

浙江理工大学信息学院 面向对象程序设计实验报告 实验名称:类的多态性的实现学时安排:3 实验类别:设计性实验实验要求:1人1组 学号:姓名:  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 一、实验目的 1. 理解重载运算符的意义。 2. 掌握使用成员函数、友员函数重载运算符的特点。 3. 掌握重载运算符函数的调用方法。 4. 掌握动态联编的概念。 5. 掌握虚函数和纯虚函数的使用方法。 二、实验原理介绍 设计性实验 具体原理请见实验内容和步骤 实现对抽象类的继承,通过operator函数调用的形式,实现运算符的重载 三、实验设备介绍 软件需求: Windows或Linux下的C++编译器 硬件需求: 对于硬件方面的要求,建议配置是Pentium III 450以上的CPU 处理器,64MB以上的内存,200MB的自由硬盘空间、CD-ROM驱动器、能支持24位真彩色的显示卡、彩色显示器、打印机。 四、实验内容 某公司的员工有经理Manager、技术人员Technicist和营销人员SalesPerson,他们的薪金计算方法如下: 经理按月计酬,方法是:基本工资+奖金;技术人员按月计酬,方法是:基本工资;营销人员按月计酬,方法是:基本工资+销售利润*5%。 每类人员都有职工编号、姓名、性别、入职时间、职位、基本工资等数据;

各类人员使用统一接口get_pay()计算各类人员的月薪,重载<<运算符实现员工信息的输出。其次,设计一个统计并输出该公司员工当月薪金情况的报表类Report,该类提供insert接口向Report类的容器中添加员工信息,并提供print 接口用于展示以职位为单位的每个员工的职工编号、姓名、性别、入职时间以及当月该员工的薪酬,并统计出该职位员工薪酬的最高值和最低值。为了提供更方便的查找功能,请为Report类重载[]运算符,下标值为职位,能根据职位信息查找出所有符合该职位的员工。在主函数中对实现的类进行测试,首先,创建各类人员对象,通过Report类的insert接口向报表中添加这些人员信息,然后通过Report类的print接口输出当月员工薪酬情况报表。 五程序清单 #include #include #include using namespace std; class Date{ public: int y, m, d; Date(int yy = 0, int mm = 0, int dd = 0) :y(yy), m(mm), d(dd){} friend istream& operator>>(istream &is, Date &p); friend ostream& operator<<(ostream &os, Date &p); }; class Employee{ protected: Date date; string employee_number; string employee_name; string employee_gender; string employee_position; double employee_basic_money;

类的继承与多态性实验报告

类的继承与多态性实验报告 目录 1.介绍 2.什么是多态 3.多态在Java中的技术基础 4.示例 5.多态的好处 6.总结 介绍 之前的文章介绍过类的封装性和继承性,现在是时候聊聊面向对象编程的三大特性之一的最后一个类的多态性了。 多态的基础是继承(包括了接口的实现)和方法的覆盖。 什么是多态 多态对应的英文单词是polymorphism ,百度翻译给出的翻译是:n.多型现象,多态性;多机组合形式;

按字面意思就是多种状态、形态、姿态等等,潜台词就是某个东西具有多种状态、形态、姿态等等。 那是什么东西呢?在面向对象的编程语言里面(当然就包括Java 了)就是某个 方法或函数。 那方法的多种状态、形态、姿态有是个什么意思呢?这其实是指同一个方法具有多个方法体,就是方法的实现。而方法的相同与否是由方法签名决定的。 所以,多态其实本质上是指同一个类的同一个方法却具有不同的行为特征。状态、形态、姿态指的就是行为特征。 多态在Java中的技术基础 然而,在Java中,同一个类里面是不可能存在两个签名相同而实现不同的方法 的,否则的话会导致无法判断该执行哪个方法,因此在编译时就会报错。 所以,肯定是在两个类中才有可能存在两个签名相同而实现不同的方法,一个实现在这个类,另一个实现在另一个类。 而如果这两个类毫无瓜葛,那么肯定就与多态的本质(同一个类的同一个方法却具有不同的行为特征)自相矛盾了。 所以,这两个类肯定是有某种联系的。我们再想想,什么概念是能够让两个不同的类却又能称为同一个类的? 答案就是类的继承/扩展,就是现实中的“某东西是某类东西”的概念,就是“具体和抽象”的思想。

多态性实验报告

西安财经学院信息学院 《面向对象方法及程序设计》 实验报告 实验名称 多态性 实验室 519 实验日期 12.23 多态性 一、实验目的 1. 掌握C++语言源程序的编辑、编译、链接及运行步骤。 2. 掌握C++语言中类和对象的概念和应用。 3. 掌握多态性的概念和使用规则。 二、实验内容 1. 利用多态思想写C++程序实现2个长度为5的1维数组的加、减、乘、除运算。 2. 声明一个基类Currency ,其中包含有protected 类型的数据成员Japan 和Europe ,分别代表日元、欧元对美元的汇率。成员函数set ()用来设置两个数据成员的初值,定义print_exchange()为纯虚函数。声明Ja 和Eur 分别为Currency 的派生类,其成员函数print_exchange()分别用来计算日元和欧元兑换多少美元。按照惯例,汇率的表示方式:1美元对话日元116.30,1欧元兑换美元1。1634.日元和欧元的数量要求可以随机输入。(汇率固定) 三、实验环境 硬件环境:PC 一台 软件环境:WIN7操作系统、Microsoft visual c++ 2010 四、实验步骤 内容1: 姓名 学号 班级 年级 10级 指导教师 李翠

#include using namespace std; class T {public: T(){a=0;b=0;c=0;d=0;e=0;} T(int i,int j,int k,int l,int m) {a=i;b=j;c=k;d=l;e=m;} void get(int &i,int &j,int &k,int &l,int &m) {i=a;j=b;k=c;l=d;m=e;} T operator+(T obj); T operator-(T obj); T operator*(T obj); T operator/(T obj); private: int a,b,c,d,e; }; T T::operator+(T obj) {T tempobj; tempobj.a=a+obj.a; tempobj.b=b+obj.b; tempobj.c=c+obj.c; tempobj.d=d+obj.d; tempobj.e=e+obj.e; return tempobj; }

实验报告5 继承与多态

实验名称:继承与多态 一.实验目的: ((1)理解继承的含义,掌握派生类的定义方法和实现; (2)理解虚函数在类的继承层次中的作用,虚函数的引入对程序运行时的影响,能够对使用虚函数的简单程序写出程序结果。 (3)编写体现类的继承性(成员变量,成员方法,成员变量隐藏)的程序; (4)编写体现类多态性(成员方法重载,构造方法重载)的程序。 (5)理解接口和抽象类、抽象方法的定义和实现方法; (5)理解接口和抽象类的差别。 二.上机内容: (1)进行类的继承和基类构造方法的应用的练习; (2)进行类的多态性练习 (3)进行抽象类和接口的练习 (4)整理上机步骤,总结经验和体会。 (5)完成实验报告。 三.上机步骤: 类的继承和基类构造方法的应用 (1)编写一个学生和教师数据输入和显示程序,学生数据有编号、姓名、班级和成绩,教师数据有编号、姓名、职称和部门。要求将编号、姓名输入和显示设计成一个类person,并作为学生数据操作类student和教师类数据操作类teacher的基类。using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication2 { class person { public string bh;//编号 public string xm;//姓名 public person(string bh, string xm) { this.bh = bh; this.xm = xm; } public void show() { Console.WriteLine("姓名:{0}", xm); Console.WriteLine("编号:{0}", bh); }

实验报告二 Java类的封装、继承、多态

Java实验二类的封装、继承、多态 一.实验目的 1. 复习、理解OOP的三大特征——封装、继承和多态。 2. 学会使用Java编写简单的类。理解类的属性和方法。 3.掌握关键字private, protected, public的作用,掌握静态类,内部类的概念。 4. 掌握多态的概念。 二.实验内容 2.1程序要求 1.分别编写两个类Point2D,Point3D来表示二维空间和三维空间的点,使之满足下列要求: (1)Point2D有两个整型成员变量x, y (分别为二维空间的X,Y方向坐标),Point2D的构造方法要实现对其成员变量x, y的初始化。 (2)Point2D有一个void型成员方法offset(int a, int b),它可以实现Point2D的平移。 (3)Point3D是Point2D的直接子类,它有有三个整型成员变量x,y,z (分别为三维空间的X,Y,Z方向坐标),Point3D有两个构造方法: Point3D(int x,int y,int z)和Point3D(Point2D p,int z),两者均可 实现对Point3D的成员变量x, y,z的初始化。 (4)Point3D有一个void型成员方法offset(int a, int b,int c),该方法可以实现Point3D的平移。 (5)在Point3D中的主函数main()中实例化两个Point2D的对象p2d1,p2d2,打印出它们之间的距离,再实例化两个Point3D 的对象p3d1,p3d2,打印出他们之间的距离。 提示:https://www.doczj.com/doc/991400534.html,ng..Math.sqrt()方法 2.创建一个数组,随机生成Point2D或者Point3D的对象放于其中。最后依次调用数组中每个对象的“打印方法”,显示数组中存储的对象是什 么。 提示:https://www.doczj.com/doc/991400534.html,ng..Math.random()方法或者java.util.Random类2.2 设计工作 设计思路: 构造Point 2D类,私有成员x,y存放2D点位置坐标,构造函数传入坐标值。Offset()函数平移2D点,get_x(),get_y()分别返回x,y坐标。Print()函数打印

相关主题
文本预览
相关文档 最新文档