在 UML 中,如果 classes 作为基础 class,我们应该将它们声明为抽象的吗?
In UML should we declare classes as abstract if they serve as a base class?
我们正在开设 UML 课程。老师说:
Every class should be declared as abstract if it serves as base class for
its derived classes.
在下图中假设我们要从class chien (Dog woof woof)
导出class german shepherd
和class labrador
。 class chien
是否有义务成为摘要class?
不一定。
这种说法不一定正确。更正确的说法是:
Every class should be declared as abstract if it cannot be instantiated without referring to a concrete derived class.
在您的示例中,Dog
和 Animal
是抽象的是有道理的,因为您有更具体的 classes 可能会填写基础 [=21] 的详细信息=]没有。
但是,当然可以有一个 class,它是具体的并且可以实例化(因此不是抽象的),但仍然可以作为另一个 class 的基础。
如果它是一种概括并且不能单独存在,那么它应该是抽象的。
看看这个情况:
上图中的Relation是抽象的。它不能单独存在。 Customer 和 Employee 是扩展 Relation 的正常 类。但是实习生是雇员。
您可以创建一个员工,也可以创建一个也是员工的实习生。
我们正在开设 UML 课程。老师说:
Every class should be declared as abstract if it serves as base class for its derived classes.
在下图中假设我们要从class chien (Dog woof woof)
导出class german shepherd
和class labrador
。 class chien
是否有义务成为摘要class?
不一定。
这种说法不一定正确。更正确的说法是:
Every class should be declared as abstract if it cannot be instantiated without referring to a concrete derived class.
在您的示例中,Dog
和 Animal
是抽象的是有道理的,因为您有更具体的 classes 可能会填写基础 [=21] 的详细信息=]没有。
但是,当然可以有一个 class,它是具体的并且可以实例化(因此不是抽象的),但仍然可以作为另一个 class 的基础。
如果它是一种概括并且不能单独存在,那么它应该是抽象的。
看看这个情况:
上图中的Relation是抽象的。它不能单独存在。 Customer 和 Employee 是扩展 Relation 的正常 类。但是实习生是雇员。 您可以创建一个员工,也可以创建一个也是员工的实习生。