第二节 面向对象程序设计基本概念
一、程序设计方法的发展
设计方法 | 特点 | 代表性语言 |
---|---|---|
面向机器 | 用机器指令为特定硬件系统编制程序。其目标代码短,运行速度和效率高,但可读性和移植性差 | 86系列汇编语言 |
面向过程 | 用高级程序设计语言按计算机能够理解的逻辑来描述要解决的问题及其解决方法。是过程驱动的,程序的可读性和移植性好,核心是数据结构和算法。但大型程序维护起来比较困难 | Fortran(50年代) Basic(60年代)C(70年代) |
面向对象 | 用面向对象的编程语言把现实世界的实体描述成计算机能理解、可 操作的、具有一定属性和行为的对象,将数据及数据的操作封装在 一起,通过调用各对象的不同方法来完成相关事件。是事件驱动的, 其核心是类和对象,程序易于维护 、扩充。 | C++(80年代) Python(90年代) Java( 90年代) |
二、面向对象程序设计
- 面向对象程序设计(Object Oriented Programming,OOP): 是一种编程架构的软件开发方法。
- 面向对象程序设计的特点: 抽象性、封装性、继承性、多态性。
- 面向对象程序设计的优点: 可重用性、可扩展性、可管理性。
(一)、面向对象的软件开发过程
- 面向对象的分析(Object Oriented Analysis,OOA)
分析用户需求,从问题中抽取对象模型。 - 面向对象的设计(Object Oriented Design,OOD)
将模型细化,设计类,包括类的属性和类之间的相互关系,同时考察是否有可以直接引用的已有类或部件。 - 面向对象的编程实现(Object Oriented Programming,OOP)
选一种面向对象的编程语言,具体编码实现类的设计,测试完善整个解决方案。
(二)、面向对象程序设计常用术语
- 对象(object): 描述某一个客观事物或实体的一个标识。
- 属性(成员变量): 对象的状态(静态特征)。
- 操作(方法): 对象的行为(动态特征)。
- 类(class): 是具有相同属性和操作的一组对象的集合。
- 封装: 对象的属性和操作结合成的独立的系统单位。
- 继承: 是指特殊类(子类)可以自动拥有一般类(父类)的全部属性和操作。特殊类可以有自己定义的属性和操作。
- 多态: 是指在一般类中定义的属性或操作被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。
(三)、对象之间的关系
- 包含[聚合/组合](整体-部分结构): 当对象A是对象B的组成[可独立存在/不可独立存在]部分时,称对象B包含对象A。如:学生和班级, CPU与计算机
- 继承(一般-特殊结构): 当对象A是对象B的特例时,称对象A继承了对象B。如:北京大学和大学,液晶显示器和显示器。
- 关联[依赖]: 当对象A拥有[使用]对象B时,称对象A和对象 B之间是关联关系。如:计算机与制造商,学生和班主任 。
(四)、类之间的关系
在UML的类图中,常见的有以下几种关系:
- 泛化(Generalization): 指的是类之间的继承关系。
- 实现(Realization): 指的是继承接口并实现接口方法。
- 组合(Composition): 表示整体与部分之间的强聚集关系,并且生命周期是相同的,例如:相机和机身。
- 聚合(Aggregation): 表示整体与部分之间的弱聚集关系,其子系统允许被拆卸和替换,例如:相机和镜头 。
- 关联(Association): 是一种拥有的关系, 它使一个类知道另 一个类的属性和方法,是一种强依赖关系。
- 依赖(Dependency): 指的是类之间的使用关系。
(五)、UML图
-
统一建模语言(Unified Modeling Language,UML):
是一种应用于软件开发过程的标记法和语义语言。
主要是由Rational Software公司的三位巨匠Booch、Rumbaugh和Jacobson于1995年正式合作创建的。
UML2 使用了13种( UML1 使用了9种)模型图用来对面向对象的软件系统进行建模。 -
UML2.0中的13种模型图:
结构图: 类图、对象图、构件图、部署图、包图、组合构件图
行为图: 用例图、顺序图、活动图、通信图(协作图)、状态机图(状态图)、交互概览图、定时图
1、用例图
- 用例图:用于需求分析阶段,描述外部执行者使用系统的系统功能的关系图。
- 用例图包括4个基本组件:
系统——用实线方框表示系统边界
参与者——用人形表示,在系统边界外
用例——用一个带有名称的椭圆表示
关系——用一条连接参与者和用例的线
2、类图
- 类图:用来描述类和类之间的静态关系。
- 类使用三层矩形框表示:
第一层显示类的名称,如果是抽象类,就用斜体显示
第二层是类的属性
第三层是类的方法
- 接口使用两层矩形框表示 :
第一层是接口名称,顶端添加<< interface >>。
第二层是接口方法 。
- 在UML的类图中,常见的几种关系的表示方法: