泛化与专业化的区别

时间:2014-05-17 09:05:44

标签: database-design entity-relationship

我似乎无法理解其中的差异,因为即使我的讲义说它们是对立的,它们看起来与我非常相似。

如果我们以此为例: enter image description here

显然,绿色区域是概括,而红色区域是专业化。但我不明白,因为它让我觉得它们都可以被视为概括。

有人可以帮我澄清一下吗?

1 个答案:

答案 0 :(得分:1)

这取决于你如何解释盒子的方向性。泛化和专业化是彼此的确切对立,或者说是同一枚硬币的两面。泛化是指获取一堆类,提取它们的共享属性并将它们放在超类或基类中的过程(术语取决于您最喜欢的编程语言)。专业化是指将单个类别拆分为两个或多个彼此不同的实例的过程。

在您的示例中,如果您的数据模型是以Person类开始的,那么稍后您会发现,谈论“Persons”对于您的目的来说过于通用。然后介绍4种不同类型的人员,即学生,总参谋部,讲师和导师,所有这些人都具有与人相同的属性。此过程称为专业化。如果那时你决定其中3种类型共享一些相同的属性,并引入另一种类型来处理它,那么该过程如果被称为泛化。

但是在一天结束时,这两个术语都代表了对象之间的继承关系。你可以说X是Y和Z(泛化)的父,你可以说Y和Z是X的子(特化)。