UML抽象类?
所以我目前正在自学UML,我参加了一个在线测验来帮助加强我对它的理解 其中一个问题是: 如何使用UML2类图对以下情况建模: “有多种不同的鸟类,例如黑鹂、画眉, 还有椋鸟。” 两个可用选项是:UML抽象类?,uml,abstract-class,Uml,Abstract Class,所以我目前正在自学UML,我参加了一个在线测验来帮助加强我对它的理解 其中一个问题是: 如何使用UML2类图对以下情况建模: “有多种不同的鸟类,例如黑鹂、画眉, 还有椋鸟。” 两个可用选项是: 顶部的图表是正确的(我理解原因),但是底部的图表是不正确的。为什么会这样?由于这三个bird继承自抽象类bird并符合任何抽象方法,它们不都是bird吗?UML2.5规范在第。98 分类器的isAbstract属性为true时,指定分类器是抽象的,即没有直接实例:抽象分类器的每个实例都应是其某个专门化
顶部的图表是正确的(我理解原因),但是底部的图表是不正确的。为什么会这样?由于这三个bird继承自抽象类bird并符合任何抽象方法,它们不都是bird吗?UML2.5规范在第。98 分类器的isAbstract属性为true时,指定分类器是抽象的,即没有直接实例:抽象分类器的每个实例都应是其某个专门化的实例 因此,无论
Bird
是否被关键字abstract
修饰,都会导致不能/实例化它的限制。如果你需要一个Bird
实例,就把它放在一边。如果你想创建一个动物索引,你可能会有抽象鸟
,它告诉你需要在鸟的描述中包含什么。但你不能单独描述它
在您的例子中,两个图表通常都是“正确的”。这取决于你没有正确解释的上下文。您可以同时使用这两种方法来满足需求,因为不存在不实例化
Bird
的需求,UML2.5规范如第页所述。98
分类器的isAbstract属性为true时,指定分类器是抽象的,即没有直接实例:抽象分类器的每个实例都应是其某个专门化的实例
因此,无论Bird
是否被关键字abstract
修饰,都会导致不能/实例化它的限制。如果你需要一个Bird
实例,就把它放在一边。如果你想创建一个动物索引,你可能会有抽象鸟
,它告诉你需要在鸟的描述中包含什么。但你不能单独描述它
在您的例子中,两个图表通常都是“正确的”。这取决于你没有正确解释的上下文。您可以同时使用这两种方法来满足需求,因为不需要您不实例化
Bird
我认为有两种可能的答案:
就我个人而言,我认为我应该放弃#2 1(这是一个错误,谁在乎呢?),把重点放在#1上,如果我从事鸟类行业,这一点更为重要。我认为有两个可能的答案:
就我个人而言,我认为我应该放弃#2一(这是一个错误,谁在乎?),把注意力集中在#1上,如果我从事鸟类行业,这一点更为重要。测验中的要求是: 有多种不同的鸟类,如黑鸟、画眉和椋鸟 但它并没有说明你应该掌握哪些关于鸟类的信息。所以我的第一个假设是用户只对类型感兴趣 UML图: 是满足此要求的有效解决方案。 根据您对需求的看法,测验中的两个选项也是有效的解决方案。该需求给出了三个示例,这三个示例在两个解决方案中都是显式建模的。“例如”意味着可能还有其他鸟类,第一种解决方案更能描述这一事实。在第二种解决方案中,示例列表中没有“Bird”的实例 但是这个解决方案只有在您可以有一些未显示的属性和操作的情况下才有意义——至少要跟踪bird类型——在大多数实现环境中,从类名中检索它是非常尴尬的 就我个人而言,我不认为这是一个很好的方式来解释继承的例子,如在您的测试。继承在实现中代价高昂(例如,在大多数编程语言中,每个继承的类都有单独的源代码文件),这种代价应该会给您带来一定的好处。当要描述的事物在属性和行为上不同,并且需要不同的实现时,通常会出现这种情况。“黑鸟”和“蓝鸟”可能只是颜色不同(颜色属性是鉴别器)。IMHO在这种情况下,最好有: 比
测验中的要求是: 有多种不同的鸟类,如黑鸟、画眉和椋鸟 但它并没有说明你应该掌握哪些关于鸟类的信息。所以我的第一个假设是用户只对类型感兴趣 UML图: 是满足此要求的有效解决方案。 根据您对需求的看法,测验中的两个选项也是有效的解决方案。该需求给出了三个示例,这三个示例在两个解决方案中都是显式建模的。“例如”意味着可以