首页 > 解决方案 > 形状类的正确层次结构

问题描述

我有一个任务,我需要为不同几何图形的类做一个很好的投影层次结构:

一开始,我做了一个抽象类Figure如下:

abstract class Figure
{
    public abstract double Area { get; }

    public abstract double GetArea();
}

我计划描述特定图形的所有其他类都将成为该图形的继承者Figure。而在我理解之前Area的作品中的想法是没有的。FigureCircumferenceArea

而且我无法决定下一步该做什么:描述另一个抽象类AbstractCircle,从 中删除这个Area属性和方法,Figure或者只是Area = 0Circumference. 或者也许只是让 theCircumference成为Circle然后 set的继承者Area = 0

逻辑上正确吗?我的意思是,对于将阅读该程序的人来说,这种逻辑是否可以理解?

我会很高兴看到提示和评论。

标签: c#

解决方案


听起来你在正确的轨道上。让我们看一下您尝试分类的不同几何图形:

  • - (这是一个形状)
  • 圆周- (这是形状的属性)
  • - (这是一个形状)
  • 矩形- (这是一个形状)
  • 三角形- (这是一个形状)

除了圆周之外,所有这些都是形状。就像area,周长是形状的属性。每个二维形状都可以有一个圆周,每个形状将以不同的方式实现。因此,您的Figure类不需要由circumference. 相反,circumference应该是您的财产abstract class

abstract class Figure
{
    public abstract double Area { get; }    
    public abstract double GetArea();
    public abstract double Circumference { get; }
}

现在,您的所有几何形状都可以实现这个类,而不会遇到您所看到的困难。


推荐阅读