面向对象分析与设计的原则


发布日期 : 2017-01-20 01:10:18 UTC

访问量: 743 次浏览

面向对象GIS是在面向对象技术的基础上发展而来,如前所述, 理解面向对象,必须理解几个关键术语, 如对象、消息、方法,类、子类、实例,抽象、继承、封装和多态。 以地图模型为基础的GIS,是从概念模型到逻辑模型转换上的改进。 面向对象思想则推进GIS发展表现在另一个抽象层次上, 是从我们怎样看待这个世界的外部模型, 到怎样表示和关联对象的概念模型。 与以地图模型为基础的GIS比较,面向对象GIS优势是易于扩充。

系统分析员可以利用一些通用原则处理系统分析和设计的复杂性。 抽象、封装或信息隐藏、模块化和层次,是面向对象的分析、设计和编程中最基本的、可行的原则。

(一)抽象

抽象是解决复杂性的一种基本方法。抽象是一种突出重点、去除细节的总结。 抽象定义为“系统的一种简化的描述或规格说明, 强调系统的某些细节或特性而忽略另一些细节或特性。 一个好的抽象就是强调重要的细节而忽略非实质性的细节”。 GradyBooch的定义是“抽象表示一个对象与其他所有对象相区别的基本特征”。 抽象聚焦于对象外观,可用来区分对象的基本行为和它的实现。 为给定问题域指定正确的抽象集,是面向对象设计的核心问题。

(二)封装或信息隐藏

抽象和封装是两个互补的概念:抽象着重于对象的可观察行为, 而封装着重于隐藏这种行为的实现细节,通常, 对象的结构和方法实现都是隐藏的。为了抽象能起作用, 实现必须封装。在实际中,每个类必须有两部分:接口和实现。 类的接口描述它的外观,类的实现包含抽象的表示法及得到所需行为的细节操作。 GradyBooch定义封装为:划分抽象的结构和行为的过程,封装用来分离抽象的接口及其实现。

(三)模块化

模块化是指将程序分成若干模块。这些模块可独立编译,但与其他模块又有联系。 C/C++中将模块接口放在后缀为.h的文件中,模块的实现放在后缀名为.c的文件中。 为给定的问题确定合适的模块集几乎与确定恰当的抽象集一样困难。 模块充当一个类和对象的物理容器。 系统开发人员可以将在逻辑上相关的类和对象放到同一个模块中, 只显示出那些其他模块绝对要看到的要素。

(四)层次

层次是抽象的排列或排序。抽象可以帮助我们抽取实体或问题的基本特征, 封装隐藏了抽象的内部视图,模块化为我们提供一种方法来聚集相关的抽象, 但这些仍不够。一个抽象集合通常构成一个层次,通过识别设计中的这些层次, 可以大大简化对问题的理解。继承是面向对象系统的最基本要素, 代表了一个抽象的层次。从语义上讲,继承表明了“是一个”的关系, 例如,熊“是一种”哺乳动物,房子是“是一种”有形资产。 因此继承表示一种概括/具体层次。