实验二 面向对象程序设计
一、实验目的
- 理解类的定义、继承等面向对象的的基本概念;
- 掌握C#语言定义类及其各种成员(字段,属性,方法)的方法;
- 掌握方法覆盖的应用;
- 掌握接口的定义和实现方法。
二、实验要求
根据要求,编写 C#程序,并将程序代码和运行结果写入实验报告。
三、实验内容 - 设计编写一个控制台应用程序,练习类的继承。
(1) 编写一个抽象类 People,具有”姓名”,”年龄”字段,”姓名”属性,Work 方法。
(2) 由抽象类 People 派生出学生类 Student 和职工类 Employer,继承 People 类,并
覆盖Work 方法。
(3) 派生类 Student 增加”学校”字段,派生类 Employer 增加”工作单位”字段。
(4) 在 Student 和 Employer 实例中输出各自不同的信息。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
People p1, p2;
p1 = new Student();
p1.Work();
p2 = new Employer();
p2.Work();
}
}
abstract class People
{
public String name;
public int age;
public abstract void Work();
}
class Student : People
{
public String school;
public override void Work()
{
Console.WriteLine("StudentInfo!");
}
}
class Employer : People
{
public String workaddress;
public override void Work()
{
Console.WriteLine("EmployerInfo!");
}
}
}
- 编写一个控制台应用程序,输入正方形边长或者半径,计算其周长和面积并输出。
(1) 编写两个接口,接口 IShape 包含三个方法:initialize, getPerimeter, getArea。分
别进行初始化、获取边长和面积,其返回值均为 decimal。接口 IDisplayresult 显示计算结果。
(2) 编写两个类,Square(正方形)和 Circle(圆形),实现 IShape 和 IDisplayresult
接口。
using System;
namespace Demo
{
class Program
{
static void Main(string[] args)
{
Square s = new Square();
Circle c = new Circle();
s.initialize();
s.disPlay();
c.initialize();
c.disPlay();
Console.ReadKey();
}
}
interface IShape
{
decimal initialize();
decimal getPerimeter();
decimal getArea();
}
interface IDisplayresult
{
void disPlay();
}
class Square : IShape, IDisplayresult
{
public decimal a;
public decimal initialize()
{
Console.WriteLine("请输入边长:");
a = Convert.ToDecimal(Console.ReadLine());
return a;
}
public decimal getPerimeter()
{
return a * 4;
}
public decimal getArea()
{
return a * a;
}
public void disPlay()
{
Console.WriteLine("周长为:" + getPerimeter());
Console.WriteLine("面积为:" + getArea());
}
}
class Circle : IShape, IDisplayresult
{
public decimal l;
public decimal initialize()
{
Console.WriteLine("请输入半径R:");
l = Convert.ToDecimal(Console.ReadLine());
return l;
}
public decimal getPerimeter()
{
return l * 2m * 3.14m;
}
public decimal getArea()
{
return l * l * 3.14m;
}
public void disPlay()
{
Console.WriteLine("周长为:" + getPerimeter());
Console.WriteLine("面积为:" + getArea());
}
}
}
四、实验总结
第一问的C#代码定义了一个基类 People 和两个派生类 Student 和 Employer,其中基类包含姓名和年龄字段以及抽象的 Work 方法,两个派生类分别扩展了基类,提供了自己的字段和 Work 方法实现,最后在 Main 方法中创建了两个对象,分别属于 Student 和 Employer 类,调用它们的 Work 方法输出不同的信息。
第二问的C#代码是一个简单的面向对象编程示例,它包含两个形状类,即 Square 和 Circle,这两个类都实现了两个接口,IShape 和 IDisplayresult。在 Main 方法中,首先创建了一个 Square 对象 s 和一个 Circle 对象 c,然后依次对它们进行初始化,计算周长和面积,最后使用 disPlay 方法展示计算结果。用户需要提供正方形的边长或圆的半径作为输入数据。这段代码演示了接口的使用,通过接口规定了形状类必须提供的方法,从而实现了对不同形状的周长和面积计算,并将计算结果展示给用户。这有助于提高代码的可重用性和扩展性,因为可以轻松地添加其他形状类并实现相同的接口。