|
|
1
29
(对象的)行为:一组动作的集合,对它们何时发生有一组约束。
http://www.cs.umd.edu/class/spring2003/cmsc838p/Design/criteria.pdf
然而,根据上述ISO定义,对象是我想建模的任何东西。因此,类可以封装在包中,只要其中一些类对包接口有贡献(即包的公共类),而另一些类是信息隐藏的(包中的私有类)。
http://www.research.ibm.com/journal/sj/382/stevens.pdf 正如该论文所说,用从未改进过的话来说,最小化模块之间的连接也最大限度地减少了变化和错误传播到系统其他部分的路径,从而消除了灾难性的涟漪效应,即一个部分的变化会导致另一个部分的错误,从而需要在其他地方进行额外的更改,导致新的错误等。
依赖于特定修改类的类比不依赖于修改类的类别受到影响的概率更高。 修改后的类可能带来的最大潜在负担是依赖它的所有类的影响。
因此,减少系统中所有类之间的最大潜在依赖数可以降低对特定类的影响导致其他类更新的概率,从而减少所有更新的最大潜在负担。
|
|
|
2
9
最终,如果没有一定程度的封装,很难想象以一致和可维护的形式设计一个复杂的系统。 |
|
|
3
5
|
|
|
4
4
隔离复杂性 IMO是任何设计的主要目标吗:将功能封装在接口后面 OO为此提供了各种机制——oyu提到的两种机制:
|
|
|
6
3
|
|
|
7
2
OOP的机制很容易用简单的C语言通过结构和函数指针来实现。你甚至可以通过这种方式获得一点OOP的感觉。然而,在这样的环境中,面向对象编程(OOP)的习惯用法并不那么常见。当面向对象编程有实际的语言支持时,范式的表现力就会显现出来,语言实现想法的方式对“说”什么以及如何表达有非常真实的影响。例如,请参阅lisp、python、ruby等中使用closure/lambdas的代码差异。
|
|
|
8
1
封装与多态性相结合。大多数面向对象编程语言中的类实现一个或多个接口的能力对我的软件开发产生了最大的影响。此功能允许我精确定义两个对象之间的交互。
|
|
|
9
1
|
|
|
10
0
通过分析一块砖来分析房子。
继续类比: 为了最大限度地利用砖块,只需将它们放在一起。这 这同样适用于类和对象。 那里 are a lot of design patterns 其中一些模式甚至是对第三段的回答
|
|
|
11
0
四人帮 @Phil,如果我没理解错的话,你提到的区别在于程序调用数据/方法的方式:在oo中,首先有一个对象/实例,然后通过对象调用对象的数据/方法;在函数式中,方法是直接调用的。
|