复习:形状计算器
本课属于 Coddy C# 学习旅程的“面向对象编程”单元。第 30 课,共 70 课。
挑战
简单我们来构建一个图形计算器,把你学过的接口和多态知识结合起来。你将创建一个系统,通过通用接口统一处理不同的图形,展示运行时多态的强大之处。
你需要把代码组织到 4 个文件中:
IShape.cs:在Shapes命名空间中定义一个名为IShape的接口。每种图形都必须能够计算面积并描述自身。声明两个方法:CalculateArea(),返回double;以及GetDescription(),返回string。Circle.cs:在Shapes命名空间中创建一个实现IShape的Circle类。圆有一个Radius属性(类型为 double),通过构造函数设置。面积公式是Math.PI * Radius * Radius。描述应返回"Circle with radius {Radius}"。Rectangle.cs:在Shapes命名空间中创建一个实现IShape的Rectangle类。矩形有Width和Height两个属性(类型都为 double),通过构造函数设置。面积就是宽乘以高。描述应返回"Rectangle {Width}x{Height}"。Program.cs:在主文件中,使用输入值创建一个圆和一个矩形,然后将它们存储在一个由IShape引用组成的数组中。遍历数组,对每个图形,先输出描述,再输出四舍五入到小数点后两位的面积。这展示了你如何通过同一个接口处理完全不同的图形!
你将收到 3 个输入:
- 圆的半径(double)
- 矩形的宽度(double)
- 矩形的高度(double)
每个图形的输出格式如下:
{GetDescription() result}
Area: {CalculateArea() rounded to 2 decimal places}例如,如果输入是 5、4 和 6,输出应为:
Circle with radius 5
Area: 78.54
Rectangle 4x6
Area: 24.00注意,循环不需要知道当前处理的是圆还是矩形,只需调用接口方法,其余部分交给多态处理即可。这就是面向接口编程的优雅之处!
亲手试试
using System;
using Shapes;
class Program
{
public static void Main(string[] args)
{
// 读取输入值
double circleRadius = Convert.ToDouble(Console.ReadLine());
double rectWidth = Convert.ToDouble(Console.ReadLine());
double rectHeight = Convert.ToDouble(Console.ReadLine());
// TODO: 用给定的半径创建一个 Circle 对象
// TODO: 用给定的宽度和高度创建一个 Rectangle 对象
// TODO: 创建一个包含这两种形状的 IShape 数组
// TODO: 遍历数组,对每个形状执行以下操作:
// - 使用 GetDescription() 输出描述
// - 输出 "Area: ",然后输出 CalculateArea() 的结果,保留 2 位小数
}
}
面向对象编程中的所有课
自己练习: C# 在线编译器