实验三类的重载继承和多态.docx

上传人:b****8 文档编号:9926972 上传时间:2023-02-07 格式:DOCX 页数:11 大小:49.07KB
下载 相关 举报
实验三类的重载继承和多态.docx_第1页
第1页 / 共11页
实验三类的重载继承和多态.docx_第2页
第2页 / 共11页
实验三类的重载继承和多态.docx_第3页
第3页 / 共11页
实验三类的重载继承和多态.docx_第4页
第4页 / 共11页
实验三类的重载继承和多态.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

实验三类的重载继承和多态.docx

《实验三类的重载继承和多态.docx》由会员分享,可在线阅读,更多相关《实验三类的重载继承和多态.docx(11页珍藏版)》请在冰豆网上搜索。

实验三类的重载继承和多态.docx

实验三类的重载继承和多态

实验报告

课程名称

面向对象程序设计

实验名称

实验三、类的重载继承和多态

日期

2015.10.23

学生学号

姓名

班级

实验目的:

1.编写一个单一继承的C#程序

2.编写一个抽象类,并用一个类继承这个抽象类

实验要求:

1.认真阅读、掌握和本实验相关的教材内容。

2.设计并编写代码完成题目要求的任务。

3.撰写实验报告。

实验内容与步骤:

1.在学校教务管理系统中,有三种用户,一种是系统管理员,一种是学生,一种是教师,编写C#类实现该继承关系。

系统管理员/学生/教师都有用户名和密码属性,并都有Login和显示自身信息的方法,另外,学生拥有班级和成绩两个特殊属性以及查询成绩这一方法,教师拥有部门和工资两个特殊属性以及查询工资这一方法,系统管理员可以添加学生和教师信息。

由于教师和学生个人信息不同,所以学生和教师重载基类的DisplayInfo方法。

(本例和教材一致,再次出现的目的是通过反复训练,理解继承的作用)

1)类的继承关系可以表示如下:

2)创建控制台应用程序,命名为SchoolManagement

3)创建名为User的基类,基类定义了用户名和密码属性,以及Login和DisplayInfo方法

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Text;

namespaceSchoolManagement

{

publicclassUser

{

privatestringuserName;//用户名

publicstringName

{

get{returnuserName;}

set{userName=value;}

}

privatestringpassword;//密码

publicstringPassword

{

get{returnpassword;}

set{password=value;}

}

privatestringuserType;//用户类型

publicstringUserType

{

get{returnuserType;}

set{userType=value;}

}

publicvoidLogin()

{

if(userName.Equals("1")&&password.Equals("1"))

{

DisplayPersonInfo();

}

}

publicvirtualvoidDisplayPersonInfo()//注意virtual关键字

{

Console.WriteLine("姓名:

{0}",userName);

Console.WriteLine("用户类型:

{0}",userType);

}

}

}

2)创建名为Student的派生类,具备班级和成绩两个特殊属性,以及查询成绩的特殊方法,覆盖基类的显示个人信息方法

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Text;

namespaceSchoolManagement

{

publicclassStudent:

User

{

privatestringclassID;

publicstringClassID

{

get{returnclassID;}

set{classID=value;}

}

privatefloatstuScore;

publicfloatStuScore

{

get{returnstuScore;}

set{stuScore=value;}

}

publicStudent()

{

UserType="学生";

}

publicoverridevoidDisplayPersonInfo()

{

base.DisplayPersonInfo();

Console.WriteLine("班级:

{0}",classID);

}

publicvoidCheckScore()

{

Console.WriteLine("成绩:

{0}",this.stuScore);

}

}

}

3)创建名为Teacher的派生类,具备部门和工资两个特殊属性,以及查询工资的特殊方法,覆盖基类的显示个人信息方法。

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Text;

namespaceSchoolManagement

{

publicclassTeacher:

User

{

privatestringdepartment;//部门

publicstringDepartment

{

get{returndepartment;}

set{department=value;}

}

privatefloatsalary;//工资

publicfloatSalary

{

get{returnsalary;}

set{salary=value;}

}

publicTeacher()

{

UserType="教师";

}

publicoverridevoidDisplayPersonInfo()

{

base.DisplayPersonInfo();

Console.WriteLine("部门:

"+this.department);

}

publicvoidcheckSalary()

{

Console.WriteLine("工资:

"+this.salary);

}

}

}

4)创建名为SysManager的派生类,具备插入学生信息和插入教师信息两个方法

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Text;

namespaceSchoolManagement

{

publicclassSysManager:

User

{

publicSysManager()

{

UserType="管理员";

}

publicStudentInsertStudent()

{

Studentstu=newStudent();

stu.Name="张郭郭";

stu.UserType="教师";

stu.ClassID="310730";

stu.StuScore=70;

returnstu;

}

publicTeacherInsertTeacher()

{

Teacherteacher=newTeacher();

teacher.Name="李沙沙";

teacher.Department="计算机系";

teacher.Salary=5000;

returnteacher;

}

}

}

5)在Program.cs的Main方法中调用以上类,测试效果如下:

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Text;

namespaceSchoolManagement

{

classProgram

{

staticvoidMain(string[]args)

{

//系统管理员登录

SysManagersys=newSysManager();

sys.Name="1";

sys.Password="1";

sys.Login();

Console.WriteLine("------------------------------");

//系统管理员录入学生和教师信息

Teacherteacher=sys.InsertTeacher();

Studentstu=sys.InsertStudent();

//显示教师信息,查询工资

teacher.DisplayPersonInfo();

teacher.checkSalary();

Console.WriteLine("------------------------------");

//显示学生信息,查询成绩

stu.DisplayPersonInfo();

stu.CheckScore();

Console.WriteLine("------------------------------");

}

}

}

6)最终运行效果如下

2.建立名为Shape的基类,要求是抽象类,在该类中提供一个publicabstractdoubleArea()的抽象方法,建立名为Circle的派生类,包括半径属性,实现面积计算,再建立一个名为Rectangle的派生类,包括长和宽两个属性,实现面积的计算。

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

namespaceGetArea

{

classProgram

{

staticvoidMain(string[]args)

{

Console.WriteLine("请?

输º?

入¨?

圆2的Ì?

半ã?

径?

:

");

doubler=double.Parse(Console.ReadLine());

shapes=newCircle(r);

Console.WriteLine("圆2的Ì?

面?

积y是º?

:

{0}\n",s.Area());

Console.WriteLine("请?

输º?

入¨?

矩?

形?

的Ì?

长¡è和¨ª宽¨ª:

");

Console.Write("长¡è:

");

doublea=double.Parse(Console.ReadLine());

Console.Write("宽¨ª:

");

doubleb=double.Parse(Console.ReadLine());

shapef=newRectangle(a,b);

Console.WriteLine("矩?

形?

的Ì?

面?

积y是º?

:

{0}",f.Area());

Console.ReadLine();

}

publicabstractclassshape

{

publicabstractdoubleArea();

}

publicclassCircle:

shape

{

privatedoubler;

publicdoubleR

{

get{returnr;}

set{r=value;}

}

publicCircle(doubler)

{

this.r=r;

}

publicoverridedoubleArea()

{

returnMath.PI*r*r;

}

}

publicclassRectangle:

shape

{

privatedoubleside;

publicdoubleSide

{

get{returnside;}

set{side=value;}

}

privatedoublehigh;

publicdoubleHigh

{

get{returnhigh;}

set{high=value;}

}

publicRectangle(doubleside,doublehigh)

{

this.side=side;

this.high=high;

}

publicoverridedoubleArea()

{

returnside*high;

}

}

}

}

最终运行效果如下

实验总结(结论或问题分析):

本次实验我对基类、抽象类、派生类有了近一步的了解,知道了怎么建立这些类,还有在抽象类中创建抽象方法。

所以本次实验我学会了许多。

实验成绩

任课教师签名

郭俊恩

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1