泛化和继承之间的区别以及合适的例子。面向对象设计

Difference between Generalization and inheritance with suitable example. OOAD

研究泛化和继承让我感到困惑,两者给出的含义相同,好像某些东西正在被继承..但无法弄清楚实际的区别。

泛化 是我们用来表示在 UML 中将公共属性抽象为基础 class 的术语。

当我们在编程语言中实现泛化时,它被称为继承

因此,泛化和继承是相同的,只是术语不同,具体取决于使用它的上下文。

generalization/specialization 关系是在具有继承性的面向对象编程语言中实现的。

一些概括形式

  1. 层次结构: 在层次结构的情况下,共性被组织成树结构形式。在任何子树的根都可以找到该根的所有后代共有的所有属性和行为。

  2. 通用性: 在这种情况下,通用性是借助参数来表达的。各种特化根据它们为参数提供的内容来区分。例如,使用泛型可以通过 "stack of anything" 的泛化来表示 "stack" 的公共属性,其中 "anything" 表示参数。

  3. 多态性:多态性捕捉算法中的共性。多态性允许将嵌套逻辑(或 case 语句)折叠为单个 case,其中以统一方式处理不同的对象类型。

  4. 模式: 模式表达了对常见设计问题的一般解决方案(关键组件和关系)。各个组件的属性和行为仅进行了部分定义,以允许对模式进行解释并将其应用于各种情况。