Uml GOF书中的抽象类

Uml GOF书中的抽象类,uml,abstract,Uml,Abstract,我对四人小组的《设计模式:可重用面向对象软件的元素》一书中的类图有一个问题 在这个图中,有一个名为Graphic的抽象类,其中包含一些抽象方法(Draw、Add等)。还有一个名为Picture的子类重载Graphic类的抽象方法。我完全理解这一点 我的问题是,在其他子类(直线、矩形和文本)中,没有提到重写Graphic类的抽象方法。它只是为了简单而被忽略?如果它们被忽略了,我知道不需要在Line、Rectangle或Text类中使用“add”、“remove”和“getChild”方法。很明显

我对四人小组的《设计模式:可重用面向对象软件的元素》一书中的类图有一个问题

在这个图中,有一个名为Graphic的抽象类,其中包含一些抽象方法(Draw、Add等)。还有一个名为Picture的子类重载Graphic类的抽象方法。我完全理解这一点

我的问题是,在其他子类(直线、矩形和文本)中,没有提到重写Graphic类的抽象方法。它只是为了简单而被忽略?如果它们被忽略了,我知道不需要在Line、Rectangle或Text类中使用“add”、“remove”和“getChild”方法。很明显,有些事情我不明白

我知道这本书使用C++和SimultTalk中的例子,也许在这些语言中,抽象方法不像java那样(子类必须重写父抽象方法)。


感谢您的帮助。

在Java的子类中不需要重写抽象方法;这样的子类再次被认为是抽象的。因此,在这个示例中,Line、Rectangle和Text都是抽象子类。

在Java的子类中不需要重写抽象方法;这样的子类再次被认为是抽象的。因此,在这个示例中,Line、Rectangle和Text都是抽象子类。

在Java的子类中不需要重写抽象方法;这样的子类再次被认为是抽象的。因此,在这个示例中,Line、Rectangle和Text都是抽象子类。

在Java的子类中不需要重写抽象方法;这样的子类再次被认为是抽象的。因此,在这个示例中,Line、Rectangle和Text都是抽象的子类。

我也觉得它由于某些原因被忽略了,或者是一个错误。因为如果线条、矩形和文本是抽象类,那么类名应该用斜体图形表示。他们可能因为自己的原因而忽略了这些类的Add、Remove和GetChild操作。

。因为如果线条、矩形和文本是抽象类,那么类名应该用斜体图形表示。他们可能因为自己的原因而忽略了这些类的Add、Remove和GetChild操作。

。因为如果线条、矩形和文本是抽象类,那么类名应该用斜体图形表示。他们可能因为自己的原因而忽略了这些类的Add、Remove和GetChild操作。

。因为如果线条、矩形和文本是抽象类,那么类名应该用斜体图形表示。由于他们的原因,他们可能省略了这些类的Add、Remove和GetChild操作。

我在书的后面几页找到了答案。他们给出了两种实现此UML所指的复合模式的方法

  • 在所有叶子类中添加Add、remove、getChild方法(第行, 矩形和文本),并使它们不执行任何操作,或者在 它们被使用(例如,如果你想在文本中添加子元素,你是被禁止的)

  • 从图形中删除抽象方法add、Remove、getChild 类,并将具体方法保留在Picture类(composite)中

  • 我个人认为,第二条道路是正确的。这样做更简单,而且不会造成混乱


    谢谢你的回复

    我在书的后面几页找到了答案。他们给出了两种实现此UML所指的复合模式的方法

  • 在所有叶子类中添加Add、remove、getChild方法(第行, 矩形和文本),并使它们不执行任何操作,或者在 它们被使用(例如,如果你想在文本中添加子元素,你是被禁止的)

  • 从图形中删除抽象方法add、Remove、getChild 类,并将具体方法保留在Picture类(composite)中

  • 我个人认为,第二条道路是正确的。这样做更简单,而且不会造成混乱


    谢谢你的回复

    我在书的后面几页找到了答案。他们给出了两种实现此UML所指的复合模式的方法

  • 在所有叶子类中添加Add、remove、getChild方法(第行, 矩形和文本),并使它们不执行任何操作,或者在 它们被使用(例如,如果你想在文本中添加子元素,你是被禁止的)

  • 从图形中删除抽象方法add、Remove、getChild 类,并将具体方法保留在Picture类(composite)中

  • 我个人认为,第二条道路是正确的。这样做更简单,而且不会造成混乱


    谢谢你的回复

    我在书的后面几页找到了答案。他们给出了两种实现此UML所指的复合模式的方法

  • 在所有叶子类中添加Add、remove、getChild方法(第行, 矩形和文本),并使它们不执行任何操作,或者在 它们被使用(例如,如果你想在文本中添加子元素,你是被禁止的)

  • 从图形中删除抽象方法add、Remove、getChild 类,并将具体方法保留在Picture类(composite)中

  • 我个人认为,第二条道路是正确的。这样做更简单,而且不会造成混乱

    感谢您的回复

    是的,我认为您的回答“机械地”正确,但这是复合模式,叶子类(直线、矩形等)必须以某种方式具体化。谢谢你的回答,非常感谢。是的,我认为你是“机械地”正确的,但这是复合模式,叶子类(直线,矩形,…)必须以某种方式具体化。谢谢你的回答,非常感谢。是的,我认为你是对的