刘一辰的软件工程随笔
实验二 面向对象程序设计
一、实验目的
1. 理解类的定义、继承等面向对象的的基本概念;
2. 掌握C#语言定义类及其各种成员(字段,属性,方法)的方法;
3. 掌握方法覆盖的应用;
4. 掌握接口的定义和实现方法。
二、实验要求
根据要求,编写 C#程序,并将程序代码和运行结果写入实验报告。
三、实验内容
1. 设计编写一个控制台应用程序,练习类的继承。
(1) 编写一个抽象类 People,具有”姓名”,”年龄”字段,”姓名”属性,Work 方法。
(2) 由抽象类 People 派生出学生类 Student 和职工类 Employer,继承 People 类,并
覆盖Work 方法。
(3) 派生类 Student 增加”学校”字段,派生类 Employer 增加”工作单位”字段。
(4) 在 Student 和 Employer 实例中输出各自不同的信息。
2. 编写一个控制台应用程序,输入正方形边长或者半径,计算其周长和面积并输出。
(1) 编写两个接口,接口 IShape 包含三个方法:initialize, getPerimeter, getArea。分
别进行初始化、获取边长和面积,其返回值均为 decimal。接口 IDisplayresult 显示计算结果。
(2) 编写两个类,Square(正方形)和 Circle(圆形),实现 IShape 和 IDisplayresult
接口。
using System;
namespace ConsoleApp1
{
public abstract class People
{
public string name;
public string age;
public People(string a, string b)
{
name = a;
age = b;
}
public abstract void work();
}
public class Student :People
{
string school;
public Student(string a,string b,string c):base(a,b)
{
this.school = c;
}
public override void work()
{
Console.WriteLine("我是学生");
Console.WriteLine("wo"+name+age+"sui"+"我在学习");
}
}
public class Employer : People
{
string danwei;
public Employer(string a, string b, string c) : base(a, b)
{
this.danwei = c;
}
public override void work()
{
Console.WriteLine("我是职工");
Console.WriteLine("wo" + name + age + "sui"+"我在工作");
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("开始");
People p = new Student("hu","18","一中");
People p2 = new Employer("sheng","55","二中");
Console.WriteLine("》》》》》》》》》》》");
p.work();
p2.work();
Console.WriteLine("结束");
}
}
}
using System;
namespace ConsoleApp2
{
interface IShape
{
void initialize(decimal b);
decimal getPerimeter();
decimal getArea();
}
interface IDisplayresult
{
void show()
{
}
}
class Square: IShape, IDisplayresult
{
decimal a;
public void initialize(decimal b)
{
a = b;
}
public decimal getPerimeter()
{
return a;
}
public decimal getArea()
{
return a * 4;
}
public void show()
{
Console.WriteLine("边长" + a + " 面积" + getArea());
}
}
class Circle : IShape, IDisplayresult
{
decimal a;
public void initialize(decimal b)
{
a = b;
}
public decimal getPerimeter()
{
return a;
}
public decimal getArea()
{
return 3*a*a;
}
public void show()
{
Console.WriteLine("边长" + a + " 面积" + getArea());
}
}
class Program
{
static void Main(string[] args)
{
Square shape1 = new Square();
Circle shape2 = new Circle();
Console.WriteLine("输入第一个:");
decimal key1=int.Parse( Console.ReadLine());
shape1.initialize(key1);
Console.WriteLine("输入第二个:");
decimal key2 = int.Parse(Console.ReadLine());
shape2.initialize(key2);
shape1.show();
shape2.show();
}
}
}
四、实验总结
抽象类和接口容易搞混 调用函数时会遇到权限问题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!