4

我正在设计一个 Java 应用程序,承包商将使用它来绘制住宅图表。目前,我处于建模阶段并正在创建 UML 类图。我的问题是我不确定为我的一些对象建模的理想方法。用户将“绘制”房屋的元素,如墙壁、灯光、门、窗等……每个元素都有一组初始的必需属性。基于这组初始所需属性,该元素将需要一组不同属性的子集。

我将以我的 Structure 类为例。用户将在图表上“绘制”的一件事是结构。结构的两个主要属性是结构类型和组合。组成很简单。客户端提供了用户将选择的可能组合列表,因此我将这些数据放在组合框中,然后从下拉列表中进行选择。但是,根据结构类型,将需要其他属性。

IE) 如果 StructureType = Wall,则需要长度和高度。如果 StructureType = Ceiling,则长度、宽度和高度都是必需的。

这个例子被简化了,可能看起来微不足道,但是子属性可以比这更复杂,而且有很多。其中一些会产生更多的子属性。然而,尽管过度简化,它给出了我试图解决的问题的一个非常具体的想法。

我的想法是我应该有扩展结构的子类,每个子类都有一组每个子类独有的属性。IE) 类 Wall 扩展类 Structure,并包含一组 Walls 独有的成员变量。

一些关于我是否清楚地考虑这一点的建议将不胜感激,如果我不在基地,我们将不胜感激。同样,如果我在决策中遗漏了一些考虑,欢迎提出一些建设性的批评。

4

2 回答 2

2

我会进一步扩展您的想法。

而不是 Properties 是 Structure 的一部分,我会把它们放在一边,有一个接口StrucutreProperties,它具有所有常见的属性,如getLength(), getWidth()

然后就像你说的那样Wall extends Structure,在这种情况下Wall会有WallProperties extends StructureProperties 接口。

在的情况下Ceiling extend StructureProperties,将有CeilingProperties extends StructureProperties并添加getBreadth()到它。

于 2012-06-06T19:03:21.970 回答
1

是的,你的想法是正确的。

子类化是一种定义子类中唯一属性的方法,同时继承父类的属性。

于 2012-06-06T18:53:44.900 回答