面向对象方法为何有利于软件复用?
今天突然想到这个问题,觉得应该写点东西!
我认为应该是下面这些吧:
对象与类:用对象类作为系统的基本构成单位,符合可复用构件应具备的主要特性:
完整性——类的属性与服务完整地表达了事物的静态特征和动态特征。
独立性——类与外部的事物之间有明确的界限和较少的接口。
可标识性——类的命名与问题域中的事物概念吻合。
一般性——对象类是对实际事物的映射,客观性强。当其它系统中遇到同类事物时,用同样的对象类进行描述的可能性很大。
抽象:抽象意味着忽略事物的某些差异而提取其共同特征。OO方法的这一原则也正是定义可复用构件时所需遵循的。一个软件构件只有体现某种程度的抽象才能被用于细节互异的多个系统。
封装:把对象的属性与服务结合为一个完整的实体,屏蔽了对象的内部细节,对外之保留有限的接口。因此,它使对象类具有完整性、独立性等有益于复用的性质。
继承与一般-特殊结构:体现了不同层次的抽象。结构中的类适应于不同的复用范围。低层的类含有较多的信息;高层的类可在更广的范围内复用。根据这一原理,在系统开发中可以制造一些对其它系统可复用的一般类构件。继承也是构件的一种有效使用方式:可以把构件作为一般类使用,通过对它的继承而定义系统中的特殊类。
聚合与整体-部分结构:运用聚合原则,可以把一个难于复用的大的软件成分处理为由若干部分对象构成的整体对象,使其中的某些部分对象成为可复用性强的构件。聚合也是实现复用的一种有效方式,例如OLE就是把可复用的构件对象通过链接或嵌入而聚合为新的对象和新的应用。
粒度控制:运用的比对象和类粒度更大的概念(例如“主题”、“子系统”、“类簇”或其它类似概念),可把若干类组合为一个较大的软件成分。因此,用OO方法得到的可复用构件,不局限于对象类一种形式,也可以是由若干类组成的较大的构件。
多态性:对象的多态性使对象在不同的使用条件下可以具有不同的语义。以这样的对象类、结构或主题作为可复用构件,将符合更多应用系统需求,因此具有较强的适应性。