OOP & OOD 及其模型 来源:http://www.elementsoft.com作者: 爱乐门 面向对象的编程方法OOP是九十年代才流行的一种软件编程方法。它强调对象的“抽象”、“封装”、“继承”、“多态”。 我们讲程序设计是由“数据结构”+“算法”组成的。从宏观的角度讲,OOP下的对象是以编程为中心的,是面向程序的对象。我们今天要讲的OOD是面向信息 的对象,是以用户信息为中心的。 面向对象的编程 OOP 在分析OOD之前,先让我们回顾以下OOP技术的历史。 面向对象技术最初是从面向对象的程序设计开始的,它的出现以60年代simula语言为标志。80年代中后期,面向对象程序设计逐渐成熟,被计算机界理解和接受,人们又开始进一步考虑面向对象的开发问题。这就是九十年代以Microsoft Visual系列OOP软件的流行的背景。 传统的结构化分析与设计开发方法是一个线性过程,因此,传统的结构化分析与设计方法要求现实系统的业务管理规范,处理数据齐全,用户能全面完整地其业务需求。 传统的软件结构和设计方法难以适应软件生产自动化的要求,因为它以过程为中心进行功能组合,软件的扩充和复用能力很差。 对象是对现实世界实体的模拟,因面能更容易地理解需求,即使用户和分析者之间具有不同的教育背景和工作特点,也可很好地沟通。 区别面向对象的开发和传统过程的开发的要素有:对象识别和抽象、封装、多态性和继承。 对象(Object)是一个现实实体的抽象,由现实实体的过程或信息牲来定义。一个对象可被认为是一个把数据(属性)和程序(方法)封装在一起的实 体,这个程序产生该对象的动作或对它接受到的外界信号的反应。这些对象操作有时称为方法。对象是个动态的概念,其中的属性反映了对象当前的状态。 类(Class)用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 由上分析不难看出,尽管OOP技术更看中用户的对象模型,但其目的都是以编程为目的的,而不是以用户的信息为中心的,总想把用户的信息纳入到某个用户不感兴趣的“程序对象”中。 Java简介及其与OOD的关系 Java是一个由Sun发展的语言和其相关的发展环境,它是一个新的面向对象式的OOP语言。它有内建的能力以发展Client/Server结构下 的程序。但它有别于其它的OOP语言,它的Applet又具有OOD的特性。以下简要介绍一下。 Java另一个重要的特性是它所产生的结果文件可以在很多不同的操作系统,甚至不同的机器上执行。 但由于Web的受欢迎,Java这个语言于是被拿来做为HTML语法扩充的工具。Web受欢迎的程度可以说是非常空前的,主要的原因除了 Internet的风行外,最重要的是它支持了图形显示的能力。但就因为Web受欢迎的速度太快,HTML的发展根本跟不上用户的需求,所以主要的浏览器 客户程序供应商netscape等都不约而同的为HTML加上一些扩展,希望能引导HTML更高规格的走向。且不同的用户或供应商对于HTML应该提供哪 些功能常有很不同的意见,例如出版业者就很希望为HTML加上更精细的片面控制命令,使得HTTML可以成为一个电子出版的基础。 而且如果我们毫无限制的为HTML加上各种不同的功能,浏览器本身一定会成为一个怪物。其实现在的Netscape已经很可怕了。我们后面要讲的 VDML可以改变这种局面,由于它采用了“面向对象的信息”技术,它的应用领域几乎是不受限制的。从3.4节的图示可见其与VDML及HTML的关系。 以下是Java的几大特征: 面向对象式的程序语言 面向网络分布式的语言 面向多平台的 可直译也可编译执行 支持多线程程序 是强韧且安全的 是简单且具有高执行效率的 程序系统的基本结构 IPO 我们知道程序系统的基本结构是IPO结构,即“输入数据Input”“处理数据Process”“输出数据Output”,然后再传到下一部,形成一 个不断的信息流,直至形成我们的最终产品,可以想象在未来的信息化社会中,我们的产品也可能仍是一个“信息文件”。 下图比较直观地说明了IPO模型下的信息处理过程。 上端的VDML是数据处理前的可视化数据。它可由具备VDML功能的浏览器观察。 主处理模块是由一系列的既各自独立又能协同工作,也可能是分布的Java Application组成。 下端的HTML是我们已知的面向用户信息的超文本。 由图可知,VDML/HTML两端均可调用Java Applet。充分说明是面向对象的信息。 面向对象的信息 OOD 面向对象的信息从前面的叙述中我们可以有所体会。它主要有两个特征:以对象化的信息为中心,信息是封装的。 传统的方法(Traditional Method),正如我们在2.3节中讲述的那样,每种类型的信息你都得学习它的工具的使用方法,这是我们今天这个信息时代所不能忍受的,也是一种人力资 源的浪费。从以下的图示里也可以看出,它是以纵向的老式IPO“大而全”为特征的。 OOD技术以用户信息为中心,对用户的信息无强求,无须刻意对信息规格化,可以是多媒体的超文本。以用户的自然的信息流为基础,更加人性化。用户信息 个人自理,各司其职,从而实现了对象化的信息,实现了信息的封装。 从上图里,我们可以看出 HTML和VDML分别从两端侵蚀着“老的程序P”,而以Java为代表的 VEPL(Visual Elementor Programming Laguage)语言也在蚕食着它的领地。 OOD主要由以下三部分组成: VDML 可视化数据标记语言 Java VEPL 可视化元件编程语言 HTML 超连接超文本标记语言 可视数据标记语言VDML 从以上的图示中,我们大致可以看出VDML的作用及位置。我们还可以从另外一个角度看 VDML。 ASCII-More ASCII文本浏览器 .txt 文件 Mosaic 超连接的文本浏览器 .mos 文件 HTML-Navigator 超连接的超文本浏览器 .html, .gif, ...多媒体文件 VDML-Elementor 可视化的数据标记语言 ext.vdml,.ext 可视化数据耦合文件 从这个角度出发,我们不难看出VDML是一种活的动态的可视化数据标记语言。它可以动态的从网上的URL中下载.VDML耦合定义文件,然后再据此“可视化”该数据。 我们知道现有的浏览器是支持多种多媒体文件,只是要加载这些关联程序。从这个意义上讲,现有浏览器都是OOD的,只是只有VDML才是最开放的,最系统化的。 OOD 的几种现实产品 VRML 是虚拟现实标记语言Virtual Real Markup Language的缩写。它是由SGI公司提出的。它是四维空间的模型标记语言,主要用于购物及模仿现实世界,以及真实世界的交互作用。 OLE 及 OCX 是对 HTML 可处理的文件类型的扩充。如 .EPS .AVI 等媒体文件的处理即是采用此种方法。现今的 ActiveX 更是得到了系统的发展。 但所有这些方法,除了你得作这些 OLE/OCX 程序外,你还得在你的机器上安装这些“补丁”程序,牺牲资源自不必说。用户也无法扩充自己的OOD信息。所以,VDML 必将大行其道。