Booch给出了OOD的4个主要概念(原则)(参见他的著作“面向对象的分析和设计及其应用程序”):
通常我们会遇到以下4种情况:
这些是等同的吗?我应该把模数理解为多态性的另一个术语吗?根据布奇的定义,我没有那种感觉:
模块化是将系统分解成一组内聚和松散耦合模块的特性。
据我所知,模块就像Java包。我不知道这是不是布奇的意思。
发布于 2016-04-07 20:21:13
您在第一个列表中提到的OO原则是程序设计的指南。(除了这些,还有其他的;实心
OO原则是思想的集合,也是OO思维的一部分;理解OO原则,如抽象、封装和模块化,将帮助您在面对在代码中创建新类的任务时做出良好的设计决策。
其中一些决定可能包括
另一方面,多态性和继承不是原则,而是语言工具;正如for和while是语言工具一样。
虽然它们经常被认为是OO编程的定义语言特性,但这种思路有些误导,因为它们可以被用于违背许多OO原则的方法。许多非常好的OO代码都是在没有使用继承或多态性的情况下编写的。
在某些情况下,继承和多态性是有用的工具,就像do..while或switch是有用的工具一样;当然,您应该了解它们是什么以及如何/何时使用它们。
然而,将继承或多态性视为OO原则,或者认为它们是工作的“目标”是错误的。现实情况是,它们可以而且经常被滥用,导致错误的代码(通常是程序员认为继承的任何使用都是好事,或者将继承视为代码重用的工具)。
发布于 2016-04-07 13:18:23
模块化和多态不是一回事。
多态允许您引用某种类型的接口(我在语言无关的意义上使用这个词),而无需知道或关心(耦合到)实现。它允许您通过更改使用的类型/实现来修改代码的行为。
正如您在引用中所述,模块化是衡量您的代码块划分得有多好的一种度量。粗略地说,如果您的系统的不同部分可以在不中断无关的东西的情况下被交换,那么您的模块化程度就越高。它是从简单的事物中构建复杂的事物,而不是从一开始就建立一个大的复杂的东西。
这两者有时是相关的(多态是一个很好的解耦工具,可以帮助达到更高的内聚力,从而导致更高的模块化,但它们并不是一回事,一个不一定意味着另一个。
发布于 2016-04-07 13:20:14
第3条和第4条不相等。多态性和模数性在另一个答案中是非常不同的。而类继承是现代编程语言通过一种“是一种”模式来实现层次结构的一种方式。
https://softwareengineering.stackexchange.com/questions/315032
复制相似问题