实验二 面向对象程序设计
一、实验目的
1. 理解类的定义、继承等面向对象的的基本概念;
2. 掌握C#语言定义类及其各种成员(字段,属性,方法)的方法;
3. 掌握方法覆盖的应用;
4. 掌握接口的定义和实现方法。
二、实验要求
根据要求,编写 C#程序,并将程序代码和运行结果写入实验报告。
三、实验内容
1. 设计编写一个控制台应用程序,练习类的继承。
(1) 编写一个抽象类 People,具有”姓名”,”年龄”字段,”姓名”属性,Work 方法。
(2) 由抽象类 People 派生出学生类 Student 和职工类 Employer,继承 People 类,并
覆盖Work 方法。
(3) 派生类 Student 增加”学校”字段,派生类 Employer 增加”工作单位”字段。
(4) 在 Student 和 Employer 实例中输出各自不同的信息。
源码:
using System;
abstract class People
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
public int Age { get; set; }
public abstract void Work();
}
创建学生类 Student 和职工类 Employer
class Student : People
{
public string School { get; set; }
public override void Work()
{
Console.WriteLine("我是学生,我的工作是学习。");
}
}
class Employer : People
{
public string Company { get; set; }
public override void Work()
{
Console.WriteLine("我是职工,我的工作是……(填写具体工作内容)。");
}
}
创建实例并输出各自不同的信息
class Program
{
static void Main(string[] args)
{
Student student = new Student { Name = "小明", Age = 18, School = "ABC 学校" };
Employer employer = new Employer { Name = "张三", Age = 30, Company = "XYZ 公司" };
Console.WriteLine("学生信息:");
Console.WriteLine("姓名:" + student.Name);
Console.WriteLine("年龄:" + student.Age);
Console.WriteLine("学校:" + student.School);
student.Work();
Console.WriteLine("\n职工信息:");
Console.WriteLine("姓名:" + employer.Name);
Console.WriteLine("年龄:" + employer.Age);
Console.WriteLine("工作单位:" + employer.Company);
employer.Work();
}
}
2. 编写一个控制台应用程序,输入正方形边长或者半径,计算其周长和面积并输出。
(1) 编写两个接口,接口 IShape 包含三个方法:initialize, getPerimeter, getArea。分
别进行初始化、获取边长和面积,其返回值均为 decimal。接口 IDisplayresult 显示计算结果。
(2) 编写两个类,Square(正方形)和 Circle(圆形),实现 IShape 和 IDisplayresult
接口。
源码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Lab06_2
{
public interface Ishape
{
void initialize();
decimal getPerimeter();
decimal getArea();
}
public interface IDisplayresult
{
void showResult();
}
public class Square : Ishape, IDisplayresult
{
decimal l;
public void initialize()
{
Console.WriteLine("请输入正方形边长:");
do
{
l = decimal.Parse(Console.ReadLine());
if (l <= 0)
{
Console.WriteLine("输入数据错误,请重新输入:");
}
} while (l <= 0);
}
public decimal getPerimeter()
{
return 4 * l;
}
public decimal getArea()
{
return l * l;
}
public void showResult()
{
Console.WriteLine("该正方体的周长:{0}", getPerimeter());
Console.WriteLine("该正方体的面积:{0}", getArea());
}
}
public class Circle : Ishape, IDisplayresult
{
static decimal pi = 3.14M;
decimal r;
public void initialize()
{
Console.WriteLine("请输入圆形的半径:");
do
{
r = decimal.Parse(Console.ReadLine());
if (r <= 0)
{
Console.WriteLine("输入数据错误,请重新输入:");
}
} while (r <= 0);
}
public decimal getPerimeter()
{
return 2 * r * pi;
}
public decimal getArea()
{
return pi * r * r;
}
public void showResult()
{
Console.WriteLine("该圆形的周长:{0}", getPerimeter());
Console.WriteLine("该圆形的面积:{0}", getArea());
}
}
class Program
{
static void Main(string[] args)
{
int i;
Square sq = new Square();
Circle cr = new Circle();
do
{
Console.WriteLine("请选择 1:正方形 2:圆形 3:退出");
i = int.Parse(Console.ReadLine());
switch (i)
{
case 1: sq.initialize(); sq.showResult(); break;
case 2: cr.initialize(); cr.showResult(); break;
case 3: Console.WriteLine("感谢您的使用!!!"); break;
default: Console.WriteLine("输入数据错误,请重新输入:"); break;
}
Console.Write("\n请按任意键继续...");
Console.ReadKey();
Console.Clear();
} while (i != 3);
}
}
}
四、实验总结
通过完成这个实验,你应该对类的定义、继承、成员的使用(字段、属性、方法)、方法覆盖和接口的实现有了更深入的了解。这些概念和技术是面向对象编程中非常重要的组成部分,对于构建灵活、可扩展和可维护的应用程序至关重要。继续进行练习和实践,不断加强对这些概念和技巧的理解和应用。
标签:11,12,Console,decimal,Employer,void,WriteLine,打卡,public From: https://www.cnblogs.com/yunbianshangdadun/p/17827389.html