【问题标题】:Polymorphism and Genaralization in UMLUML 中的多态性和泛化
【发布时间】:2018-07-19 14:08:23
【问题描述】:

多态和泛化有什么区别。我看到它们在 UML 中看起来很相似。他们是一样的吗?

【问题讨论】:

    标签: oop object polymorphism uml generalization


    【解决方案1】:

    让我们看看牛津词典:

    概括 | ˌjen(ə)rələˈzāSH(ə)n |

    名词

    从具体案例推论得出的一般性陈述或概念:他正在做出全面的概括。

    • 概括的作用:这样的轶事不能作为概括的基础。

    UML 有一个图形表示,它是一条朝向一般类的带有开放三角形的单线。

    多态性 | ˌpälēˈmôrfizəm |

    名词

    以几种不同形式发生的条件:人类认知的复杂性和多态性。

    [...]

    计算一种编程语言的特性,它允许例程在不同时间使用不同类型的变量。

    这是对泛化的某种使用。如果你有一个抽象类Animal,它有一个操作sound(),并且你有这个类的不同专业化(与泛化相反)(例如一个具体类CatDog),那么你可以对待多态Animal 通过调用sound()。如果你有一个Cat,它会喵喵叫,如果你有一个Dog,它会吠叫。

    【讨论】:

      【解决方案2】:

      我假设您的问题涉及面向对象编程的泛化和多态性,例如 Java。

      泛化是指一个类可以分解行为,子类可以从这些行为中受益。超类概括了这些行为,相反,子类专门化了这些行为。

      由于一个对象可以被看作是通用类或特殊类(通过转换这个对象),我们说这个对象是polymorph。在运行时,多态性会影响方法调用的选择:如果两个超类和特化类都有相同方法的两个实现,则程序应该在这两个实现之间进行选择。

      因此,多态性更多地与在运行时我们必须选择对象的性质有关,而泛化更多地与行为的继承和分解的概念有关。

      您可以查看这些lecture notes 以获得更多解释和示例。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-10-30
        • 1970-01-01
        • 2015-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-01
        相关资源
        最近更新 更多