面向对象分析与设计——对象模型


2           对象模型

 对象模型包括:抽象、封装、模块化、层次结构、类型、并发和持久

 

2.1   对象模型的演进

OO建立在以前技术的最佳思想之上。两大趋势:小规模→大规模;高级程序设计语言;

2.1.1    程序设计语言的换代

第一代(1954~1985):科学和工程应用,公式计算

FORTRANⅠ: 数学表达式

第二代(1959~1961):算法抽象

FORTRANⅡ:子程序、单独编译
ALGOL60:块结构、数据类型
COBOL:数据描述、文件处理
Lisp:列表处理、指针、垃圾收集,基于λ演算的函数式编程语言,在CAD软件上应用广泛(AUTOCAD二次开发用),括号+语法树;程序看作数据;          

第三代(1962~1970):数据抽象

Pascal:ALGOL60的简单继承者
Simula:类、数据抽象

代沟(1970~1980)

C:高效、可执行程序小
FORTRAN77:ANSI标准

OO兴盛(1980~1990)

Smalltalk:纯OO,在Smalltalk中所有的东西都是对象,或者应该被当作对象处理。例如表达式:2 + 3,应当被理解为:向对象2发送消息+,参数为对象3。                             对Objective-C、Java 、Ruby等有推动;开发思想:模式、XP、重构等
C++:从C和Simula发展而来

FrameWork的出现(1990~现在)

VB,Java,Python,J2EE,.NET,C#,VB.NET

 

2.1.2    第一代和第二代早期程序设计语言的拓扑结构


基本物理构成单元:子程序(对COBOL而言,称之为段落)
物理结构 = 全局数据 + 子程序

2.1.3    第二代后期和第三代早期程序设计语言的结构


子程序作为一种抽象机制
→ 开始发明支持参数传递机制的语言
→ 奠定了结构化设计的基础
在语言上支持嵌套子程序,并在控制结构和声明的可见性方面发展
→ 出现了结构化设计方法,利用子程序作为基本构建块 

2.1.4    第三代后期程序设计语言的结构


大规模编译 → 独立开发同一程序的不同部分 → 独立编译的模块
此阶段,模块只是用于最有可能同时改变的子程序分组,非抽象机制
虽支持模块化,但鲜有规则要求模块间接口的语义一致性;
对数据抽象和强类型支持得不好,错误只有在运行期才能被检测出来。

2.1.5    基于对象和面向对象的程序设计语言的结构

              

                       中小型应用                                                   大型应用

 

构建块是模块,表现为逻辑上的一组类或对象,而非子程序。
过程、函数是动词,数据是名词 → 面向过程(procedure-oriented)围绕动词,OO围绕名词
中小型OO应用的物理结构表现为一个图,而非树;几乎无全局数据;数据和操作在单元中
对巨型编程,对象模型在规模上扩展;一组抽象可构建在另一组抽象层智商;一组抽象协作,实现更高层行为;即第一章中描述的复杂性的组成方式;

 

2.2   对象模型的基础

对象模型是普适的(UI/DB/computer architectures);
算法分解处理大量复杂问题时

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值