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();
  •         }
  •     }
  • }

 

 

 

 

posted @ 2022-11-16 19:42  Lindseyyip  阅读(13)  评论(0编辑  收藏  举报