实验三 - 类的重载继承和多态
更新时间:2023-12-21 13:21:01 阅读量: 教育文库 文档下载
- 实验三中推荐度:
- 相关推荐
实验报告 课程名称 实验名称 学生学号 实验目的: 1.编写一个单一继承的C#程序 2.编写一个抽象类,并用一个类继承这个抽象类 实验要求: 1.认真阅读、掌握和本实验相关的教材内容。 2.设计并编写代码完成题目要求的任务。 3.撰写实验报告。 实验内容与步骤: 1.在学校教务管理系统中,有三种用户,一种是系统管理员,一种是学生,一种是教师,编写C#类实现该继承关系。系统管理员/学生/教师都有用户名和密码属性,并都有Login和显示自身信息的方法,另外,学生拥有班级和成绩两个特殊属性以及查询成绩这一方法,教师拥有部门和工资两个特殊属性以及查询工资这一方法,系统管理员可以添加学生和教师信息。由于教师和学生个人信息不同,所以学生和教师重载基类的DisplayInfo方法。(本例和教材一致,再次出现的目的是通过反复训练,理解继承的作用) 1)类的继承关系可以表示如下: 面向对象程序设计 实验三、类的重载继承和多态 姓名 日期 班级 2015.10.23 2)创建控制台应用程序,命名为SchoolManagement 3)创建名为User的基类,基类定义了用户名和密码属性,以及Login和DisplayInfo方法 using System; using System.Collections.Generic; using System.Text; namespace SchoolManagement { public class User { private string userName;//用户名 public string Name { get { return userName; } set { userName = value; } } private string password;//密码 public string Password { get { return password; } set { password = value; } } private string userType;//用户类型 public string UserType { get { return userType; } set { userType = value; } } public void Login() { if (userName.Equals(\) && password.Equals(\)) { DisplayPersonInfo(); } } public virtual void DisplayPersonInfo() //注意virtual关键字 { Console.WriteLine(\姓名:{0}\, userName); Console.WriteLine(\用户类型:{0}\, userType); } } } 2)创建名为Student的派生类,具备班级和成绩两个特殊属性,以及查询成绩的特殊方法,覆盖基类的显示个人信息方法 using System; using System.Collections.Generic; using System.Text; namespace SchoolManagement { public class Student : User { private string classID; public string ClassID { get { return classID; } set { classID = value; } } private float stuScore; public float StuScore { get { return stuScore; } set { stuScore = value; } } public Student() { UserType = \学生\; } public override void DisplayPersonInfo() { base.DisplayPersonInfo(); Console.WriteLine(\班级:{0}\, classID ); } public void CheckScore() { Console.WriteLine(\成绩:{0}\, this.stuScore); } } } 3)创建名为Teacher的派生类,具备部门和工资两个特殊属性,以及查询工资的特殊方法,覆盖基类的显示个人信息方法。 using System; using System.Collections.Generic; using System.Text; namespace SchoolManagement { public class Teacher : User { private string department;//部门 public string Department { get { return department; } set { department = value; } } private float salary;//工资 public float Salary { get { return salary; } set { salary = value; } } public Teacher() { UserType = \教师\; } public override void DisplayPersonInfo() { base.DisplayPersonInfo(); Console.WriteLine(\部门:\ + this.department); } public void checkSalary() { Console.WriteLine(\工资:\ + this.salary); } } } 4)创建名为SysManager的派生类,具备插入学生信息和插入教师信息两个方法 using System; using System.Collections.Generic; using System.Text; namespace SchoolManagement { public class SysManager : User { public SysManager() { UserType = \管理员\; } public Student InsertStudent() { Student stu = new Student(); stu.Name = \张郭郭\; stu.UserType = \教师\; stu.ClassID = \; stu.StuScore = 70; return stu; } public Teacher InsertTeacher() { Teacher teacher = new Teacher(); teacher.Name = \李沙沙\; teacher.Department = \计算机系\; teacher.Salary = 5000; return teacher; } } } 5)在Program.cs的Main方法中调用以上类,测试效果如下: using System; using System.Collections.Generic; using System.Text; namespace SchoolManagement { class Program { static void Main(string[] args) { //系统管理员登录 SysManager sys = new SysManager(); sys.Name = \; sys.Password = \; sys.Login(); Console.WriteLine(\); //系统管理员录入学生和教师信息 Teacher teacher = sys.InsertTeacher(); Student stu = sys.InsertStudent(); //显示教师信息,查询工资 teacher.DisplayPersonInfo();
teacher.checkSalary(); Console.WriteLine(\); //显示学生信息,查询成绩 stu.DisplayPersonInfo(); stu.CheckScore(); Console.WriteLine(\); } } } 6)最终运行效果如下 2.建立名为Shape的基类,要求是抽象类,在该类中提供一个public abstract double Area()的抽象方法,建立名为Circle的派生类,包括半径属性,实现面积计算,再建立一个名为Rectangle的派生类,包括长和宽两个属性,实现面积的计算。 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace GetArea { class Program { static void Main(string[] args) { Console.WriteLine(\请?输o?入¨?圆2的ì?半??径?:\); double r=double.Parse (Console.ReadLine ()); shape s = new Circle(r); Console.WriteLine(\圆2的ì?面?积y是o?:{0}\\n\,s.Area()); Console.WriteLine(\请?输o?入¨?矩?形?的ì?长?è和¨a宽¨a:\); Console.Write(\长?è:\); double a=double.Parse (Console.ReadLine ()); Console.Write(\宽¨a:\); double b=double.Parse (Console.ReadLine ()); shape f = new Rectangle(a, b); Console.WriteLine(\矩?形?的ì?面?积y是o?:{0}\,f.Area()); Console .ReadLine (); } public abstract class shape { public abstract double Area(); } public class Circle : shape { private double r; public double R { get { return r; } set { r = value; } } public Circle(double r) { this.r = r; } public override double Area() { return Math.PI * r * r; } } public class Rectangle : shape { private double side; public double Side { get { return side; } set { side = value; } } private double high; public double High { get { return high; } set { high = value; } } public Rectangle(double side, double high) { this.side = side; this.high = high; } public override double Area() { return side * high; } } } } 最终运行效果如下 实验总结(结论或问题分析): 本次实验我对基类、抽象类、派生类有了近一步的了解,知道了怎么建立这些类,还有在抽象类中创建抽象方法。所以本次实验我学会了许多。 实验成绩 任课教师签名 郭俊恩
正在阅读:
实验三 - 类的重载继承和多态12-21
9月2日福建事业单位联考真题及解析(56-110)03-11
南京工业大学-化工原理期末试卷及答案05-13
人教版五年级品社上册复习大全03-30
重庆市乡镇卫生院名录2018版1235家 - 图文04-14
几分之一教学案例07-25
中国象棋特色方案01-06
木渎实验中学10月初三英语月考试卷05-17
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 多态
- 重载
- 继承
- 实验
- 唐师美国文学期末
- 公共经济学考试题库答案- 庆元县政府网
- MIS复习题2015
- 用人单位应当如何根据《劳动合同法》来制定规章制度每日一练(2014.7.7)
- (目录)2017-2022年中国洗发护发市场发展预测及投资咨询报告 - 图文
- 行动是梦想扎根土壤作文1000字正式版
- 高等数学第七章向量
- (聚焦典型)2014届高三数学一轮复习《空间几何体的结构特征及三视图和直观图》理 新人教B版
- 电风扇自动程序控制器设计 - 图文
- 农机专业合作社章程(2)资料
- 英语自我介绍面试英语面试自我介绍4篇
- 许姓的历史
- 高二化学第一学期第三次月考试题
- 证据法2003-2015年司考选择题
- 单元整合群文阅读课题方案
- powerpoint的使用技巧
- 2014-2015年度二年级语文上册期中检测
- 小学语文人教版五年级下册第三单元测试卷
- 教育哲学复习大纲
- 小本创业:开个钓鱼俱乐部