Net实验2
实验二 面向对象程序设计
一、实验目的
1. 理解类的定义、继承等面向对象的的基本概念;
2. 掌握C#语言定义类及其各种成员(字段,属性,方法)的方法;
3. 掌握方法覆盖的应用;
4. 掌握接口的定义和实现方法。
二、实验要求
根据要求,编写 C#程序,并将程序代码和运行结果写入实验报告。
三、实验内容
1. 设计编写一个控制台应用程序,练习类的继承。
(1) 编写一个抽象类 People,具有”姓名”,”年龄”字段,”姓名”属性,Work 方法。
(2) 由抽象类 People 派生出学生类 Student 和职工类 Employer,继承 People 类,并
覆盖Work 方法。
(3) 派生类 Student 增加”学校”字段,派生类 Employer 增加”工作单位”字段。
(4) 在 Student 和 Employer 实例中输出各自不同的信息。
源码如下:
- Employer.cs
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace experiment2
- {
- // (2) 由抽象类 People 派生出学生类 Student 和职工类 Employer,继承 People 类,并
- // 覆盖Work 方法。
- // (3) 派生类 Student 增加”学校”字段,派生类 Employer 增加”工作单位”字段。
- class Employer : People
- {
- public String work_place;
- public Employer(String work_place, String name, int age)
- {
- this.work_place = work_place;
- this.name = name;
- this.age = age;
- }
- public override void Work()
- {
- Console.WriteLine("我的名字叫" + name + ",我" + age + "岁了,我是" + work_place + "的一名职工");
- //throw new NotImplementedException();
- }
- }
- }
- People.cs
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace experiment2
- {
- //(1) 编写一个抽象类 People,具有”姓名”,”年龄”字段,”姓名”属性,Work 方法。
- abstract class People
- {
- protected String name;
- protected int age;
- public abstract void Work();
- //public People(String name, int age)
- //{
- // this.name = name;
- // this.age = age;
- //}
- }
- }
- Student.cs
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace experiment2
- {
- //(2) 由抽象类 People 派生出学生类 Student 和职工类 Employer,继承 People 类,并
- // 覆盖Work 方法。
- //(3) 派生类 Student 增加”学校”字段,派生类 Employer 增加”工作单位”字段。
- class Student : People
- {
- String school;
- public Student(String school, String name, int age)
- {
- this.school = school;
- this.name = name;
- this.age = age;
- }
- public override void Work()
- {
- Console.WriteLine("我的名字叫" + name + ",我" + age + "岁了,我是" + school + "的一名学生");
- //throw new NotImplementedException();
- }
- }
- }
- Program.cs
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace experiment2
- {
- class Program
- {
- static void Main(string[] args)
- {
- Console.WriteLine("******************* 实验一开始 *******************");
- Employer em;
- Student stu;
- //创建对象
- em = new Employer("石家庄铁道大学", "张三", 35);
- stu = new Student("石家庄铁道大学", "李四", 23);
- //输出信息
- em.Work();
- stu.Work();
- Console.WriteLine("******************* 实验一结束 *******************");
- Console.WriteLine();
- Console.WriteLine();
- Console.WriteLine("******************* 实验二开始 *******************");
- //创建对象
- Square sq = new Square();
- Circle ci = new Circle();
- //初始化
- sq.initialize(4);
- ci.initialize(3);
- //正方形计算数据
- sq.getPerimeter();
- sq.getArea();
- //圆形计算数据
- ci.getPerimeter();
- ci.getArea();
- //打印结果
- sq.display();
- ci.display();
- Console.WriteLine("******************* 实验二结束 *******************");
- Console.ReadKey();
- }
- }
- }
运行截图如下:
2. 编写一个控制台应用程序,输入正方形边长或者半径,计算其周长和面积并输出。
(1) 编写两个接口,接口 IShape 包含三个方法:initialize, getPerimeter, getArea。分
别进行初始化、获取边长和面积,其返回值均为 decimal。接口 IDisplayresult 显示计算结果。
(2) 编写两个类,Square(正方形)和 Circle(圆形),实现 IShape 和 IDisplayresult
接口。
源码如下:
- Circle.cs
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace experiment2
- {
- class Circle : IShape, IDisplayresult
- {
- decimal r;
- decimal perimeter;
- decimal area;
- public void display()
- {
- Console.WriteLine("这个半径为" + r + "圆形的周长为" + perimeter + ",面积为" + area);
- //throw new NotImplementedException();
- }
- public decimal getArea()
- {
- this.area = (decimal)3.14 * r * r;
- return area;
- //throw new NotImplementedException();
- }
- public decimal getPerimeter()
- {
- this.perimeter = 2 * r * (decimal)3.14;
- return perimeter;
- //throw new NotImplementedException();
- }
- public void initialize(decimal b)
- {
- this.r = b;
- this.perimeter = 0;
- this.area = 0;
- //throw new NotImplementedException();
- }
- }
- }
- IDisplayresult.cs
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace experiment2
- {
- //接口 IDisplayresult 显示计算结果。
- interface IDisplayresult
- {
- void display();
- }
- }
- IShape.cs
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace experiment2
- {
- //(1) 编写两个接口,接口 IShape 包含三个方法:initialize, getPerimeter, getArea。分
- //别进行初始化、获取边长和面积,其返回值均为 decimal。
- interface IShape
- {
- void initialize(decimal b);
- decimal getPerimeter();
- decimal getArea();
- }
- }
- Square.cs
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace experiment2
- {
- //正方形
- class Square : IShape, IDisplayresult
- {
- decimal b;
- decimal perimeter;
- decimal area;
- public void display()
- {
- Console.WriteLine("这个边长为" + b + "正方形的周长为" + perimeter + ",面积为" + area);
- //throw new NotImplementedException();
- }
- public decimal getArea()
- {
- this.area = perimeter * perimeter;
- return area;
- //throw new NotImplementedException();
- }
- public decimal getPerimeter()
- {
- this.perimeter = b * 4;
- return this.perimeter;
- //throw new NotImplementedException();
- }
- public void initialize(decimal b)
- {
- this.b = b;
- this.perimeter = 0;
- this.area = 0;
- //throw new NotImplementedException();
- }
- }
- }
- Program.cs
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace experiment2
- {
- class Program
- {
- static void Main(string[] args)
- {
- Console.WriteLine("******************* 实验一开始 *******************");
- Employer em;
- Student stu;
- //创建对象
- em = new Employer("石家庄铁道大学", "张三", 35);
- stu = new Student("石家庄铁道大学", "李四", 23);
- //输出信息
- em.Work();
- stu.Work();
- Console.WriteLine("******************* 实验一结束 *******************");
- Console.WriteLine();
- Console.WriteLine();
- Console.WriteLine("******************* 实验二开始 *******************");
- //创建对象
- Square sq = new Square();
- Circle ci = new Circle();
- //初始化
- sq.initialize(4);
- ci.initialize(3);
- //正方形计算数据
- sq.getPerimeter();
- sq.getArea();
- //圆形计算数据
- ci.getPerimeter();
- ci.getArea();
- //打印结果
- sq.display();
- ci.display();
- Console.WriteLine("******************* 实验二结束 *******************");
- Console.ReadKey();
- }
- }
- }