C#面向对象程序设计

发布时间 2023-12-18 10:38:13作者: YE-

实验二 面向对象程序设计
一、实验目的

  1. 理解类的定义、继承等面向对象的的基本概念;
  2. 掌握C#语言定义类及其各种成员(字段,属性,方法)的方法;
  3. 掌握方法覆盖的应用;
  4. 掌握接口的定义和实现方法。
    二、实验要求
    根据要求,编写 C#程序,并将程序代码和运行结果写入实验报告。
    三、实验内容
  5. 设计编写一个控制台应用程序,练习类的继承。
    (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. 编写一个控制台应用程序,输入正方形边长或者半径,计算其周长和面积并输出。
    (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 方法展示计算结果。用户需要提供正方形的边长或圆的半径作为输入数据。这段代码演示了接口的使用,通过接口规定了形状类必须提供的方法,从而实现了对不同形状的周长和面积计算,并将计算结果展示给用户。这有助于提高代码的可重用性和扩展性,因为可以轻松地添加其他形状类并实现相同的接口。