.NET继承与多态实验报告
实验三 继承和多态

实验三继承和多态一、实验目的1.熟练掌握封装性,多态性的概念。
2.熟练掌握抽象类abstract的概念。
3.熟练掌握接口interface的概念。
4.熟练包package的概念以及编译运行的方法。
二、实验内容1.编写一个Java Application程序,该程序有个点Point类,它包含横坐标x和纵坐标y 两个属性,再给Point定义两个构造方法和一个打印点坐标的方法Show。
定义一个圆Circle 类,它继承Point类(它是一个点,圆心(Center)),除此之外,还有属性半径Radius,再给圆定义2个构造方法、一个打印圆的面积的方法PrintArea和一个打印圆中心、半径的方法Show(其中显示圆心可以用super.Show()的方式)。
package实验三;public class Point {double x,y;public Point(){x=0;y=0;}public Point(double x,double y){this.x=x;this.y=y;}public String Show(){return"横坐标为:"+this.x+",纵坐标为:"+this.y;}/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubPoint a=new Point(3.0,4.0);System.out.println(a.Show());}}package实验三;public class Circle extends Point {double Radius;public Circle(){super(0,0);Radius=0;}public Circle(double x,double y,double z){super(x,y);Radius=z;}public String Show(){System.out.println("圆心的"+super.Show()+"半径为:"+Radius);return"圆心的"+super.Show()+"半径为:"+Radius;}public String PrintArea(){System.out.println("圆的面积为:"+Math.PI*Radius*Radius);return"圆的面积为:"+Math.PI*Radius*Radius;}/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubCircle a=new Circle(3,4,5);a.Show();a.PrintArea();}}2.编写一测试类,对其进行编译、运行。
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()”将域作用符“::”错写为“:“;经调试无误后,运行的结果为:六、实验总结通过这次的试验,我明显的感觉到自己对这方面的知识掌握的还不够熟练,不能顺利地、流畅地运用这方面的知识,因为我没有在规定的时间内完成程序的设计,课后还是要多复习。
实验报告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);}}class student : person{public string bj;//班级public int cj;//成绩public student(string sbh, string sxm, string sbj, int scj): base(sbh, sxm){bh = sbh;xm = sxm;bj = sbj;cj = scj;}public new void show(){Console.WriteLine("***student***");Console.WriteLine("姓名:{0}", xm);Console.WriteLine("编号:{0}", bh);Console.WriteLine("班级:{0}", bj);Console.WriteLine("成绩:{0}", cj);}}class teacher : person{public string zc;//职称public string bm;//部门public teacher(string tbh, string txm, string tzc, string tbm) : base(tbh, txm){bh = tbh;xm = txm;zc = tzc;bm = tbm;}public new void show(){Console.WriteLine("***teacher***");Console.WriteLine("姓名:{0}", xm);Console.WriteLine("编号:{0}", bh);Console.WriteLine("职称:{0}", zc);Console.WriteLine("部门:{0}", bm);}}class program{static void Main(string[] args){student st = new student("050013", "张三", "信管091", 91);st.show();teacher te = new teacher("046950", "范仲淹", "特级教师", "教务处"); te.show();Console.ReadLine();}}}运行结果:(2)将以上程序尝试改成通过调用基类构造方法的方式来初始化编号和姓名,并总结调用基类构造方法的应用要点。
实习报告 .net实习报告2篇

实习报告 .net实习报告2篇实习报告 .net实习报告。
尊敬的领导:
我是一名计算机专业的大学生,在过去的一个月里,我有幸在贵公司进行了为期四周的.NET实习。
通过这次实习,我收获颇丰,深刻体会到了.NET技术在实际项目中的应用和重要性。
在实习期间,我主要参与了公司正在进行的一个.NET项目的开发工作。
在项目中,我学习了C#编程语言的基础知识,并通过实际操作掌握了框架的运用。
在与项目组成员的合作中,我学会了使用Visual Studio等开发工具,熟悉了团队协作的流程和规范。
同时,我也在项目中负责了一些小模块的开发和测试工作,通过这些实际操作,我对.NET技术有了更深入的理解和掌握。
在实习期间,我还有幸参加了公司组织的一些培训和讲座,对.NET技术的发展趋势和应用场景有了更清晰的认识。
同时,我也和一些资深的.NET工程师进行了交流和学习,他们的经验和见解让我受益匪浅。
通过这次实习,我不仅学到了很多专业知识,还提升了自己的实际操作能力和团队协作能力。
在未来的学习和工作中,我将继续努力,不断提升自己,为公司的发展贡献自己的力量。
最后,再次感谢公司给予我这次宝贵的实习机会,我会珍惜并利用好这次学习的机会,希望能有机会再次与贵公司合作。
此致。
敬礼。
XXX。
日期:XXXX年XX月XX日。
实验报告三

攀枝花学院实验报告实验课程:Visual C#.NET程序设计教程实验项目:上机实验5 实验日期:系:数计学院成绩:一、实验目的1、区分静态类与非静态类,掌握静态字段、静态方法和静态构造函数的定义方法。
2、理解类的继承性与多态性,掌握其应用方法。
3、理解抽象类、接口的概念,掌握抽象类与接口的定义及使用方法。
4、理解分部类和命名空间的概念,掌握分部类和命名空间的使用方法。
二、实验要求1.熟悉Visual 的基本操作方法。
2.认真阅读本章相关内容,尤其是案例。
3.实验前进行程序设计,完成源程序的编写任务。
4.反复操作,直到不需要参考教材、能熟练操作为止。
三、实验步骤1、设计一个Windows应用程序,在该程序中首先构造一个学生基本类,再分别构造小学生、中学生、大学生等派生类,当输入相关数据,单击不同的按钮(小学生、中学生、大学生)将分别创建不同的学生对象,并输入当前的学生总人数、该学生的姓名、学生类型和平均成绩。
具体要求如下:(1)每个学生都有的字段为:姓名、年龄。
(2)小学生的字段还有语文、数学,用来表示这两科的成绩。
(3)中学生在此基础上多了英语成绩。
(4)大学生只有必修课和选修课两项成绩。
(5)学生类具有方法来统计自己的总成绩,并输出。
(6)通过静态成员自动记录学生总人数。
(7)成员初始化能通过构造函数完成。
源程序如下:using System;using ;using ;using ;using ;using ;using Test3_1{public partial class Form1 : Form{public Form1(){InitializeComponent();}public abstract class Student{protected string name;protected int age;protected static int number;public Student(string name, int age){= name;= age;number++;}public string Name { get { return name; } }public virtual string type{get { return"学生"; }}public abstract double total();public abstract double Average();public string getInto(){string result = ("总人数:{0},姓名:{1},{2},{3}岁", number, Name, type, age);if (type == "小学生")result += (",平均成绩为{0:N2}:\n", total() / 2);else if(type=="中学生")result += (",平均成绩为{0:N2}:\n", total() / 3);elseresult += (",总学分为{0:N2}:\n", total());return result;}}public class Pupil : Student{protected double chinese;protected double math;public Pupil(string name, int age, double chinese, double math): base(name, age){= chinese;= math;}public override string type{get{return"小学生";}}public override double total(){return chinese + math;}}public class Middle : Student{protected double chinese;protected double math;protected double english;public Middle(string name, int age, double chinese, double math,double english) : base(name, age){= chinese;= math;= english;}public override string type{get{return"中学生";}}public override double total(){return chinese + math+english;}}public class University : Student{protected double majors;protected double elective;public University(string name, int age, double majors, double elective): base(name, age){= majors ;= elective;}public override string type{get{return"大学生";}}public override double total(){return majors+elective;}}private void btpupil_Click(object sender, EventArgs e){int age = ;double chinese = ;double math = ;Pupil p = new Pupil, age, chinese, math);+= ();}private void btMiddle_Click(object sender, EventArgs e){int age = ;double chinese = ;double math = ;double english = ;Middle p = new Middle, age, chinese, math,english);+= ();}private void btUniversity_Click(object sender, EventArgs e) {int age = ;double chinese = ;double math = ;University u = new University, age, chinese, math);+= ();}}}运行结果如图所示:2、完善上机实验4-3设计的银行帐户管理系统,增加一个VIP账户的管理。
实验三 继承和多态

实验三继承和多态一、实验目的1.熟练掌握封装性,多态性的概念。
2.熟练掌握抽象类abstract的概念。
3.熟练掌握接口interface的概念。
4.熟练包package的概念以及编译运行的方法。
二、实验内容1.编写一个Java Application程序,该程序有个点Point类,它包含横坐标x和纵坐标y 两个属性,再给Point定义两个构造方法和一个打印点坐标的方法Show。
定义一个圆Circle 类,它继承Point类(它是一个点,圆心(Center)),除此之外,还有属性半径Radius,再给圆定义2个构造方法、一个打印圆的面积的方法PrintArea和一个打印圆中心、半径的方法Show(其中显示圆心可以用super.Show()的方式)。
编写一测试类,对其进行编译、运行。
结果如何?如去掉语句“super.Show();”,再看看运行结果。
理解程序中重载和多态性的运用。
2.完成以下步骤要求:(1)设计一个表示二维平面上点的类Point,包含有表示坐标位置的protected类型的成员变量x和y,获取和设置x和y值的public方法。
(2)设计一个表示二维平面上圆的类Circle,它继承自类Point,还包含有表示圆半径的protected类型的成员变量r,获取和设置r值的public方法、计算圆面积的public 方法。
(3)设计一个表示圆柱体的类Cylinder,它继承自类Circle,还包含有表示圆柱体高的protected类型的成员变量h、获取和设置h值的public方法、计算圆柱体体积的public 方法。
(4)建立若干个Cylinder对象,输出其轴心位置坐标、半径、高及其体积的值。
3.学校中有老师和学生两类人,而在职研究生既是老师又是学生,对学生的管理和对教师的管理在他们身上都有体现。
(1)设计两个信息管理接口StudentInterface和TeacherInterfaceo其中,StudentInterface接口包括setFee方法和getFee方法,分别用于设置和获取学生的学费;TeacherInterface接口包括setPay方法和getPay方法,分别用于设置和获取教师的工资。
继承与多态性 实验六实验报告(面向对象程序设计)

大学实验报告年月日课程名称:面向对象程序设计实验名称:继承与多态性班级:姓名:同组人:无指导教师评定:签名:实验六运算符重载1、实验目的理解运算符重载(非成员形式和成员形式)、学习重载几类运算符(++,=,!=,+,-,==等)。
2、实验内容应用VC++6.0的构建一个复数类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);//friend complex operator++(complex &c,int);complex operator++();complex operator++(int);complex operator=(complex &c);void disp();private:double real;double imag;};。
类的继承与多态性实验报告

类的继承与多态性实验报告类的继承与多态性实验报告目录1.介绍2.什么是多态3.多态在Java中的技术基础4.示例5.多态的好处6.总结介绍之前的文章介绍过类的封装性和继承性,现在是时候聊聊面向对象编程的三大特性之一的最后一个类的多态性了。
多态的基础是继承(包括了接口的实现)和方法的覆盖。
什么是多态多态对应的英文单词是polymorphism ,百度翻译给出的翻译是:n.多型现象,多态性;多机组合形式;按字面意思就是多种状态、形态、姿态等等,潜台词就是某个东西具有多种状态、形态、姿态等等。
那是什么东西呢?在面向对象的编程语言里面(当然就包括Java 了)就是某个方法或函数。
那方法的多种状态、形态、姿态有是个什么意思呢?这其实是指同一个方法具有多个方法体,就是方法的实现。
而方法的相同与否是由方法签名决定的。
所以,多态其实本质上是指同一个类的同一个方法却具有不同的行为特征。
状态、形态、姿态指的就是行为特征。
多态在Java中的技术基础然而,在Java中,同一个类里面是不可能存在两个签名相同而实现不同的方法的,否则的话会导致无法判断该执行哪个方法,因此在编译时就会报错。
所以,肯定是在两个类中才有可能存在两个签名相同而实现不同的方法,一个实现在这个类,另一个实现在另一个类。
而如果这两个类毫无瓜葛,那么肯定就与多态的本质(同一个类的同一个方法却具有不同的行为特征)自相矛盾了。
所以,这两个类肯定是有某种联系的。
我们再想想,什么概念是能够让两个不同的类却又能称为同一个类的? 答案就是类的继承/扩展,就是现实中的“某东西是某类东西”的概念,就是“具体和抽象”的思想。
比如,男人是人,女人也是人,男人类和女人类就借助于人类建立了某种联系,而人类具有的某个行为在男人类和女人类中是有着不同体现的,比如人类的吃饭这个行为,男人类的体现是狼吞虎咽,女人类的体现是细嚼慢咽。
例子不是很恰当,但意思就是这么个意思。
所以说,Java里面多态的技术基础就是方法的覆盖,当然,在Java中覆盖不仅仅发生在类的继承/扩展上,还可能发生在接口的实现上。
实验报告3 继承与多态

测试数据:
、时间:::
、时间:::
程序代码:
<>
{
:
;
:
(){}
( ){
;
;
;
}
(){ ;}
(){ ;}
(){ ;}
( );
( );
(){
<<<<":"<<<<":"<<<<;
内容.继承
<>
{
:
;
;
:
( , );
( );
( );
};
( , )
{
>;
>;
}
( )
{
;
}
( )
{
;
}
:
{
:
; ; ;
:
( , , );
( );
初始化基类
{
;
}
( )
{
;
}
( )
{
(, , );
<<""<<( )<<;
<<""<<( )<<;
<<""<<( )<<;
<>
{ ;
:
( );
( );
( );
( );
};
:: ( ) { ; ;}
:: ( )
继承与多态实验报告心得

继承与多态实验报告心得
在进行继承与多态的实验过程中,我深刻理解了这两个面向对象编程的重要概念,并且在实践中体会到了它们的实际应用。
首先,继承是面向对象编程的一个基本特性,它允许创建新的类从已有的类中继承属性和方法。
在实验中,我创建了一个基类,然后通过继承来创建了多个子类。
这样,我可以在基类中定义一些通用的属性和方法,然后在子类中进行扩展或覆盖,实现了代码的重用和灵活性的提高。
通过继承,我可以很方便地创建出一个对象的不同类型的实例,从而满足不同的需求。
其次,多态是继承的一个重要特性,它允许使用基类类型的引用来引用一个子类的对象。
在实验中,我通过多态实现了一个统一的接口,使得可以以一种统一的方式处理不同类型的对象。
这样,我可以将具有相同行为的对象进行统一管理,提高了代码的灵活性和可扩展性。
在实验中,我还学会了使用抽象类和接口来实现多态。
抽象类提供了一种定义通用行为的方式,而接口则定义了一组方法的规范。
通过使用抽象类和接口,我可以定义一些通用的方法和属性,然后在具体的子类中进行实现和具体化。
这种方式可以有效地提高代码的可读性和可维护性。
继承与多态的实验为我提供了一个很好的学习机会,让我更深入地理解了面向对象编程的原理和思想。
通过实际操作,我不仅加深了对这两个概念的理解,还提升了自己的编程能力。
我相信,在以后的学习和工作中,我会继续运用这些知识,开发出更加高效和灵活的程序。
实验6 类的继承与多态

安徽机电职业技术学院实验报告一、实验目的1、进一步掌握类的定义与使用;2、掌握类的继承,以及访问属性public, private和protected的用法;3、了解类的多态性;4、掌握使用类来构造应用程序。
二、实验内容使用Visual Studio .NET 2005,在Point-Circle-Cylinder示例程序中,添加一个圆锥体类(Cone),该类派生自圆类(Circle),并具有以下属性:高度(Height),以及以下方法:Area (求圆锥体的表面积)、Volumn(求圆锥体的体积)三、实验步骤1、将服务器上“面向对象”课件的文件夹中的“Csharp示例\第7课\ Exercise”文件夹复制到本地磁盘上。
打开其中的“Exercise.sln”,完成其中的3个任务。
这3个任务目标写在Form1.cs文件中,需要在项目中添加2个类(圆类Circle, 圆锥体Cone)的定义。
2、将完成的源程序压缩后,连同本实验报告,一同通过电子邮件交给指导教师。
四、程序运行结果截图程序运行后单击"Circle类测试"按钮后的运行结果截图:程序运行后单击"Cone类测试"按钮后的运行结果截图:程序运行后单击"多态性测试"按钮后的运行结果截图:五、程序源代码(用Winrar压缩后用附件提交,源代码中要有比较完备的注释),以下代码请粘贴于此:Circle类的代码:class Circle:Point{private double radius;public double Radius{get{return radius;}set{radius = value;}}public Circle(){this.X = 0;this.Y= 0;this.radius = 0;}public Circle( int X, int Y,double radius):base(X,Y){this.X = X;this.Y = Y;this.radius = radius;}public override double Area(){return Math.Round(Math.PI * Math.Pow(this.radius,2),2);}public double zhouchang(){return 2 * Math.PI * radius;}public override string Name{get{return"圆";}}public override string ToString(){return"圆心坐标="+ base.ToString() + ",半径=" + radius+"\r圆的周长="+Math.Round(this.zhouchang(),2);//return "圆心坐标=["+this.X+","+this.Y+"];半径="+ radius+"\n"+"圆的周长"+Math.Round(this.zhouchang())+"\n"+"圆的面积="+Math.Round(this.Areaes());}}任务1的代码:// TODO 1: 给本项目添加1个Circle类的定义,它继承自Point类Circle a = new Circle(5,5,5);string str=+":"+ a.ToString();Output(str);Cone类的代码:class Cone:Circle{private double Height;private double height{get{return Height;}set{Height = value;}}public Cone(){this.Height = 0;this.X = 0;this.Y = 0;}public Cone(int X, int Y, double radius, double Height):base(X,Y,radius) {this.X = X;this.Y = Y;this.Height = Height;this.Radius = radius;}public double Areas(){return base.Area() + (this.zhouchang() * Height) / 2;}public override double Volume(){return Math.Round((base.Area() * Height) / 3,2);}public override string Name{get{return"圆锥";}}public override string ToString(){return"圆心坐标=[" + this.X + "," + this.Y + "];半径=" + this.Radius + "\n" + "圆锥的高=" +this.Height+"圆锥的表面积="+Math.Round(this.Areas(),2);}}任务2的代码:// TODO 2: 给本项目添加1个Cone类的定义,它继承自Circle类Cone b = new Cone(1, 2, 3,4);string strs = + ":" + b.ToString();Output(strs);六、思考题:1、请说明private、public、protected这3个访问修饰符的作用public成员,可以从程序的任何位置,通过该类(基类或派生类)的对象引用,来访问它。
继承与多态实验报告

实验五继承与多态理解继承与多态的概念,掌握三种访问控制的区别,掌握抽象类、接口与包的应用。
二、实验内容:1. 参考教材P112,示例程序C5_17,掌握抽象类的应用。
2. 参考教材P116,示例程序C5_19,掌握接口的使用方法。
3. 参考教材P121,示例程序C5_20,掌握包的使用方法。
三、实验要求:1.完成示例程序的验证。
2.写出实验报告。
四、实验步骤与结果:(由学生按照实验内容完成)1. 示例程序c5_17import java.awt.*;import java.applet. *;abstract class Shapes //定义一个抽象类Shapes{public int x,y; //x、y为画图的坐标public int width,height;public Shapes(int x,int y,int width,int height){ this.x=x;this.y=y;this.width=width;this.height=height;}abstract double getArea( ); //求图形面积的抽象方法abstract double getPerimeter( ); //求图形周长的抽象方法}class Square extends Shapes //由抽象类Shapes派生的子类——矩形类{public double getArea( ){return(width*height);}public double getPerimeter( ){return(2*width+2*height);}public Square(int x,int y,int width,int height){ super(x,y,width,height); }}class Triangle extends Shapes //由抽象类Shapes派生的子类——三角形类{public double c; //斜边public double getArea( ){return(0.5*width*height);}public double getPerimeter( ){return(width+height+c);}public Triangle(int x,int y,int base,int height){super(x,y,base,height);c=Math.sqrt(width*width+height*height);}}class Circle extends Shapes //由抽象类Shapes派生的子类——圆类{public double r; //半径public double getArea( ){return(r*r*Math.PI);}public double getPerimeter( ){return(2*Math.PI*r);}public Circle(int x,int y,int width,int height){super(x,y,width,height);r=(double)width/2.0;}}public class c5_18 extends Applet{/****/private static final long serialVersionUID = -L;Square Box=new Square(5,15,25,25);Triangle tri=new Triangle(5,50,8,4);Circle Oval=new Circle(5,90,25,25);public void paint(Graphics g){//画正方形g.drawRect(Box.x,Box.y,Box.width,Box.height);g.drawString("Box Area:"+Box.getArea( ),50,35);g.drawString("Box Perimeter:"+Box.getPerimeter( ),50,55);g.drawString("tri Area:"+tri.getArea( ),50,75);g.drawString("tri Perimeter:"+tri.getPerimeter( ),50,95);g.drawOval(Oval.x,Oval.y,Oval.width,Oval.height); //画圆g.drawString("oval Area:"+Oval.getArea( ),50,115);}}2. 示例程序C5_19import java.awt.*;import java.applet.*;interface Shapes{ abstract double getArea( );abstract double getPerimeter( );}class Coordinates{int x,y;public Coordinates(int x,int y){this.x=x;this.y=y;}}//Square Coordinates Shapesclass Square extends Coordinates implements Shapes{public int width,height;public double getArea( ){return(width*height);}public double getPerimeter( ){return(2*width+2*height);} public Square(int x,int y,int width,int height){super(x,y);this.width=width;this.height=height;}}class Triangle extends Coordinates implements Shapes{public int width,height;public double c;public double getArea( ){return(0.5*width*height);}public double getPerimeter( ){return(width+height+c);}public Triangle(int x,int y,int base,int height){super(x,y);width=base;this.height=height;c=Math.sqrt(width*width+height*height);}}class Circle extends Coordinates implements Shapes{public int width,height;public double r;public double getArea( ){return(r*r*Math.PI);}public double getPerimeter( ){return(2*Math.PI*r);}public Circle(int x,int y,int width,int height){super(x,y);this.width=width;this.height=height;r=(double)width/2.0;}}public class c5_20 extends Applet{/****/private static final long serialVersionUID = L;Square Box=new Square(5,15,25,25);Triangle tri=new Triangle(5,50,8,4);Circle Oval=new Circle(5,90,25,25);public void paint(Graphics g){g.drawRect(Box.x,Box.y,Box.width,Box.height);g.drawString("Box Area:"+Box.getArea( ),50,35);g.drawString("Box Perimeter:"+Box.getPerimeter( ),50,55);g.drawString("tri Area:"+tri.getArea( ),50,75);g.drawString("tri Perimeter:"+tri.getPerimeter( ),50,95);g.drawOval(Oval.x,Oval.y,Oval.width,Oval.height);g.drawString("oval Area:"+Oval.getArea( ),50,115);}}五.总结。
.net实训报告

.NET 实训报告一、实训目的本次.NET实训旨在提高学生对.NET框架的理解和应用能力,通过实际操作掌握C#语言的基础语法、面向对象编程思想、Windows窗体应用程序开发、数据库访问技术等核心内容。
实训过程中,注重培养学生的团队合作精神、问题解决能力和实践创新能力。
二、实训内容C#基础语法学习:复习并巩固C#语言的数据类型、变量、运算符、控制流程等基础知识,为后续开发打下基础。
面向对象编程实践:理解面向对象编程的核心概念,如类、对象、继承、封装和多态,并通过编写简单的类和对象来加深理解。
Windows窗体应用程序开发:学习使用Visual Studio开发环境创建Windows窗体应用程序,掌握窗体布局、控件使用以及事件处理等基本操作。
数据库编程:了解架构,学习使用Connection、Command、DataReader等对象访问数据库,实现数据的增删改查操作。
项目实战演练:以小组为单位,根据实际需求设计并开发一个小型管理系统,如学生信息管理系统、图书借阅系统等,综合运用所学知识解决实际问题。
三、实训过程理论学习阶段:在指导教师的带领下,系统学习.NET框架的相关知识和C#语言的语法规则。
通过课堂讲解、案例分析、小组讨论等方式加深对理论知识的理解。
实验操作阶段:在实验室环境中,学生独立完成编程练习,包括编写简单的控制台应用程序、Windows窗体应用程序等。
教师巡回指导,及时解答学生在操作过程中遇到的问题。
项目实战阶段:学生分组进行项目选题、需求分析、系统设计等工作。
在项目开发过程中,团队成员分工协作,定期召开小组讨论会,共同解决技术难题。
指导教师定期检查项目进度并给予指导。
成果展示与总结反思阶段:各小组完成项目开发后,进行成果展示和答辩。
通过互相交流学习,学生不仅展示了自己的作品,还从其他小组的项目中获得了启发和灵感。
最后,学生撰写实训报告,总结实训过程中的收获和不足。
四、实训成果通过本次实训,学生普遍反映对.NET框架有了更深入的了解和认识,C#编程能力得到了显著提升。
继承与多态实验报告

继承与多态实验报告继承与多态实验报告在面向对象编程中,继承和多态是两个重要的概念。
通过继承,我们可以创建新的类,并从现有的类中继承属性和方法。
而多态则允许我们使用父类的引用来指向子类的对象,实现同一操作具有不同的行为。
本实验旨在通过实际的编程实践,加深对继承和多态的理解。
实验一:继承在这个实验中,我们创建了一个动物类(Animal),并从它派生出了两个子类:狗类(Dog)和猫类(Cat)。
动物类具有一些共同的属性和方法,如名字(name)和发出声音(makeSound)。
子类继承了父类的属性和方法,并可以添加自己的特定属性和方法。
在编写代码时,我们首先定义了动物类,并在其中实现了共同的属性和方法。
然后,我们创建了狗类和猫类,并分别在这两个类中添加了自己的特定属性和方法。
通过继承,我们可以在子类中直接使用父类的方法,并且可以根据需要进行重写。
实验二:多态在这个实验中,我们使用多态的概念来实现一个动物园的场景。
我们定义了一个动物园类(Zoo),并在其中创建了一个动物数组。
这个数组可以存储不同类型的动物对象,包括狗、猫等。
通过多态,我们可以使用动物类的引用来指向不同类型的动物对象。
例如,我们可以使用动物类的引用来指向狗对象,并调用狗类特有的方法。
这样,我们可以统一处理不同类型的动物对象,而不需要为每种类型编写特定的处理代码。
实验三:继承与多态的结合应用在这个实验中,我们进一步探索了继承和多态的结合应用。
我们定义了一个图形类(Shape),并从它派生出了三个子类:圆形类(Circle)、矩形类(Rectangle)和三角形类(Triangle)。
每个子类都实现了自己的特定属性和方法。
通过继承和多态,我们可以在图形类中定义一些通用的方法,如计算面积和周长。
然后,我们可以使用图形类的引用来指向不同类型的图形对象,并调用相应的方法。
这样,我们可以轻松地对不同类型的图形进行统一的处理。
结论:通过本次实验,我们进一步理解了继承和多态的概念,并学会了如何在编程中应用它们。
实验四 类的继承与多态实验

实验四类的继承与多态实验实验四类的继承与多态实验实验四的遗传和多态性实验【实验目的】1.理解软件可重用性的一种形式——继承。
2.能够通过继承现有类来创建新类。
3.理解基类和派生类的概念。
4.能够在派生类中使用构造函数和析构函数5.学习虚基类在解决二义性问题中的作用。
6.熟悉多态性分类,理解静态绑定和动态绑定的概念。
7.掌握运算符重载方法。
8.理解虚函数、纯虚函数和抽象类概念。
9.掌握用抽象类和多态性实现编程的方法。
【实验内容】1.分析程序并写出以下程序的运行结果:(1)#包括classbase{私人:intbase_uuPriv_uudat;受保护:intbase_uu_uu_uu_u_u_u_u_;dat;public:voidbase_uu_u;show();};classderived:publicbase{私人:Int_uupriv_uudat;public:voidderived_uuu()show();};voidbase::base_show(){base_priv_dat=1;//基类函数可以操纵私有和保护型基类数据base_prot_dat=2;cout<voidExpired::derived_uushow(){derived_priv_dat=3;base_prot_dat=4;//派生函数可以处理受保护的基类数据,但不能处理私有基类数据cout<}Intmain(){derivedd_obj;d_obj.Base_show();//调用基类函数d_obj.Derived_show();返回(0);}(2)#include#包括解密人员{public:person(constchar*s)//带参数的构造函数{name=newchar[strlen(s)+1];strcpy(name,s);}~person(){delete[]name;}//析构函数做清理工作char*getname(){returnname;}protected:char*name;};类学生:publicperson{char*major;public:student(constchar*s,constchar*m):person(s)//派生类构造函数{major=newchar[strlen(m)+1];strcpy(major,m);}~学生(){delete[]专业;}//派生类析构函数char*getmajor(){returnajor;};intmain(){studentstu(\cout<2.编译并运行以下程序,分析编译错误的原因,并给出解决方案。
【实验】实验报告类的重载继承和多态

【关键字】实验实验报告类的重载继承和多态篇一:实验三_类的重载继承和多态_()篇二:实验三_类的重载继承和多态篇三:C++实验报告(类和东西重载与继承多态和模板异常和流)C++实验报告目录C++实验报告 (4)实验一:类和东西 (4)1. (4)代码 (4)运行结果 (5)2 (5)思路: (5)代码 (5)运行结果 (8)3 (8)思路 (8)代码 (8)运行结果 (9)实验二重载和继承 (9)1 (9)思路 (10)代码 (10)运行结果 (13)问题分析: (13)2 (13)思路: (13)代码 (14)运行结果 (15)实验三多态与模板 (16)思路 (16)代码 (16)运行结果 (17)2 (17)思路 (17)代码 (18)运行结果 (19)3 (19)思路 (19)代码 (19)运行结果 (21)问题及分析 (21)实验四异常和流 (21)1 (21)思路 (21)代码 (21)运行结果 (22)2 (23)思路 (23)代码 (23)运行结果 (27)实验总结: (28)C++实验报告实验一:类和东西实验目的:能够根据软件需要,对客观实体进行抽象(封装)和代码实现。
实验环境:Visual C++ 6.0实验内容:1.设计并测试一个名为Rectangle的矩形类,其属性为矩形的左下角与右上角两个点的坐标,能计算矩形的面积。
代码如下:#includeusing namespace std;struct point{float x;};class Rectangle//矩形类{point lowerleft;//矩形左下角点的坐标point upperright;//矩形右上角点的坐标public:void get();//输入矩形左下角点和右上角点的坐标float area();//计算矩形面积};void Rectangle::get(){cout cout实验报告类的重载继承和多态) cin>>lowerleft.x>>lowerleft.y;cout cin>>upperright.x>>upperright.y;}float Rectangle::area(){return (upperright.x-lowerleft.x)*(upperright.y-lowerleft.y);}int main(){Rectangle juxing;juxing.get();float result;result=juxing.area();cout return 0;}运行结果如下:2. 设计并测试一个“人员”类。
C++实验报告 继承与多态

四、实验结果分析及总结(对实验的结果是否达到预得派生类中不曾定义过的成员,提高了编程效率; 2)继承与派生分为共有、私有、保护三种继承方式,其中共有使用最广泛,
它使得派生类与基类中的成员具有相同的属性。 3)多重继承存在有二义性,用虚基类能有效解决这一问题。 4)除了继承还有组合关系,及在一个类中定义另一个类的对象,此时初始化时要用对象名 来调用初始化函数。调用对应的函数时,要用对象名调用它的函数。 5)函数重载就是一名多用,可以使代码更容易被理解; 6)对于插入运算符与流提取运算符的重载格式: istream &operator >>(istream &, 自定义类 &); ostream &operator >>(ostream &,自定义类 &); 6)用一个指针调用派生类的函数时,将指针定义为指向基类的指针,基类的函数要定义为 虚函数,将各个派生类的地址赋值给指针,通过指针调用函数,实现多态性。
void Boss::print() { cout << id << '\t' << name << '\t' << age << '\t' << sex << '\t'<< "Boss" << "\t\t" << '$' << getPay() << " per " << salarySystem<< endl;
Boss(string name, int age, string id, string sex, string salarySystem = "year") : Person(name, age, id, sex, salarySystem) {}
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
课程名称.NET程序设计
实验项目.NET继承与多态
专业计科班级 1 姓名学号
指导教师实验成绩
年月日
一、实验目的(介绍本次实验的预期目标,完成的功能)
1.理解类的继承性与多态性,掌握其应用方法。
2.理解抽象类、接口的概念,掌握抽象类与接口的定义及使用方法。
二、实验过程(介绍实验中涉及的关键过程,如核心算法、数
据结构等)
1.设计一个Windows应用程序,在该程序中首先构造一个学生基本类,再分别构造小学生、中学生、大学生等派生类,要求具有不同的特性和行为,能通过静态成员自动记录不同学生的人数。
学生类要求的功能:
成员变量:学号、姓名、总成绩、性别等;
方法:构造函数、析构函数、显示学生的全部信息。
派生类要求的功能:
成员变量:
小学生类:语文成绩、数学成绩、英语成绩
中学生类:化学成绩、物理成绩
大学生类:高数成绩、计算机成绩
静态变量:人数
方法:构造函数、析构函数、显示学生全部信息。
选择“文件”→“新建”→“项目”菜单命令,弹出“新建项目”对话框,在“模板”列表框中选择“控制台应用程序”。
首先创建一个学生类,属性有学号、姓名、总成绩、性别,构造函数里赋值。
代码如图1-1所示:
图1-1 学生类源代码
然后分别创建小学生类、中学生类和大学生类。
代码如图1-2、1-3、1-4所示:
图1-2 小学生类源代码
图1-3 中学生类源代码
最后创建班级类并实现学生信息管理。
如图1-5、1-6所示:
图1-5 班级类
图1-6 程序源代码
三、实验结果分析(分析实验的最终结果)
1.选择“调试”→“启动调试”,或“调试”→“开始执行(不调试)”菜单命令,将程序显示在命令提示符窗口中。
如图2-1所示:
图2-1 程序主界面
按数字1键,输入班级的学生人数,然后按回车键。
依次输入学生学号、姓名、性别、总成绩。
如图2-2所示:
图2-2 输入学生信息
按数字2键,可以输入学号来查询学生信息。
如图2-3所示:
图2-3 查询学生信息
按数字3键可以统计出全班的平均分。
如图2-4所示:
图2-4 统计全班平均分
四、实验心得
通过这次实验我掌握了C#中类的继承性与多态性。
面向对象的继承与多态允许创建一个通用类,然后从通用类派生出更多的特殊类。
这个通用类称为基类,特殊类称为派生类,派生类继承基类的属性和方法。
对比Java语言中,C#使用“:”关键字继承类;通过base关键字,派生类构造函数就可以调用基类的构造函数;用sealed关键字可以声明密封类,避免他人共享代码;使用new关键字来定义与基类中同名的成员;在基类中使用virtual关键字标识虚拟成员,然后在派生类中用override关键字将基类的虚拟成员覆盖掉。
指导教师签字:
年月日。