C 实验五 多态程序设计

合集下载

C++实验报告五--继承与多态性 -

C++实验报告五--继承与多态性 -

南昌航空大学实验报告2011年11月16号课程名称:面向对象程序设计B 实验名称:继承与多态性班级:姓名:同组人:无指导教师评定: 签名:一、实验目的根据现有类建立新类;学习构造基类和虚函数的用法。

二、实验内容应用VC++6.0的编辑环境构造一个类Jhtx及其派生类,该类主要实现关于几何图形的基本操作。

对于基类“几何图形”,有求面积、求体积的函数(纯虚函数),其派生类圆和矩形主要有初始化(构造函数),求面积,求周长操作,类圆的派生类圆球和圆柱有求表面积、体积操作。

试在主函数中分别定义圆、圆球、圆柱以及矩形的对象,并调用其成员函数实现其相应操作。

三、概要设计要实现的功能:求类圆和矩的面积、周长,求类圆的派生类圆球和圆柱表面积、体积;函数原型:double Ball::GetArea();double Ball::Getvolume();double Circle::GetArea();double Circle::Getperimeter();double Column::GetArea();double Column::Getvolume(); double Rectangle::GetArea(); double Rectangle::Getperimeter(); void Show();四、详细设计定义纯虚函数:virtual double Get_Girth()=0; virtual double Get_Volume()=0;virtual double Get_SurArea()=0; virtual double Get_Area()=0;求圆的面积的操作:double Circle::GetArea(){return M*radiums*radiums;}求圆周长的操作:double Circle::Getperimeter(){return 2*M*radiums;}求球表面积的操作:double Ball::GetArea(){return 4.0*M*radiums*radiums;}求球体积的操作:double Ball::Getvolume(){return 4/3*M*radiums*radiums*radiums;}求圆柱表面积的操作:double Column::GetArea(){return 2*M*(radiums*H+radiums*radiums);}求圆柱体积的操作:double Column::Getvolume(){return M*H*radiums*radiums;}求矩形面积的操作:double Rectangle::GetArea(){return Long*Wide;}求矩形周长的操作:double Rectangle::Getperimeter(){return 2*(Long+Wide);}五、程序调试在函数调试的过程中,出现了以下错误提示信息:1、 error C2470: “Circle”: 看起来像函数定义,但没有参数列表;跳过明显的函数体;原因为在语句“double Circle::GetArea()”将域作用符“::”错写为“:“;经调试无误后,运行的结果为:六、实验总结通过这次的试验,我明显的感觉到自己对这方面的知识掌握的还不够熟练,不能顺利地、流畅地运用这方面的知识,因为我没有在规定的时间内完成程序的设计,课后还是要多复习。

大学C 上机实验题目(版)

大学C 上机实验题目(版)

20XX年复习资料大学复习资料专业:班级:科目老师:日期:实验前言(建议认真阅读)一、上机实验的目的上机实验的目的是提高学生的分析问题、解决问题的能力和动手能力,通过实践环节理解C++语言的基本结构和程序设计方法。

通过亲手编程掌握C++语言编程的方法。

二、实验基本内容为了使学生在上机实验时目标明确,本实验指导书针对课程内容编写了五个实验。

学生在课内机时先完成指导书中标有“*”号的程序,理解所学的知识,在此基础上再编写其他应用程序。

指导书中的五个个实验如下:1. 函数与编译处理2. 指针与引用3. 类和对象4. 继承和派生类5. 多态性三、实验提交(特别提醒)1. 实验题目以附件形式提交,每个附件限一个源程序,附件以实验编号-题号-自己学号.cpp命名;如学号为20XXXX20XXXX20XXXX34的同学提交实验1的第5题,则附件命名方式为:1-5-20XXXX20XXXX20XXXX34.cpp,错误提交的将视为未提交。

2. 提交时间定为该次实验课的一周内,过期不再接收。

四、评分和作弊处理1. 要求提交实验题总数为6题(带“*”号),占期末总评成绩的20XX%;2. 存在抄袭和被抄袭的作业,无论抄袭与被抄袭者,本门课程平时成绩以零分记。

存在两次及两次以上抄袭和被抄袭者,本门课程以不及格记。

五、实验课要求(重点强调)1. 严禁QQ、MSN等即时软件工具聊天;2. 严紧接听手机、发送短信;3. 严紧玩游戏。

实验1 函数与编译处理一、实验目的1. 掌握函数声明、定义和使用的方法;2. 掌握形参与实参之间的对应关系;3. 掌握函数调用时,形参、实参之间的“值传递”和“引用传递”的区别;4. 掌握函数递归调用的方法;5. 掌握全局变量、局部变量、静态变量的使用方法;6. 掌握文件包含的使用方法。

二、实验内容1. 定义两个函数swap1和swap2,目的是实现两个整数的次序交换,其中swap1的参数是传递值参数,swap2的参数是引用参数,在程序中分别调用这两个函数,其输出结果如下所示:初始值:x=1,y=2调用swap1后的结果:x=1 y=2调用swap2后的结果:x=2 y=12. 编写一个函数,用来计算从键盘上输入的整数的阶乘。

多态编程实验报告

多态编程实验报告

一、实验目的1. 理解多态的概念和原理。

2. 掌握多态编程的基本方法。

3. 通过实验加深对多态编程的理解和应用。

二、实验环境1. 操作系统:Windows 102. 编程语言:Java3. 开发工具:Eclipse三、实验内容1. 多态的基本概念2. 多态的实现方法3. 多态的应用实例四、实验步骤1. 多态的基本概念多态是指同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。

在Java中,多态主要通过继承和重写方法来实现。

2. 多态的实现方法(1)继承在Java中,通过继承可以实现多态。

子类继承父类的方法和属性,可以重写父类的方法,使得子类的方法具有多态性。

(2)重写方法重写方法是指在子类中重写父类的方法,使得子类的方法具有多态性。

重写方法必须满足以下条件:- 方法名、返回类型、参数列表与父类方法相同;- 子类和父类之间必须存在继承关系。

(3)方法重载方法重载是指在同一个类中,存在多个同名方法,但参数列表不同。

方法重载可以实现多态,因为根据传入的参数列表,可以调用不同的方法。

3. 多态的应用实例下面通过一个简单的例子来展示多态的应用。

(1)创建一个动物类```javapublic class Animal {public void makeSound() {System.out.println("Animal makes a sound");}}```(2)创建两个子类,分别代表狗和猫```javapublic class Dog extends Animal {@Overridepublic void makeSound() {System.out.println("Dog barks");}}public class Cat extends Animal {@Overridepublic void makeSound() {System.out.println("Cat meows");}}```(3)创建一个方法,接受一个Animal类型的参数,并调用其makeSound方法```javapublic class Test {public static void main(String[] args) {Animal dog = new Dog();Animal cat = new Cat();makeSound(dog);makeSound(cat);}public static void makeSound(Animal animal) {animal.makeSound();}}```输出结果:```Dog barksCat meows```通过上面的例子,我们可以看到,尽管我们传递的是Animal类型的参数,但在调用makeSound方法时,会根据实际对象的类型调用相应的方法,实现了多态。

C++程序设计-实验5 多态

C++程序设计-实验5 多态

实验5 多态一、实验目的1.了解多态的概念。

2.了解虚函数的作用及使用方法。

3. 了解静态联编和动态联编的概念和方法。

4.掌握纯虚函数和抽象类的概念和方法。

二、实验准备1.复习多态的概念。

2.理解虚函数在多态性的作用以及纯虚函数和抽象类的用法。

三、实验内容1、某公司雇员(employee)包括经理(manager),技术人员(technician)销售员(saler)。

要求:以employ类为基类派生出manager,technician和saler。

employee类的属性包括姓名、职工号、工资级别,月薪(实发基本工资加业绩工资)。

操作包括月薪计算函数(pay()),该函数要求输入请假天数,扣去应扣工资后,得出实发基本工资。

technician类派生的属性有每小时附加酬金和当月工作时数,称业绩工资。

也包括同名的pay()函数,工资总额为基本工资加业绩工资。

saler类派生的属性有销售总额,总额的10%作为业绩工资。

工资总额为基本工资加业绩工资。

manager类派生的属性有固定奖金,固定奖金作为业绩工资。

工资总额为基本工资加业绩工资。

编程实现工资管理。

特别注意pay()的定义和调用方法:先用同名覆盖,再用运行时多态。

提示:给出基类的定义如下,请完成派生类的定义,并运用主函数测试运行时的多态。

#include<iostream>#include <string>using namespace std;static int Grades[]={500,600,750,1000,1400,2000,2800,4000};class employee{protected:string name;//姓名int ID;//职工号int grade;//工资级别double salary;//月double base_salary;//基本月薪double career_salary;//业绩工资public:employee(string="",int=0,int=0);virtual void pay();//月薪计算函数void show();double getsalary(){return salary;}double getbase_salary(){return base_salary;}double getcareer_salary(){return career_salary;}};2、在题1的基础上增加公司类(Company)公司包括若干名经理(manager),技术人员(technician)销售员(saler),数量由用户输入,公司还包括名称、地址、电话等常见属性,要求计算公司每月发出的工资总额。

《C#程序设计》上机实验报告(2)

《C#程序设计》上机实验报告(2)

《Visual C#程序设计》课程上机实验报告专业 _________________班级学号________________姓名 ______________指导教师 ______________学期_______________________南京工业大学测绘学院上机守则1.学生必须按指导教师安排的上机实验时间进入机房上机,未经许可,不得带外人进入机房。

2.进入机房时必须穿上鞋套,否则不得进入机房。

3.认真填写上机情况登记表,若遇计算机有异常情况,应先向老师汇报,不得擅自处理。

4.遵守计算机操作规程,即开机时先开显示器再开主机;结束时须关闭计算机,关机时先通过Windows功能关闭系统,主机电源指示灯灭了以后再关闭显示器。

5.禁止上机时玩游戏或从事与上机实验无关的内容。

6.保持机房安静和整洁,不得携带食品、饮料进入机房,严禁随地吐痰、乱扔垃圾或杂物,禁止吸烟、大声喧哗或闲聊。

7.爱护机房设施,严禁更改设置参数、添加口令或删除非本人文件。

对于导致计算机不能正常工作、影响他人上机者,将取消其上机资格。

8.严禁私自拆卸配件或将室内物品带出室外。

一经发现,除要求按价赔偿外,将通报批评和取消其上机资格,情节严重者交有关行政部门和司法部门处理。

上机实验注意事项1、上机实验前必须阅读有关教材及本上机实验指导书,初步了解上机实验内容要求与步骤。

2、严格遵守上机守则,严禁大声喧哗或玩游戏。

3、认真填上机实验记录,不可潦草,填写内容包括上机实验时间、地点、实验主要内容、步骤及完成成果说明等。

4、独立完成上机实验内容,实事求是,严禁抄袭他人作业。

若有弄虚作假现象,该课程成绩按不及格处理。

5、实验结束时,应向指导教师提交上机实验报告和有关成果,符合要求并经允许,方可关机和离开机房。

6、按时上机,不准迟到、早退、旷课,有事须预先履行请假手续,征得指导教师同意后方可离开。

上机实验一、熟悉Visual C#开发环境一、实验目的熟悉Visual C#集成开发环境,了解Visual C#控制台应用程序和窗体应用程序的编写过程。

C 实验多态性实验报告

C   实验多态性实验报告
3、 代码如下: #include<iostream.h>
class Point { public:
Point(int xx,int yy):x(xx),y(yy) {} void display()const; Point &operator++(); Point operator++(int); Point &operator--(); Point operator--(int); private:
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<<Double(myInt)<<endl;
学习使用虚函数实现动态多态性。而虚函数就是在基类中被关键字 virtual 说明,
实 并在派生类中重新定义的函数,且在派生类中重工业新定义时,函数原型,包括返回
类型、函数名、参数个数与参数类型的顺序,都必须与基类中的完全相同。此外,构 验
造函数不能是虚函数,但析构函数可以是虚函数。

函数的重载方法有一参数个数相同,但是类型不同;二参数个数不同;三 coust

验 Visual C++的编译环境下,独立完成实验要求的内容,独立完成编写、编译以及运行

的过程


验 安装了 Visual C++的 PC 机器

c语言中多态的定义及实现方式

c语言中多态的定义及实现方式

c语言中多态的定义及实现方式C语言是一种面向过程的编程语言,不支持面向对象编程的特性,如多态、继承和封装等。

但是,我们可以通过一些技巧来实现类似于面向对象编程中的多态性。

在本文中,我们将介绍C语言中多态的定义、实现方式以及举出一些例子。

1.多态的定义多态是面向对象编程中的一个重要概念。

它指的是不同对象对同一消息作出不同响应的能力。

在C语言中,我们可以通过函数指针、结构体和联合体等技术来实现多态性。

下面是多态的定义:多态是指在不同的对象上调用同一方法,而这些对象会根据所属类的不同产生不同的行为。

换句话说,多态是指一个接口,多种实现。

1.多态的实现方式在C语言中,我们可以通过以下方式来实现多态性:2.1 函数指针函数指针是指向函数的指针变量。

我们可以将不同的函数指针赋值给同一个函数指针变量,从而实现多态性。

例如:#include <stdio.h>void add(int a,int b){printf("%d + %d = %d\n", a, b, a + b);}void sub(int a,int b){printf("%d - %d = %d\n", a, b, a - b);}int main(){void(*p)(int,int);int a =10, b =5;p = add;p(a, b);p = sub;p(a, b);return0;}在上面的例子中,我们定义了两个函数add和sub,它们实现了两种不同的行为。

我们定义了一个函数指针p,它可以指向这两个函数。

在不同的情况下,我们将p 指向不同的函数,从而实现了多态性。

2.2 结构体结构体是一种自定义的数据类型,它可以包含多个不同类型的成员。

我们可以通过结构体来实现多态性。

例如:#include <stdio.h>typedef struct Animal{void(*speak)();} Animal;typedef struct Cat{Animal base;} Cat;typedef struct Dog{Animal base;} Dog;void cat_speak(){printf("Meow!\n");}void dog_speak(){printf("Woof!\n");}int main(){Cat cat;Dog dog;cat.base.speak = cat_speak;dog.base.speak = dog_speak;cat.base.speak();dog.base.speak();return0;}在上面的例子中,我们定义了一个Animal结构体和两个派生结构体Cat和Dog。

C++实验五多态性、继承和派生

C++实验五多态性、继承和派生

附录:实验源程序及实验结果(1) 定义一个人员类Person,包括姓名、编号、性别等数据成员和用于输入、输出的成员函数,在此基础上派生出学生类Student类(增加成绩)和教师类Teacher(增加教龄),并实现对学生和教师信息的输入和输出。

//Person.h#include<iostream> //编译预处理命令using namespace std; //使用命名空间std#ifndef PERSON_H#define PERSON_Hclass Person //声明类Person{protected:char name[18]; //姓名int num; //编号char sex[3]; //性别public:char na[18],se[3];int nu;Person(){} //构造函数void Imput() //输入信息{ cout<<"请输入姓名:";cin>>na;cout<<"请输入编号:";cin>>nu;cout<<"请输入性别:";cin>>se; }void Set() //设置信息{ strcpy(name,na);num=nu;strcpy(sex,se); }void Show() const; //显示信息函数定义声明};#endif//Student.h:#include<iostream> //编译预处理命令using namespace std; //使用命名空间std#ifndef STUDENT_H#define STUDENT_Hclass Student:public Person //声明类Student{protected:double record; //成绩public:double re;Student(){} //构造函数void Imput(){cout<<"请输入学生的信息:"<<endl;Person::Imput(); //调用基类成员函数Imput() cout<<"请输入成绩:";cin>>re;}void Set(){ Person::Set(); //调用基类成员函数Set() record=re;}void Show() const;};#endif//Teacher.h:#include<iostream> //编译预处理命令using namespace std; //使用命名空间std#ifndef TEACHER_H#define TEACHER_Hclass Teacher:public Person{protected:int age; //教龄public:int ag;Teacher(){} //构造函数void Imput(){cout<<endl<<"请输入教师的信息:"<<endl;Person::Imput(); //调用基类成员函数Imput() cout<<"请输入教龄:";cin>>ag;}void Set(){Person::Set(); //调用基类成员函数Set()age=ag;}void Show() const;};#endif//Person.cpp:#include"Person.h"void Person::Show() const //显示信息函数定义{cout<<"姓名:"<<name<<endl;cout<<"编号:"<<num<<endl;cout<<"性别:"<<sex<<endl;}//Student.cpp:#include"Person.h"#include"Student.h"void Student::Show() const{cout<<endl<<"学生的信息为:"<<endl;Person::Show(); //调用基类成员函数Show() cout<<"成绩:"<<record<<endl<<endl;}//Teacher.cpp:#include"Person.h"#include"Teacher.h"void Teacher::Show() const{cout<<"教师的信息为:"<<endl;Person::Show(); //调用基类成员函数Show() cout<<"教龄:"<<age<<endl<<endl;}//main.cpp:#include"Person.h"#include"Student.h"#include"Teacher.h"int main(){ Student s; //定义对象ss.Imput(); //输入学生信息s.Set(); //设置学生信息Teacher t; //定义对象tt.Imput(); //输入教师信息t.Set(); //设置教师信息s.Show(); //显示学生信息t.Show(); //显示教师信息system("PAUSE");return 0;}(2) 定义一个抽象类Shape,包含纯虚函数Area()(用来计算面积)和SetShape()(用来重设形状大小)。

c多态链表课程设计

c多态链表课程设计

c 多态链表课程设计一、教学目标本课程的教学目标是使学生掌握C语言中多态链表的相关知识,理解并能够运用多态链表解决实际问题。

具体目标如下:1.理解链表的基本概念和操作。

2.理解多态链表的定义和特点。

3.掌握多态链表的基本操作,包括创建、插入、删除等。

4.能够使用C语言实现多态链表。

5.能够运用多态链表解决实际问题。

情感态度价值观目标:1.培养学生的编程兴趣,提高学生的动手能力。

2.培养学生的问题解决能力和创新意识。

二、教学内容本课程的教学内容主要包括链表的基本概念和操作,多态链表的定义和特点,以及多态链表的基本操作。

具体安排如下:1.链表的基本概念和操作:介绍链表的定义、结构及基本操作,如创建、插入、删除等。

2.多态链表的定义和特点:介绍多态链表的概念、特点及其与普通链表的区别。

3.多态链表的基本操作:讲解多态链表的创建、插入、删除等操作的实现方法。

三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式进行教学。

具体方法如下:1.讲授法:通过讲解多态链表的基本概念、原理和操作方法,使学生掌握相关知识。

2.案例分析法:通过分析实际案例,使学生了解多态链表在实际问题中的应用。

3.实验法:安排实验课,让学生动手实践,加深对多态链表的理解。

四、教学资源为了支持本课程的教学,我们将准备以下教学资源:1.教材:选用权威、实用的教材,为学生提供系统的学习资料。

2.参考书:提供相关的参考书籍,丰富学生的知识储备。

3.多媒体资料:制作课件、视频等多媒体资料,提高课堂教学效果。

4.实验设备:准备计算机、网络等实验设备,为学生提供实践条件。

五、教学评估为了全面、客观地评估学生的学习成果,本课程将采用多种评估方式相结合的方法。

具体评估方式如下:1.平时表现:通过课堂表现、参与讨论和团队协作等方面,评估学生的学习态度和积极性。

2.作业:布置适量的作业,评估学生对知识点的掌握程度及运用能力。

3.考试:安排期末考试,对学生进行全面的知识点测试。

c课程设计含继承与多态

c课程设计含继承与多态

c课程设计含继承与多态一、教学目标本章节的教学目标旨在让学生掌握继承与多态的概念,理解其在编程中的应用,提高解决问题的能力。

具体目标如下:1.知识目标:a.理解继承的基本概念及其在面向对象编程中的作用。

b.掌握多态的原理,了解其在程序设计中的优势。

c.熟悉继承与多态在实际项目中的应用场景。

2.技能目标:a.能够使用编程语言实现简单的继承与多态。

b.具备分析问题、运用继承与多态解决问题的能力。

c.能对已有的代码进行修改,以优化程序结构,提高运行效率。

3.情感态度价值观目标:a.培养学生的团队协作精神,学会与他人分享和交流。

b.激发学生对编程的兴趣,提高自主学习的积极性。

c.培养学生勇于挑战、解决问题的自信心。

二、教学内容本章节的教学内容主要包括继承与多态的概念、原理及其在编程中的应用。

具体安排如下:1.继承的基本概念及其在面向对象编程中的作用。

2.多态的原理,以及如何在程序设计中利用多态。

3.继承与多态在实际项目中的应用场景,以及如何运用它们解决问题。

4.编程实践:使用编程语言实现继承与多态。

三、教学方法为了提高教学效果,本章节将采用多种教学方法,如讲授法、讨论法、案例分析法和实验法等。

具体方法如下:1.讲授法:通过讲解继承与多态的概念、原理和应用,使学生掌握基本知识。

2.讨论法:学生进行小组讨论,分享对继承与多态的理解,互相学习,共同进步。

3.案例分析法:分析实际项目中的继承与多态应用案例,让学生学会在实际问题中运用所学知识。

4.实验法:让学生通过编写代码,亲身体验继承与多态的实现,提高动手能力。

四、教学资源为了支持本章节的教学,我们将准备以下教学资源:1.教材:选用权威、实用的编程教材,为学生提供系统、全面的知识体系。

2.参考书:提供相关领域的参考书籍,丰富学生的知识储备。

3.多媒体资料:制作精美的PPT,直观地展示继承与多态的概念和原理。

4.实验设备:提供充足的计算机设备,确保学生能够顺利进行实验操作。

C#实验5多态抽象类

C#实验5多态抽象类

实验5 多态抽象类实验目的:掌握继承的定义、特征以及语法格式明确多态的概念,理解编译时多态和运行时多态的区别以及定义方法掌握虚方法重载和隐藏基类方法的区别熟练使用抽象类和抽象方法进行面向对象编程实验要求:理解和掌握在编程中去实现继承理解和掌握通过把子类实例的地址传给基类实例,然后通过基类实例去调用虚方法,这一种方式真正体现出的多态。

理解和掌握抽象方法在编程过程中的使用。

通过调试,能够使得程序正确运行,并输出结果。

实验内容:1.编写代码,定义一个基类MyClass,其中包含虚拟方法GetString().这个方法应返回存储在受保护字段myString中的字符串,该字段可以通过只写公共属性ContainedString来初始化。

(初始化请通过控制台由用户来输入)2.从类MyClass中派生一个类MyDerivedClass.重写GetString()方法,使用该方法的基类执行代码从基类中返回一个字符串,但在返回的字符串中添加文本”output from derived class”.using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace _2{class Program{static void Main(string[] args){MyDerivedClass tt = new MyDerivedClass();MyClass mm = new MyClass();tt.ContainedString = Console.ReadLine();mm = tt;Console.WriteLine();Console.WriteLine(mm.GetString());Console.ReadKey();}}class MyClass{protected string myString;public virtual string GetString(){ return myString; }public string ContainedString{set { myString = value; }}}class MyDerivedClass : MyClass{public override string GetString(){return base.GetString() + "output from derived class"; }}}using System;using System.Collections.Generic;using System.Text;namespace di1{class Program{static void Main(string[] args){MyDerivedClass d = new MyDerivedClass();MyClass c = d;c.ContainedString = Console.ReadLine();Console.WriteLine("基ù类え?返う?回?的?字?符?串?是?" + c.GetString());Console.ReadLine();}}class MyClass{protected string myString;public string ContainedString{set{myString = value;}}public virtual string GetString(){return myString;}}class MyDerivedClass : MyClass{public override string GetString(){return base.GetString() + " (output from derived class)";}}}3.利用多态性计算圆和三角形的面积以及周长。

c运算符重载和多态性实验报告

c运算符重载和多态性实验报告

实验5 运算符重载和多态性一、实验目的1.掌握用成员函数重载运算符的方法2.掌握用友元函数重载运算符的方法3.理解并掌握利用虚函数实现动态多态性和编写通用程序的方法4.掌握纯虚函数和抽象类的使用二、实验内容1.复数类加减法乘除运算 (用成员函数定义运算符重载)。

复数类的定义:class complex //复数类声明{ public: //外部接口complex(double r=0.0,double i=0.0) //构造函数{real=r,imag=i;}complex operator +(complex c2); //运算符"+"重载成员函数complex operator - (complex c2); //运算符"-"重载成员函数complex operator *(complex ); //运算符"*"重载成员函数complex operator /(complex); //运算符"/"重载成员函数complex operator =(complex c2); //运算符"="重载成员函数void display(); //输出复数private: //私有数据成员double real; //复数实部double imag; //复数虚部};实验代码:#include <iostream>using namespace std;class Complex{public:Complex(){real=0;imag=0;}Complex(double r,double i){real=r;imag=i;}Complex operator+(Complex &c2); Complex operator-(Complex &c2); Complex operator*(Complex &c2); Complex operator/(Complex &c2); void display();private:double real; double imag;};Complex Complex::operator+(Complex &c2) {Complex c;c.real=real+c2.real;c.imag=imag+c2.imag; return c;}Complex Complex::operator-(Complex &c2) {Complex c;c.real=real-c2.real;c.imag=imag-c2.imag;return c;}Complex Complex::operator*(Complex &c2) {Complex c;c.real=real*c2.real-imag*c2.imag;c.imag=imag*c2.real+real*c2.imag; return c;}Complex Complex::operator/(Complex &c2){Complex c;c.real=(real*c2.real+imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag );c.imag=(imag*c2.real-real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);return c;}void Complex::display(){cout<<"("<<real<<","<<imag<<"i)"<<endl;}int main(){Complex c1(4,6),c2(3,7),c3;cout<<"c1=";c1.display();cout<<"c2=";c2.display();int i,j=1;while(j){cout<<"\n";cout<<"\t\t"<<"1.复数之和\n"; cout<<"\t\t"<<"2.复数之差\n"; cout<<"\t\t"<<"3.复数之积\n"; cout<<"\t\t"<<"4.复数之商\n"; cout<<"\t\t"<<"0.退出\n"; cout<<"请选择(0--4)"; cin>>i;switch(i){case 1: c3=c1+c2;cout<<"c1+c2=";c3.display(); break;case 2: c3=c1-c2;cout<<"c1-c2=";c3.display();break;case 3: c3=c1*c2;cout<<"c1*c2=";c3.display();break;case 4: c3=c1/c2;cout<<"c1/c2=";c3.display();break;case 0: j=0;break;}}}测试结果:2.复数类比较运算 (用友元函数定义运算重载)。

C++实验指导5

C++实验指导5

实验五虚函数与多态性
院(系):信息科学与技术学院课程名称:面向对象程序设计教师签名:
实验目的和要求
1理解编译时的多态性和运行时的多态性。

2掌握虚函数的定义与使用方法。

实验内容
1 定义一个类Animal,该类中可以存放动物的名字,并有一个Identify函数用于显示动物的种类(即”Animal”)。

2 定义两个类Cat和Dog,都继承于Animal,并重写Identify函数,不但要显示动物的种类,还要显示动物的名字。

3 定义Tiger类,继承于Cat,重写Identify函数,显示动物的种类和名字。

4 定义一个动物园类Zoo,管理动物,根据下面的提示编写动物类及相关函数。

注意指针虚函数的用法。

class Zoo{
public:
Zoo(unsigned int max); //构造函数,max为最多能圈养的动物数
~Zoo() { delete residents;} //析构函数
unsigned int Accept(Animal *d);//接收动物
void ListAnimals(); //显示动物园所有的动物
private:
unsigned int maxanimals; //动物园最多能圈养的动物数
unsigned int numanimals; //动物园当前圈养的动物数
Animal **residents; //指向动物园圈养的动物对象的指针数组};。

c++ 实验报告 多态性

c++ 实验报告 多态性

昆明理工大学信息工程与自动化学院学生实验报告(201 —201 学年第二学期)课程名称:C++程序设计开课实验室:年月日一、实验目的学习使用虚函数实现动态多态性。

二、实验任务定义一个车(vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。

观察虚函数的作用。

三、实验步骤编写程序定义一个车(vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。

在main()函数中定义vehicle、bicycle、motorcar、motorcycle的对象,调用其Run()、Stop()函数,观察其执行情况。

再分别用vehicle类型的指针来调用这几个对象的成员函数,看看能否成功;把Run、Stop定义为虚函数,再试试看。

程序代码:/******vehicle.cpp******/#include<iostream>using namespace std;class Vehicle{public:virtual run(){cout<<"Vehicle is running!"<<endl;}virtual stop(){cout<<"Vehicle is stopped!"<<endl;}};class Bicycle:virtual public Vehicle{public:run(){cout<<"Bicycle is running!"<<endl;}stop(){cout<<"Bicycle is stopped!"<<endl;}};class Motorcar:virtual public Vehicle{public:run(){cout<<"Motorcar is running!"<<endl;}stop(){cout<<"Motorcar is stopped!"<<endl;}};class Motorcycle:virtual public Bicycle,public Motorcar{public:run(){cout<<"Motorcycle is running!"<<endl;}stop(){cout<<"Motorcycle is stopped!"<<endl;}};void main(){/*Vehicle a;a.run();a.stop();Bicycle b;b.run();b.stop();Motorcar c;c.run();c.stop();Motorcycle d;d.run();d.stop();*/Vehicle *p;Vehicle a;p=&a;p->run();p->stop();Bicycle b;p=&b;p->run();p->stop();Motorcar c;p=&c;p->run();p->stop();Motorcycle d;p=&d;p->run();p->stop();}运行结果截图:1.在main()函数中定义vehicle、bicycle、motorcar、motorcycle的对象,调用其Run()、Stop()函数,其执行情况:2.分别用vehicle类型的指针来调用这几个对象的成员函数, 其执行情况:3.把Run、Stop定义为虚函数,其执行情况:。

C#有关多态的实验报告

C#有关多态的实验报告

课程名称面向对象的程序设计班级xx 实验日期2012年3月21日姓名xx 学号xx 实验成绩实验名称创建抽象类并实现多态实验目的及要求1、掌握简单的C#程序结构。

2、熟悉Visual Studio 2010集成开发环境。

3、能够在Visual Studio 2010集成开发环境下创建简单的控制台和windows应用程序。

4、掌握C#简单数据类型。

5、掌握C#错误和异常处理。

6、掌握C#程序中类的声明和引用。

7、掌握类的字段、属性、方法的声明及其引用。

8、掌握类的继承。

实验环境Visual Studio 2010集成开发环境实验内容1.创建一个抽象的Shape类;2.创建Rectangle 、Triangle两个类并同时继承于Shape;3.在Rectangle类下派生一个Squart类;4.通过Shape基类分别实现Rectangle、Squart、 Triangle、面积的求解;算法描述及实验步骤太原工业学院计算机工程系实验报告调试过程及实验结果实验结果:1002006调试过程出现的问题:未在英文状态下进行编辑;类名称的首先字母未大写;总结通过对此实验的学习,我对多态方法有了更深的认识和了解。

附录using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace my_program{abstract class Shape{public abstract double Area{get;}}using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace my_program{class Rectangle:Shape{ public int Height;public int Width;public override double Area{ get { return Height*Width; } }}}using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace my_program{class Squart :Rectangle{ public int Side;public override double Area{ get{ return Side*Side;}}}}using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace my_program{class Triangle:Shape{ public int side1 = 3;public int side2 = 4;public override double Area{ get{return 0.5 * side1 * side2;}}}}using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace my_program{class Program{static void Main(string[] args){Squart mysquart = new Squart();mysquart.Side = 10;Shape myshape = mysquart;Print(myshape );Rectangle myrectangle = new Rectangle(); myrectangle.Height = 20;myrectangle.Width = 10;myshape = myrectangle;Print(myshape );Triangle mytriangle = new Triangle();mytriangle.side1 = 3;mytriangle.side2 =4;myshape = mytriangle;Print(myshape); }static void Print(Shape a){ Console.WriteLine(a.Area);}}}。

c课程设计有多态

c课程设计有多态

c 课程设计有多态一、教学目标本章节的教学目标包括以下三个方面:1.知识目标:使学生掌握多态的概念、特点和应用,理解其在面向对象编程中的重要性。

2.技能目标:培养学生运用多态解决问题的能力,学会运用多态编写代码,提高代码的可读性和可维护性。

3.情感态度价值观目标:激发学生对多态的兴趣,培养学生的创新意识,引导学生认识到多态在实际编程中的应用价值。

二、教学内容本章节的教学内容主要包括以下几个部分:1.多态的概念:介绍多态的定义、特点和作用,使学生理解多态的基本概念。

2.多态的实现:讲解多态的实现机制,包括继承、接口和强制类型转换等,让学生学会如何实现多态。

3.多态的应用:通过实例分析,展示多态在实际编程中的应用场景,培养学生运用多态解决问题的能力。

4.多态的注意事项:讲解多态在使用过程中需要注意的问题,如类型转换、方法覆盖等,提高学生的编程技巧。

三、教学方法为了达到本章节的教学目标,将采用以下几种教学方法:1.讲授法:通过讲解多态的概念、特点和实现方法,使学生掌握多态的基本知识。

2.案例分析法:分析实际编程中的多态应用案例,让学生学会如何将多态应用于实际问题。

3.实验法:安排课堂实验,让学生亲自动手编写代码,验证多态的实现和应用,提高学生的实践能力。

4.讨论法:学生进行小组讨论,分享学习心得和编程经验,培养学生团队合作精神。

四、教学资源为了支持本章节的教学,将准备以下教学资源:1.教材:选用权威、实用的编程教材,为学生提供系统的学习资料。

2.参考书:提供相关的编程参考书籍,丰富学生的知识体系。

3.多媒体资料:制作精美的PPT课件,生动展示多态的概念和应用。

4.实验设备:确保每个学生都能接触到计算机,进行课堂实验和自主练习。

5.在线编程平台:为学生提供在线编程环境,方便学生随时进行代码编写和调试。

五、教学评估本章节的教学评估主要包括以下几个方面:1.平时表现:评估学生在课堂上的参与程度、提问回答等情况,了解学生的学习态度和积极性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C++实验五多态程序设计
福建工程学院
实验报告
面向对象程序设计(C++)
专业电子信息工程班级1303 座号姓名日期20XX-11-26
实验五多态程序设计
一、实验目的:
理解运算符重载的概念和实质,掌握运算符重载函数的定义方法,掌握运算符重载为类的成员函数的方法。

掌握虚函数的定义方法及其在实现多态性中的应用,理解静态连编和动态链编的区别。

二、实验时间:20XX-11-26 三、实验地点:-- 四、实验内容:
1.已知基类:
class Base{
public : virtual void iam {cout using namespace std; class Base { public: };
class Base1 : public Base { public: };
class Base2 : public Base { public: };
int main {
Base b; Base1 b1; void iam { }
coutiam ; return 0;
2. 编写程序,写一个Shape抽象类,该类有求表面积和体积两个纯虚函数;该类派生出圆柱体Cylinder,球体(Sphere),正方体(Cube),计算圆柱体,球体,正方体的表面积和体积。

要求用抽象类实现。

#include using namespace std; const float PI = ; class Shape { public:
virtual double get_surface =0; virtual double get_volume =0; };
class Cylinder : public Shape { public:
Cylinder(double h,double r) : height(h),radius(r) { }
double get_surface { }
double get_volume { } private:
double height,radius; };
class Sphere : public Shape { public:
Sphere(double r) : radius(r) { }
double get_surface { }
double get_volume { } private:
return /*PI*radius*radius*radius; return 4*PI*radius*radius;
cout using namespace std; const float PI = ; class Shape { public:
virtual double get_surface =0; virtual double get_volume =0; };
class Cylinder : public Shape { public:
Cylinder(double h,double r) : height(h),radius(r) { }
cout using namespace std; class Base { public: };
class Base1 : public Base { public: };
class Base2 : public Base { public: };
int main {
Base b; Base1 b1; void iam { }
coutiam ; return 0;
2. 编写程序,写一个Shape抽象类,该类有求表面积和体积两个纯虚函数;该类派生出圆柱体Cylinder,球体(Sphere),正方体(Cube),计算圆柱体,球体,正方体的表面积和体积。

要求用抽象类实现。

#include using namespace std; const float PI = ; class Shape { public:
virtual double get_surface =0; virtual double get_volume =0; };
class Cylinder : public Shape { public:
Cylinder(double h,double r) : height(h),radius(r) { }
double get_surface { }
double get_volume { } private:
double height,radius; };
class Sphere : public Shape { public:
Sphere(double r) : radius(r) { }
double get_surface { }
double get_volume { } private:
return /*PI*radius*radius*radius; return 4*PI*radius*radius;
cout using namespace std; const float PI = ; class Shape { public:
virtual double get_surface =0; virtual double get_volume =0; };
class Cylinder : public Shape { public:
Cylinder(double h,double r) : height(h),radius(r) { }
cout<<\圆柱的底面半径为:\<<radius<<\圆柱的高为:\<<height<<endl;
double get_surface { }
double get_volume { } private:
double height,radius; };
class Sphere : public Shape { public:
Sphere(double r) : radius(r) { }
double get_surface { }
double get_volume { } private:
double radius; };
class Cube : public Shape { public:
Cube(double l) : length(l) { }
double get_surface { }
double get_volume { }
Cube operator+(const Cube &c) { } private:
double length; };
void display(Cube cc) {
cout<<\相加后正方体的表面积为:\<<_surface()<<endl; cout<<\相加后正方体的体积为:\<<_volume()<<endl;
length += ; return Cube(length);
return length*length*length; return 6*length*length;
cout<<\正方体的边长为:\<<length<<endl; return /*PI*radius*radius*radius; return 4*PI*radius*radius;
cout<<\球的半径为:\<<radius<<endl; return
PI*radius*radius*height;
return 2*PI*radius*radius + 2*PI*radius*height;。

相关文档
最新文档