面向对象分析与设计-第一章概论

北京大学网络与信息安全研究室 刘欣

核心内容

引言

面向对象是九十年代以来计算机领域的主流技术。国家863报告指出,40年来计算机科学持续发展和产生显著效益的4个领域:计算机芯片、网络、多媒体、面向对象技术。

传统开发方法的问题

二十世纪六十年代以前:

  • 软件系统较小且简单
  • 编程语言简单(Fortran, Cobol)
  • 崇尚程序员个人技能
  • 代码面条式,含大量GOTO语句

二十世纪七十年代,Al Constantine和Ed Yourdon发明了结构化分析设计方法:功能分解法。

面向对象的基本思想

  1. 从现实世界中客观存在的事物出发构造软件系统
  2. 用对象的属性表示事物性质,用操作表示事物行为
  3. 属性与操作结合为一体,对外屏蔽内部细节(封装)
  4. 对事物进行分类(类是对象的抽象)
  5. 复杂对象可由简单对象构成(聚合)
  6. 通过继承简化系统构造
  7. 类具有封闭性,只有公共操作对外可见
  8. 对象之间通过消息通讯
  9. 通过关联表达类之间的静态关系

面向对象的主要概念

概念说明
对象系统中构成基本单位,有静态特征和动态特征
类具有相同属性和操作的一组对象的集合
继承特殊类拥有一般类的全部属性与操作
聚合对象由其他对象作为构成部分
消息向对象发出的操作请求
多态同一命名可具有不同语义

面向对象的基本原则

  1. 抽象:舍弃非本质特征,抽取共同本质特征
  2. 封装:把属性和操作结合为独立系统单位,隐蔽内部细节
  3. 委托:工作从一个对象传递到另一个对象
  4. 分类:把具有共同性质的事物划分为一类
  5. 泛化(继承):类可由层次继承结构组织
  6. 消息通信:对象之间只能通过消息进行通讯
  7. 行为分析:静态行为和动态行为
  8. 复杂性控制:引入包的概念

面向对象方法的特点

  1. 从认识论角度,改变了人们认识世界的方式
  2. 缩小了问题域到计算机之间的鸿沟
  3. 有助于软件维护与复用
  4. 提高软件质量生产率(效率提高20%)

发展历史

  • 1960s:Simula67 - 第一个引入类和继承的语言
  • 1972:Smalltalk-72 - 正式使用”面向对象”术语
  • 1980:Smalltalk-80 - 第一个完善的OO语言
  • 1980s-90s:C++, Objective-C, Java等涌现
  • 1990s:UML统一建模语言成为标准

教材与参考书

  • 《面向对象分析与设计》,麻志毅,机械工业出版社
  • 《UML用户指南》,邵维忠等译,人民邮电出版社
  • 《设计模式:可复用的面向对象软件的基础》,GoF

关联知识