面向对象分析与设计-第一章概论
北京大学网络与信息安全研究室 刘欣
核心内容
引言
面向对象是九十年代以来计算机领域的主流技术。国家863报告指出,40年来计算机科学持续发展和产生显著效益的4个领域:计算机芯片、网络、多媒体、面向对象技术。
传统开发方法的问题
二十世纪六十年代以前:
- 软件系统较小且简单
- 编程语言简单(Fortran, Cobol)
- 崇尚程序员个人技能
- 代码面条式,含大量GOTO语句
二十世纪七十年代,Al Constantine和Ed Yourdon发明了结构化分析设计方法:功能分解法。
面向对象的基本思想
- 从现实世界中客观存在的事物出发构造软件系统
- 用对象的属性表示事物性质,用操作表示事物行为
- 属性与操作结合为一体,对外屏蔽内部细节(封装)
- 对事物进行分类(类是对象的抽象)
- 复杂对象可由简单对象构成(聚合)
- 通过继承简化系统构造
- 类具有封闭性,只有公共操作对外可见
- 对象之间通过消息通讯
- 通过关联表达类之间的静态关系
面向对象的主要概念
| 概念 | 说明 |
|---|---|
| 对象 | 系统中构成基本单位,有静态特征和动态特征 |
| 类 | 具有相同属性和操作的一组对象的集合 |
| 继承 | 特殊类拥有一般类的全部属性与操作 |
| 聚合 | 对象由其他对象作为构成部分 |
| 消息 | 向对象发出的操作请求 |
| 多态 | 同一命名可具有不同语义 |
面向对象的基本原则
- 抽象:舍弃非本质特征,抽取共同本质特征
- 封装:把属性和操作结合为独立系统单位,隐蔽内部细节
- 委托:工作从一个对象传递到另一个对象
- 分类:把具有共同性质的事物划分为一类
- 泛化(继承):类可由层次继承结构组织
- 消息通信:对象之间只能通过消息进行通讯
- 行为分析:静态行为和动态行为
- 复杂性控制:引入包的概念
面向对象方法的特点
- 从认识论角度,改变了人们认识世界的方式
- 缩小了问题域到计算机之间的鸿沟
- 有助于软件维护与复用
- 提高软件质量生产率(效率提高20%)
发展历史
- 1960s:Simula67 - 第一个引入类和继承的语言
- 1972:Smalltalk-72 - 正式使用”面向对象”术语
- 1980:Smalltalk-80 - 第一个完善的OO语言
- 1980s-90s:C++, Objective-C, Java等涌现
- 1990s:UML统一建模语言成为标准
教材与参考书
- 《面向对象分析与设计》,麻志毅,机械工业出版社
- 《UML用户指南》,邵维忠等译,人民邮电出版社
- 《设计模式:可复用的面向对象软件的基础》,GoF