快没了,大家坚持住,续5

发布时间: 2007-07-20 11:58    作者: 未知    来源: 未知    浏览:    评论

OO,OO以后,及其极限(5)


5. OO之后是什么?

  通过上节的讨论我们了解了维特根斯坦在《逻辑哲学论》一书中提出的OO的思想。即存在如下的认识链: 世界 → 事实 → 原子事实 → 对象(object)。本节我们讨论OO之后是什么这个问题。我们将从历史的和逻辑的角度来进行推理,看看能得出什么样的结论。

  一、 从软件工程的发展历史来看

  1969年NATO会议之后,“软件危机”成为人们关注的焦点。为迎接软件危机的挑战,人们进行了不懈的努力。这些努力大致上是沿着两个方向同时进行的。一是从管理的角度,希望实现软件开发过程的工程化。这方面最为著名的成果就是提出了大家都很熟悉的“瀑布式”生命周期模型。它是在60年代末“软件危机”后出现的第一个生命周期模型。如下所示。

  分析 → 设计 → 编码 → 测试 → 维护

  后来,又有人针对该模型的不足,提出了快速原型法、螺旋模型、喷泉模型等对“瀑布式”生命周期模型进行补充。现在,它们在软件开发的实践中被广泛采用。

  这方面的努力,还使人们认识到了文档的标准以及开发者之间、开发者与用户之间的交流方式的重要性。一些重要文档格式的标准被确定下来,包括变量、符号的命名规则以及原代码的规范格式。

  值得一提的是,在开发者之间、开发者与用户之间的交流方式这方面,由于Internet的出现提供了一种全新的交流手段,也产生了一种基于Internet的全新的开发方式,即OSS(Open Source Software)。 其代表作有Linux(操作系统),Apeche(web server),Sendmail(Mail server)等。OSS是一种极有前途的开发方式,借Internet发展的大潮,它势必会对整个软件开发模型产生难以估量的影响。近期的IEEE软件工程专刊将为次出一期专题特刊。1999年1月份也将举行关于Linux/OSS的国际研讨会。各家计算机公司纷纷对此作出反应,微软也意识到了来自OSS的巨大威胁,在8月底提出了一份内部保密的文件,专门提出了自己的应对策略,可谓是山雨欲来风满楼。有兴趣者请对此保持关注。

  软件工程发展的第二个方向,侧重与对软件开发过程中分析、设计的方法的研究。这方面的第一个重要成果就是在70年代风靡一时的结构化开发方法,即PO(面向过程的开发或结构话方法)。 PO是人们在用计算机世界来表达现实世界时,追求过程话、模块化、封装以及更高的抽象的结果。 人们用计算机来映射现实世界时,最低层的实现无非是靠数字电路技术产生的高电平与低电平信号。用数学的语言来表示,就是像 010101000010111 这样的二进制串。这样的抽象层次是极低的,远离了自然语言,对一般人是不可理解的。人们把这些二进制串分块定义,提出了字节、ASCII码这样的更高抽象层次的概念,使之对应于自然语言的一个个字母。在此基础再借助某种形式语言,抽象出变量、表达式、运算、语句等概念。在这个层面上,一般经过训练的程序员已经可以比较不那么痛苦地进行软件开发了。下一步的抽象就产生了PO。 在PO中,人们关注的是如何用函数和过程来实现对现实世界的模拟,将其映射到计算机世界之中。 OO是这种抽象层次不断提高的过程的自然发展结果,它采用类和对象的概念,把变量以及对变量进行操作的函数和过程封装在一起,用这种更高一级的抽象来表达客观世界。通常,一个对象包含一些属性和方法,它对应于自然语言中一个有意义的名词,描述了现实世界中的一个物体(物理实体)或概念(抽象实体)。 这个抽象层次如下图所示:

  计算机世界中的抽象层次

  *XO(X?-Oriented) 最高的抽象层次
  *OO(对象、类)
  *PO(过程、函数、变量)
  *变量、运算、表达式、语句
  *字节(4位、8位、16位、32位、64位)
  *二进制串 0101011110001 最低的抽象层次

  从上图及以上的讨论我们知道,软件工程的发展历史就是人们不断追求更高的抽象、封装和模块化的历史。OO当然不会是历史的终结。尽管不能精确得到OO之后是什么,我们至少可以推知,OO之后的XO,必然将是比OO更高一级的抽象。它所依赖的核心概念必然高于并包容对象这一概念。正如对象高于并包容了函数和变量一样。


  二、 从维特根斯坦在《逻辑哲学论》一书中的思想来看

  前面我们已经知道,维特根斯坦在《逻辑哲学论》 一书中提出了如下思想:

  *世界可以分解为事实 ( The world divides into facts.)
  *事实是由原子事实(atomic facts)组成的。
  *一个原子事实是多个对象(objects)的组合。
  *对象是简单的(基本的) The Object is simple。
  *对象形成了世界的基础。

  即: 世界---事实----原子事实----对象这样一个从整体到局部、从抽象到具体的认识之链。在这个层次中,对象作为最基本的模块,构成了整个认识大厦的基石。对象通过相互之间的复杂的关联构成了整个世界。这个观点也是面向对象理论的基石。

  上一段我们通过对计算机世界的分析得出,OO之后的发展,必将产生比OO更高一级的抽象的概念用于编程。按照维特根斯坦的思想可以很自然地得出结论:这个概念就是事实(FACT)。即面向对象之后是面向事实,OO之后是FO(Fact-Oriented)。

  那么,什么是事实(fact)?让我们再次重温一下维特根斯坦的观点。

  首先,世界是所有事实的总和。世界可以分解为事实。任一事实或者为真,或者不为真。(即事实应返回一个布尔变量,或为TRUE,或为FALSE)
  其次,那些为真的事实,是由原子事实(atomic facts)组成的。
  原子事实和简单对象的关系是这样的:一个原子事实是多个对象(object)的组合。在原子事实中,对象以某种确定的方式相连。原子事实中对象相互连接的方式即是原子事实的结构。 也就是说,原子事实是有结构的,这种结构被维特根斯坦看作是现实世界的模式(form)。

  这里,维特根斯坦提出了几个重要的概念:事实(fact)、原子事实(atomic fact)和模式(form)。

  如果我们以上的推理过程正确的话,我们将得出一个结论:面向对象(OO)之后是面向事实(FO),在面向事实(FO)的分析、设计和编程中,我们将主要围绕事实(fact)、原子事实(atomic fact)和模式(form)这些基本概念来组织我们的软件开发活动。在人们认识世界的层次结构中,这些概念是比对象(object)和类(class)更高一级的抽象。

上一篇 最后一点点,续6 下一篇 续4

TAG

Smile Big Smile Surprise Stick out tongue Wink Sad Tongue Tied Indifferent Crying Embarrassed Cool Angry Angel Devil [8-|] [:#] [:-*] [:^)] [<:o)] [|-)] Yes Beer Left Hug Music Star Time Snail Pizza Automobile Umbrella Computer Storm [mo] [8o|] [^o)] [+o(] [*-)] [8-)] Coffee No Drinks [Z] Right Hug Cake Broken Heart Gift Wilted Flower Movie Dog Idea Sleep Email Travel Paradise
呢称:

加粗 斜体 下划线 链接 图片 代码 邮件地址 引用 列表

最多只能输入100个字符

Tags

SQL 数据库 asp.net C# XML 控件 .NET教程 程序 事件 数据 安全 代码 Server 客户端 验证 数据库专栏 接口 文件 Oracle DataSet 函数 DataGrid 问题 .net return C#语言 JavaScript 服务 IIS 对象 语句 windows 继承 时间 web.config 设计 开发 参数 变量 解决 字符 ADO.net 环境 VB.Net语言 web 异常 工具 服务器 计算 实例 OLEDB Application VB Word WebService insert asp net 安装 记录

精华推荐

更多

精品下载

更多