面向对象原理与技术

更新时间:2023-09-27 21:09:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

面向对象原理与技术

目标:掌握面向对象技术的基本概念、基本原理,关键技术和主要方法,通过实例开发验证语言、工具和方法的有效性。

主要内容:基本概念、原理;

关键技术:通过建模进行对象分析和设计,通过使用语言和工具进行对象编程和实现。

完成一个小型软件系统。

教学方法:课堂授课,课后实践,研究探讨。

参考书:

Object Design & Programming with UML UML对象设计与编程 [美]刘润东

北京希望电子出版社 2001.3

The Unified Modeling Language User Guide

Grady Booch, James Rumbaugh and Ivar Jacobson UML用户指南 邵维忠 等译

机械工业出版社 2001.6

UML面向对象设计基础 Meilir Page-Jones, 2000 包晓露等译

人民邮电出版社,2001.4

Practical Object-Oriented Design with UML Mark Priestley

面向对象设计的UML实践(影印版) 清华大学出版社, 2000.10

Object-Oriented System Analysis and Design Ronald J. Norman, 1996

面向对象系统分析与设计(影印版) 清华大学出版社, 1998.6

1.目的和参考书 2.结构化设计和面向对象设计 3.统一建模语言UML 4.Java对象编程 5.软件需求:用例 6.7基本结构建模:类和类图 8.9.10.基本行为建模:交互和交互图。 11.12.高级行为建模和体系结构建模 13.复习 14.考试

1 概述

1.1 结构化设计

编程语言的进步: 第一代语言二进制代码编程。 第二代语言汇编程序 1940?s-1950?s 第三代语言,高级语言, Fortran, ALGOL60, COBOL,C/C++一条语句编译为5-10条机器代码。 第四代语言,4GL, 一条语句编译为30-50条或更多的机器代码。非过程语言,如SQL. 结构化程序设计被称为软件发展的第三个里程碑,比前两个(子程序和高级语言)影响更深远。

组合/结构化设计(C/SD, Composite/Structured Design)提出将产品分成模块以减少维护代价。

Stevens, Myers and Constantine, 1974。

◆强调程序设计风格和程序结构的规范化,提倡清晰的与问题相关的结构。 ◆基本思路:把复杂问题的求解过程分阶段进行,每个阶段针对的问题和解决方法都易理解易验证。

◆自顶向下

先全局后局部 对比“自下而上” ◆逐步细化

先整体后细节 先抽象后具体 逐步求精 ◆模块化设计 复杂程序由若干较小程序(即模块)构成。

模块之间通过接口联系起来。 ◆结构化编码 三种基本结构 限制使用goto

模块module是一个由边界元素限定词所确定的相邻程序语句的序列,而且有一个总体标识符。 Yourdon and Constantine 1979

模块是一种软件存储和管理的单位。模块包括源代码模块、二进制代码模块和可执行代码模块。

UML,1999

Myers提出模块内聚(module cohesion, 模块内部各元素相互作用的紧密程度)和模块耦合(module coupling, 模块之间连接的紧密程度)。提倡高内聚、低耦合的模块化设计。

1.2 面向对象设计

对象object是什么?

? 具有明确定义的边界和唯一标识identity的一个实体entity。 ? 状态和行为的一个封装体。 ? 某个类的一个实例instance。 类class是什么?

一组具有相同属性、操作和语义的对象的抽象描述;也描述该类如何创建对象。 对象基本原理是什么?

? 生命期:每个对象都有创建、活动/操作、撤销的动态过程。 ? 抽象:从客观世界实体对象抽象为计算机软件表示的类。

? 实例化:运行时刻由类创建对象,人与对象交互、对象之间交互,以完成计算。 对象设计有哪些主要特征? ▲封装性 成员种类 成员可见性/访问控制

类名 类名

private 数据变量集合 public 操作方法集合 protected

数据和方法作为类成员封装在一起

先区别对象,再访问对象的成员 保护数据;通过接口访问核心数据

类名

类成员 成员作用域;静态static成员

对象成员

▲继承性

继承性反映自然的分类结构(isA关系)

超类superclass

子类继承超类的特征(继承性)

子类可增加新特征,且仅描述新特征(扩展)

子类可限制继承而来的属性或重新改写继承而来的行为

子类subclass

每个子类对象都是其基类的一个对象(类型多态性)

子类对象可替代超类对象(substitutability可替代性)

▲多态性 行为多态性:

重载overload 改写override

操作的基调signature是什么? 操作的名称加上形式参量(通常加上返回类型)。

1.3 统一建模语言UML 1.4 Java对象编程

2 软件需求:用例和用例图

2.1 用例

原理:

一个用例表示一个系统的部分功能和行为;系统所有的功能和行为都可建模为用例。 一个用例抽象一组动作序列,以结构化的静态方式描述功能和行为。 系统执行该动作序列将对参与者actor产生可观察的结果。

用例描述将实现的行为,而不必描述其如何实现,而使所有人员不必为细节所累。

? 系统级功能,完整的功能需求。

? 参与者actor与用例的交互关系。参与者可以是人或自动系统。 ? 一个用例完成一项与参与者利益相关的确定工作。 ? 用例作为测试来源。

概念:

用例use case是什么?

系统与其参与者actor交互时所执行的动作序列的规范。

用例对模型中的行为特征结构化,用例进一步用协作表示其如何实现。

如何表示用例?

命名:一个字符串,简短的主动语态动词短语,完整名称应包括包名作为路径。

语法:椭圆

参与者actor是什么?

当用例的用户与用例交互时,用户所扮演的一组相关角色的集合。

当一个参与者与一个用例通信时仅扮演一个角色。

什么是角色role?

参与特定语境中的某实体被命名的特定行为。 参与者之间有什么关系?

泛化关系。

如何表示参与者?

名称:名词短语 语法:人形符号

参与者与用例之间有何关系?

关联

用例如何组织?

用包package来组织大量的用例。包名. 用例 用例间有何关系?

1泛化:一个子用例(sub use case)和一个超用例(super use case)间的关系

子用例是其超用例的特殊形式;子用例可出现在超用例可出现的任何地方。 子用例继承超用例中所有的特征和关联,并可增加新的特征和关联。

2包含:一种<>依赖关系,指向被包含的用例,表示公共行为

3扩展:一种<>依赖关系,有条件的延伸,Extension points, condition 用例对什么建模?

对元素的行为建模。 元素指整个系统、子系统或某个类。

关心“做什么”,而不是“如何做”

为何需要用例建模

三个理由:

? 用例为领域专家、最终用户和开发者提供交流平台。 ? 为开发者提供直接认识和理解元素的方法 ? 用例是测试模型元素的基础。

如何对元素的行为建模?

? 识别与该元素交互的参与者,有的参与者并非单个人扮演的角色。 ? 识别一般和特殊的角色来组织参与者。 ? 对每个参与者考虑与该元素交互的主要方式。 ? 考虑异常的交互方式。 ? 组织为用例,用包含和扩展关系分解公共行为,区分异常行为。 重要提示

每个用例应表示系统的可区分和可标识的行为。

? 为系统中单个的、可标识的原子行为命名 ? 用包含关系分解公共行为 ? 用扩展关系分解变体行为

? 清晰描述事件流,使局外人易于理解

2.2 用例图

用例图(use case diagram)是什么?

表示一组用例、参与者及关系的图。 用例图中主要内容有哪些?

用例、参与者、依赖、泛化和关联,还有注解和约束,包 用例图的出发点是什么?

表现系统的行为,系统对其外部提供的可见的服务。 语境context是什么?

所有存在于系统外部,并于系统交互的事物,构成了该系统的语境context。 一组相关建模元素出于某种目的(如为描述某操作),而组织起来的一种视图。 语境定义了元素存在的环境。 用例图与系统的语境有何关系?

用例图可对系统的语境建模。 如何对参与者建模?

识别系统周围的参与者:

? 需要从系统中得到帮助以完成其任务,履行其职责的事物 ? 完成系统的功能所必需的事物 ? 需要与外部硬件或软件交互的事物

? 为管理和维护而执行某些辅助功能的事物

类似的参与者用泛化关系组织起来 对于需加深理解的参与者,应建立构造型。

本文来源:https://www.bwwdw.com/article/vf1d.html

Top