第 五 章 面向对象的设计方法.

Slides:



Advertisements
Similar presentations
网络应用程序设计 2014 JavaBean. JavaBean 及其属性 JavaBean 就是一种 Java 的组件技术 JavaBean 是 Java 类 JavaBean 通过约定的方法名实现属性功能 简单属性 void setXxx(Type value) Type getXxx() boolean.
Advertisements

1 计算机软件考试命题模式 计算机软件考试命题模式 张 淑 平 张 淑 平. 2  命题模式内容  组织管理模式 − 命题机构和人员组成 − 命题程序  试卷组成模式.
数据结构的引入. 通讯录管理 社团机构管理 校园导航管理 通讯录管理 社团机构管理 校园导航管理.
面向侧面的程序设计 方林博士 本文下载地址:
<<會計資訊系統課程講義>> 統一塑模語言(UML)語法精要 -- 物件導向概念、需求分析及系統分析
初级会计电算化 (用友T3) 制作人:张爱红.
Tool Command Language --11级ACM班 金天行.
《软件工程》.
第三章 数据类型和数据操作 对海量数据进行有效的处理、存储和管理 3.1 数据类型 数据源 数据量 数据结构
UI(用户界面)集训班 Illustrator 高级班.
基于解释性语言的手机跨平台架构 Sloan Yi. Qt MTK.
Oracle数据库 Oracle 子程序.
第9章 面向对象方法学引论 9.1 面向对象方法学概述 9.2 面向对象的概念 9.3 面向对象建模 9.4 对象模型 9.5 动态模型
第14章 c++中的代码重用.
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
程序的形式验证 - 简介 中国科学院软件研究所 张文辉 1.
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
Hadoop I/O By ShiChaojie.
面向对象建模技术 软件工程系 林 琳.
管理信息结构SMI.
走进编程 程序的顺序结构(二).
辅导课程六.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
Windows网络操作系统管理 ——Windows Server 2008 R2.
数据挖掘工具性能比较.
PaPaPa项目架构 By:Listen 我在这.
动态规划(Dynamic Programming)
CPU结构和功能.
整合思维导图的初中英语教学设计 主讲人:卢璐.
Windows 7 的系统设置.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
第七章 操作符重载 胡昊 南京大学计算机系软件所.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
程序设计工具实习 Software Program Tool
SOA – Experiment 2: Query Classification Web Service
新一代安全网上银行 小组成员:杨志明 王晶 任毅 刘建中 关昊 刘超.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
内容摘要 ■ 课程概述 ■ 教学安排 ■ 什么是操作系统? ■ 为什么学习操作系统? ■ 如何学习操作系统? ■ 操作系统实例
C语言程序设计 主讲教师:陆幼利.
微机系统的组成.
$9 泛型基础.
VisComposer 2019/4/17.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
项目二:HTML语言基础.
本节内容 Win32 API中的宽字符 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第4章 Excel电子表格制作软件 4.4 函数(一).
iSIGHT 基本培训 使用 Excel的栅栏问题
数据集的抽取式摘要 程龚, 徐丹云.
第八章 总线技术 8.1 概述 8.2 局部总线 8.3 系统总线 8.4 通信总线.
Chapter 18 使用GRASP的对象设计示例.
Visual Basic程序设计 第13章 访问数据库
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
魏新宇 MATLAB/Simulink 与控制系统仿真 魏新宇
辅导课程十五.
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第二节 C语言的特点.
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
面向对象建模 对象(object) 对象具有的含义: 现实世界中某个具体的物理实体或概念在计算机逻辑中的映射和体现。 在现实世界中:
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
学习数据结构的意义 (C语言版) 《数据结构》在线开放课程 主讲人:李刚
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
入侵检测技术 大连理工大学软件学院 毕玲.
Presentation transcript:

第 五 章 面向对象的设计方法

5.1 面向对象的基本概念 面向对象的思想最初出现于挪威奥斯陆大学和挪威计算机中心共同研制的Simula 67语言中,随着的Smalltalk---76和80语言推出,面向对象的的程序设计方法得到了比较完善的实现。 此后,面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统,交互式界面,分布式系统,网络管理结构和人工智能等领域。 面向对象的技术已成为软件开发的一种新方法,新技术。

5.1.1 什么是面向对象的开发方法 问题空间—软件系统所涉及到的应用领域和业务范 围(现实世界)。 OOSD (Object-Oriented Software Development)法是一种 把面向对象的思想应用于软件开发过程,指导开发活动的系统方法。 问题空间—软件系统所涉及到的应用领域和业务范 围(现实世界)。 解空间 — 用于解决某些问题的软件系统。 一、软件开发过程 映射 问题空间 (现实世界) 解空间 (软件系统)

1.传统软件开发方法无法实现从问题空间到解空间的直接映射。 二、传统软件开发方法存在的问题 1.传统软件开发方法无法实现从问题空间到解空间的直接映射。 问题空间 (现实世界) 解空间 (软件系统) 复杂映射 2.传统软件开发方法无法实现高效的软件复用。 原因是:传统软件开发方法数据与代码(操作)分离。 3.传统软件开发方法难以实现从分析到设计的直接过渡。 复杂转换 分析文档 (DFD) 设计文档 (SC)

使问题空间与解空间具有一致性,降低复杂性。 2.软件生存期各阶段所使用的方法、技术具有高 度的连续性,用符合人类认识世界的思维方式 三、面向对象技术的特点 1.对软件开发过程所有阶段进行综合考虑。 使问题空间与解空间具有一致性,降低复杂性。 2.软件生存期各阶段所使用的方法、技术具有高 度的连续性,用符合人类认识世界的思维方式 来分析、解决问题。 自然、连续 问题空间 (现实世界) 解空间 (软件系统) 实体1 实体2 实体n 对象1 对象n 对象2

3. 将OOA、OOD、OOP有机地集成在一起。有利于系统的稳定性.  OOA(Object-Oriented Analysis) OOD(Object-Oriented Design) OOP(Object-Oriented Program) 以对象为中心各种构造系统,而不是以功能为中心,能很好地适应需求变化. 4. 具有良好的可重用性 由于对象所具有的封装性和信息隐蔽,具有很强的独立性。

5.1.2 面向对象的基本概念 对象(Object) 类(Class) 继承(Inheritance) 消息(Information) 理解面向对象的基本概念对于学习和掌握面向对象的开发方法是十分重要的。 类(Class) 对象(Object) 消息(Information) 多态性(Polymorphism) 继承(Inheritance) 永久对象(Persistent object)

1.对象(Object) 对象(Object)是客观事物或概念的抽象表述,即对客观存在的事物的描述统称为对象。 对象可以是事、物、或抽象概念 ,是将一组数据和使用该数据的一组基本操作或过程封装在一起的实体。   属性 (attribute) — 对象本身的性质。   操作(operation) — 给对象定义一组运算。   对象将它自身的属性及运算“包装起来”,称为“封装”(encapsulation). 对象的最基本的特征是封装性和继承性。

类又称对象类(Object Class),是一组具有相同属性和相同操作的对象的集合。 在一个类中,每个对象都是类的实例(instance) ,它们都可以使用类中提供的函数。 类具有属性,用数据结构来描述类的属性, 类具有操作,它是对象的行为的抽象,操作实现的过程称为方法(method) ,方法有方法名,方法体和参数。 由于对象是类的实例,在进行分析和设计时,通常把注意力集中在类上,而不是具体的对象上。

类和对象一般采用“名字”、“属性”和“运算”来描述。 对象和类的描述 类和对象一般采用“名字”、“属性”和“运算”来描述。 几何对象 颜色 位置 移动(delta:矢量) 选择(P:指针型):布尔型 旋转(角度) 类名 属性 运算 人 姓 名:字符串 年 龄: 整 型 改换工作 改换地址 文件 文件名 文件大小 最近更新日期 打印 类 图5.1 对象类的描述 (人) 张红兵 28 绘图员 人民路8号 李军 24 程序员 无 图5.2 对象的描述 对象

继承是使用现存的定义作为基础,建立新定义的技术。是父类和子类之间共享数据结构和方法的机制,这是类之间的一种关系。 3.继承 (Inheritance) 继承是使用现存的定义作为基础,建立新定义的技术。是父类和子类之间共享数据结构和方法的机制,这是类之间的一种关系。 继承性分: 单重继承:一个子类只有一个父类。即子类只继承一个父类的数据结构和方法。 多重继承:一个子类可有多个父类。继承多个父类的数据结构和方法。 基类 子类A 子类B 图 5.4 继承性描述 继 承 现存类定义 父类(基类) 新类定义 子类(派生类) 图 5.3 继承性

消息就是向对象发出的服务请求(互相联系、协同工作等)。对象之间的联系可表示为对象间的消息传递,即对象间的通讯机制。 4.消息(Message)   消息就是向对象发出的服务请求(互相联系、协同工作等)。对象之间的联系可表示为对象间的消息传递,即对象间的通讯机制。 一个消息应该包含以下信息:消息名、接收消息对象的标识、服务标识 、消息和方法、输入信息、回答信息。   在对象的操作中当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的消息。

多态性(Polymorphism)是指相同的操作或函数、过程作用于不同的对象上并获得不同的结果。 5.多态性和动态绑定 多态性(Polymorphism)是指相同的操作或函数、过程作用于不同的对象上并获得不同的结果。 即相同的操作的消息发送给不同的对象时,每个对象将根据自己所属类中定义的操作去执行,产生不同的结果。 例如: “绘图”操作,作用在“椭圆” 和“矩形” 上,画出不同的图形。    动态绑定(dynamic binding)是在运行时根据对象接收的消息动态地确定要连接的服务代码。   使用虚函数可实现动态联编,不同联编可以选择不同的实现,这便是多态性。   继承是动态联编的基础,虚函数是动态联编的关键。

多态性的实现举例 (1)在基类中,定义成员函数为虚函数(virtual); (2)定义基类的公有(public)派生类; 实现多态性的基本步骤(以VC为例):   (1)在基类中,定义成员函数为虚函数(virtual);   (2)定义基类的公有(public)派生类;   (3)在基类的公有派生类中“重载”该虚函数;   (4)定义指向基类的指针变量,它指向基类的公有派生类的对象。 注意:重载虚函数不是一般的重载函数,它要求函数名、返回类型、参数个数、参数类型和顺序完全相同。

#include <iostream.h> class figure //定义基类 { protected: (1) 在基类中,将成员函数说明为虚函数(virtual); class figure protected: double x,y; public: set_dim () virtual show_area() 图5.5 类 例如:下面是实现“多态性” 的一个例子 #include <iostream.h> class figure //定义基类 { protected: double x,y; public: void set_dim(double i; double j=0) { x=i; y=j; } virtual void show_area() //定义虚函数 cout<<“No area computation define ”; cout<<“for this class.\n”; } };

class triangle: public figure // (2)定义基类的公有派生类 { public: virtual void show_area() // (3)“重载”该虚函数 { 求三角形面积 } }; class square: public figure // (2)定义基类的公有派生类 virtual void show_area() // (3)“重载”该虚函数 { 求矩形面积 } class circle: public figure // (2)定义基类的公有派生类 virtual void show_area() // (3)“重载”该虚函数 { 求园面积 }

} void main() { figure *p; //定义指向基类的指针变量 triangle t; // (4)运行过程中实现“动态绑定” void main() { figure *p; //定义指向基类的指针变量 triangle t; // square s; // 定义基类的公有派生类的对象 circle c; // p=&t; // 指向三角形对象 p->set_dim(10.0,5.0); p->show_area(); } p= &s; // 指向矩形对象 p->set_dim(10.0,5.0); p->show_area(); p=&c; // 指向园形对象 p->set_dim(9.0); }

6.永久对象(Persistent object) 所谓永久对象是指生存期可以超越程序的执行时间而长期存在的对象。 目前,大多数OOPL不支持永久对象,如果一个对象要长期保存,必须依靠于文件系统或数据库管理系统实现,程序员需要作对象与文件系统或数据库之间数据格式的转换,以及保存和恢复所需的操作等烦琐的工作。 为了实现永久对象,使上述烦琐工作由系统自动完成,需要较强的技术支持;需要一个基于永久对象管理系统OMS(object management system),能够描述和处理永久对象的编程语言。

5.3 面向对象的分析 基本概念: 问题域(problem domain) — 被开发系统的应用领域。 面向对象分析OOA(Object-Oriented Analysis)的目标是完成对所求解问题的分析,确定系统“作什么”,并建立系统的模型。 基本概念: 问题域(problem domain) — 被开发系统的应用领域。 系统责任(system responsibilities) — 所开发的系统应具备的职能。

? 5.3.1 面向对象分析的特点 一、需求中存在的问题 1. 确定问题域和系统责任困难 2. 充分交流的问题解决得不好 3. 很难适应需求的不断变化 4. 难以满足复用要求 ? 二、OOA的特点 1.有利于对问题及系统责任的理解; 2.有利于人员之间的交流; 3.对需求变化有较强的适应性; 4.支持软件复用。

运用面向对象的方法,对问题域和系统责任进行分析和理解,建立分析模型。 1.分析问题域,确定类和对象; 5.3.2 OOA的基本任务 运用面向对象的方法,对问题域和系统责任进行分析和理解,建立分析模型。 1.分析问题域,确定类和对象; 2. 定义类或对象属性和操作,确定其结构; 3. 建立系统中类或对象之间的静态联系和动态联系。

5.3.3 OOA的分析过程 获取用户基本需求 标识类和对象 定义类的结构和层次 表示类(对象)间的关系 为对象行为建模

5.3.4 OOA模型 对象层 特征层 关系层 交 互 图 主 题 详 细 说 明 基本模型 (类图) 图5.8 OOA模型与详细说明 基本模型是一个类图(class diagram),是以直观的方式表达系统最重要的信息。OOA基本模型的三个层次分别描述了:系统中应设哪几类对象,每类对象的内部构成,对象与外部的关系。

5.3.4 OOA模型 对象层 特征层 关系层 交 互 图 主 题 详 细 说 明 基本模型 (类图) 主题(subject)又称为子系统(subsystem)是将一些联系密切的类组织在一起的类的集合。按照粒度控制原则,将系统组成几个主题,便于理解。

5.3.4 OOA模型 交互图(interaction diagram) 是Use case与系统成分之间的对照图。 对象层 特征层 关系层 交 互 图 主 题 详 细 说 明 基本模型 (类图) 交互图(interaction diagram) 是Use case与系统成分之间的对照图。 主题图和交互图又称为补充模型。

5.3.4 OOA模型 基本模型 (类图) 详细说明按照分析方法所要求的格式,对分析模型进行说明和解释。主要以文字为主。 对象层 特征层 关系层 交 互 图 主 题 详 细 说 明 基本模型 (类图) 详细说明按照分析方法所要求的格式,对分析模型进行说明和解释。主要以文字为主。

5.4 面向对象的设计 是将OOA所创建的分析模型转换为设计模型,解决如何作的问题。OOD与OOA没有明显的分界,采用相同的符号。 面向对象的设计OOD(Object-Oriented Design)是面向对象方法在软件设计阶段应用与扩展的结果。 是将OOA所创建的分析模型转换为设计模型,解决如何作的问题。OOD与OOA没有明显的分界,采用相同的符号。

将分析模型划分为若干子系统,子系统应该具有良好的接口,子系统内的类相互协作。标识问题本身的并发性,为子系统分配处理器。 5.4.1 OOD基本任务 1. 系统设计 将分析模型划分为若干子系统,子系统应该具有良好的接口,子系统内的类相互协作。标识问题本身的并发性,为子系统分配处理器。 保险单 填写界面 系统内部 客户 数据库界面 (abstract) Oracle 界面 Sybasec界面

分层:将软件系统组织为层次结构,每层是一个子系统。分层结构又分为封闭式和开放式。 子系统的分解是关键,可以有分层和分块:  分层:将软件系统组织为层次结构,每层是一个子系统。分层结构又分为封闭式和开放式。  分块:垂直分块是将系统分解为若干个相对独立的、弱耦合的子系统。每个子系统相当于一个块,每块实现一类服务。   常常使用分层和分块的混合结构,如图所示: 应用程序包 人机对话控制 窗口图形 仿真程序包 屏幕图形 点阵图形 操作系统 计算机硬件

5.4.1 OOD基本任务 2.对象设计 在面向对象的系统中,模块、数据结构及接口等都集中体现在对象和对象层次结构中。 对象设计是为每个类的属性和操作进行详细设计,包括属性和操作,它们的数据结构和实现算法。 3.消息设计 设计连接类与它的协作者之间的消息规约(specification of the messages)。 4.优化及复审 主要考虑提高效率和建立良好的继承结构。

5.4.2 OOD模型 面向对象设计准则: 1)模块化 2)抽象 3)信息隐藏 4)弱耦合 5)强内聚 6)可重用 介绍几种典型的面向对象的开发方法: Coda方法, Booch方法和 OMT方法

5.5 几种典型的面向对象的方法 Coda方法 Booch方法 OMT方法 OOSE方法    随着面向对象开发方法的发展,逐渐形成了几种主要的流派: Coda方法 Booch方法 OMT方法 OOSE方法

5.5 几种典型的面向对象的方法 要建立4个组元的设计模型:问题域组元、人机交互组元、任务管理组元和数据管理组元。 一、Coda/Yourdon方法 — 由OOA,OOD构成 建立问题域的分析模型。该模型由5个层次组成:即主题层、对象层、结构层、属性层和服务层。 要建立4个组元的设计模型:问题域组元、人机交互组元、任务管理组元和数据管理组元。 该方法的特点是:简单、易学,对于对象、结构、服务的认定较系统、完整、可操作性强。

1. Coda方法的OOA 这五个层次表示分析的不同侧面。 类与对象层 属性层 服务层 结构层 主题层 类的边界 实例的边界 属性 实例连接 服务 消息连接 泛化与特化结构 整体与部分结构 主题 图5.10 分析过程的五个层次 在Coda方法中,构造和评审OOA概念模型的顺序由五个层次组成:类与对象、属性、服务、结构和主题 这五个层次表示分析的不同侧面。

2. Coda方法的OOD Coad方法的OOD模型是在OOA模型5个层次基础上,建立系统的4类组元, 主题层 对象层 结构层 属性层 服务层 PDC 问题域 组元 HIC 人机界面 组元 TMC 任务管理 组元 DMC 数据管理 组元 图5.12 Coda OOD模型 1)设计问题域组元(problem domain component) 2)设计人机界面组元(human interaction component) 3)设计任务管理组元(task management component) 4)设计数据管理组元(data management component) `

二、 Booch方法 Booch方法的开发模型包括静态模型和动态模型,静态模型分为逻辑模型和物理模型,描述了系统的构成和结构,动态模型分为状态图和时序图。 该方法对每一步都作了详细的描述,描述手段丰富、灵活。不仅建立了开发方法,还提出了设计人员的技术要求,不同开发阶段的资源人力配制。

1. Booch方法的基本模型 ⑴类图 (a) 关联 图5.13 类图表示 1 N 图5.14 温室管理系统的类图 类名 父类 子类 整体类 成员类 请求服务类 提供服务类 (c) 包含 (d) 使用 图5.13 类图表示 控制环境 冷气 管理计划 暖气 灯光 温度 执行机构 1 N 图5.14 温室管理系统的类图

⑵对象图 对象图由对象和消息组成 图5.16 温室管理系统的对象图 图5.15 对象图的表示 6:成本( ) 4:产量( ) 2:状态( ) 对象1 对象2 编号:消息名 图5.15 对象图的表示 :计划分析 计划度量 1:收获时间(C) C:谷物 :计划管理 3:成熟时间() 6:成本( ) 5:作物::产量 4:产量( ) 2:状态( ) 图5.16 温室管理系统的对象图

⑶ 状态图 ⑷时序图 用户服务请求 内部服务请求 服务返回 事件名/操作 状态1 状态2 定义气候 空闲 白天 日出 日落 终止气候 夜晚 图5.17 状态图的表示 空闲 白天 定义气候 夜晚 日落 日出 终止气候 温度上升/调温( ) 温度下降/调温( ) 图5.18 环境控制器类的状态图 ⑷时序图 用户 对象1 对象2 用户服务请求 内部服务请求 服务返回 图5.19 温室管理系统的时序图

⑹进程图 ⑸模块图 图5.20 温室管理系统的模块图 温室A 温室工作站 温室B 温室C 图5.21 温室管理系统的进程图 气候 暖气 计划 作物 定义 冷气 图5.20 温室管理系统的模块图 ⑹进程图 温室工作站 温室A 温室B 温室C 图5.21 温室管理系统的进程图

三、面向对象的建模技术(OMT) 面向对象的方法学又称为对象模型技术,OMT( Object Model Technology)是一种软件工程方法学,支持整个软件生存周期,它覆盖了问题构成、分析、设计和实现等阶段。   OMT方法使用了建模的思想,讨论如何建立一个实际的应用模型。从3个不同而又相关的角度建立了三类模型:对象模型、动态模型和函数模型,OMT为每一个模型提供了图形表示。

对象模型描述了由对象和相应实体构成的系统静态结构,描述了系统中对象的标识,属性、操作及对象的相互关系。 1. 对象模型技术的基本概念   OMT 方法讨论的核心就是建立三类模型:  对象模型描述了由对象和相应实体构成的系统静态结构,描述了系统中对象的标识,属性、操作及对象的相互关系。   动态模型根据事件和状态描述了系统的控制结构,系统中与时间和操作顺序有关的内容。   函数模型着重描述系统中与值的转换有关的问题,如函数、映射、约束和函数作用等。   三类模型描述的角度不同,却又相互联系。

构成对象模型的基本元素有:对象(类)、它们之间的关系。 2. 建立对象模型 对象模型描述了系统的静态结构。 构成对象模型的基本元素有:对象(类)、它们之间的关系。 类 名 属性名(1),数据类型1=缺省值1 属性名(2),数据类型2=缺省值2 ……… 操作名1(变量名1) :结果类型1 操作名2(变量名2) :结果类型2 类名 属性 操作 类名 (类名) 对象名 属性 操作 对象名

2+ 类之间、对象之间的关系 ⑴关联与链 ①二元关联、三元关联 ②受限关联 ③用重数、链属性和角色进一步描述。 ◆ 人员 公司 雇用 二元关联的例 (人员) 张涛 (公司) 通大 链的例子 ⑴关联与链 ①二元关联、三元关联 项目 语言 ◆ 人 (项目) CAD系统 (语言) C 语言 (人) 林珩 三元关联的例 链的例子 ②受限关联 直线 名称 点 相交 2+ 人 公司 ● ③用重数、链属性和角色进一步描述。 公司 名字 个人 工作 职务 工资 关联 雇主 雇员

继承性通常又称为概括,表示基类与子类的关系。 ⑵继承性(Inheritance) 运输工具 陆上运输工具 水上运输工具 汽车 水陆两用车 船 继承性通常又称为概括,表示基类与子类的关系。 ⑶聚集 表整体与部分的关系。 微机系统 ◆ 监视器 主机箱 鼠标 键盘 ● 底架 CPU RAM 风扇 段落 句子 ◆ ●

银行网络系统ATM(Auto Trade Machine) 银行网络系统包括人工出纳和分行共享的自动出纳机。 自动出纳机 出纳站 分理处 计算机 帐户 图1 银行网络系统的示意图 用户 分行计算机

问题的陈述 采用OMT方法对银行网络系统ATM(Auto Trade Machine) 进行分析和设计。   银行网络系统包括人工出纳和分行共享的自动出纳机;各分理处用自己的计算机处理业务(保存帐户、处理事务等);各分理处与出纳站通过网络通信;出纳站录入帐户和事务数据;自动出纳机与分行计算机通信;自动出纳机与用户接口,接受现金卡;发放现金;打印收据;分行计算机与拨款分理处结帐。   要求系统正确处理同一帐户的并发访问;网络费用平均摊派给各分理处。图1给出了银行网络系统的示意图。

 对象模型 银行码 录入站 远程事务 现金卡 银行名、卡片码 安全号 出纳员事务 出纳员 名字 出纳站 分行 站代码 帐户 余额、类型 贷款限定 顾客 地址 事务 种类、日期、时间、数量 卡片权限 密码、限制 更新 数量、类型 自动出纳机 分发现金  雇 员 号 站 代 码 分理处 帐户号 卡片码 录入 组成 拥有 雇用 访问 标识 发行 被录入 开始 涉及 维持 有 对象模型

动态模型着重于系统的逻辑结构;描述某时刻对象及其联系的改变。包括状态图和事件追综图。 3. 建立动态模型 动态模型着重于系统的逻辑结构;描述某时刻对象及其联系的改变。包括状态图和事件追综图。 一、事件和状态 状态— 对象所具有的属性值,具有时间性和持续性。 事件— 对于对象的触发行为,指从一个对象到另一个对象的信息的单向传递。 脚本—在系统的某一执行期间内的一系列事件。 在系统中具有属性值、链路的对象,可能相互激发,引起状态的一系列变化。 有的事件传递的是简单信号,有的事件则传递的是数据值。由事件传送的数据值称为“属性”。

⑴状态图 状态图是一个状态和事件的网络,侧重于描述每一类对象的动态行为,状态的迁移。 状态图 ◎ 状态A / 操作 状态A 活动 ● 状态B ◎ 起始状态 终结状态 事件B[条件] 图例 状态 状态迁移 状态 动态模型由多个状态图组成,每个有重要行为的类都有一个状态图。各状态图可并发地执行及独立改变状态。

打电话状态图 空闲 拨号音 超出时间 拨号 记录的信息 忙音 连接 快速忙音 铃响 断连 放下话筒 提起话筒 超时 一位号码 无效号码 有效号码 对方应答 通路 一位号码 中断线忙 号码忙 对方电话挂断 信息送完 图5.39 打电话状态图

⑶事件追踪图 事件追踪图侧重描述系统执行过程中的一个特定的“场景(Scenarios)”。场景有时也叫“脚本”,是完成系统某个功能的一个事件序列。即是描述多个对象的集体行为。 脚本—系统某一次特定运行时期内发生的事件序列。例如:打电话的场景: 1、拿起电话受话器 12、打电话者听见振铃声 2、电话忙音开始 13、对方接电话 3、拨电话号码数5 12、接话方停止振铃 4、电话忙音结束 14、打电话方停止振铃声 5、拨电话号码数5 15、通电话 6、拨电话号码数5 16、对方挂电话 7、拨电话号码数1 17、电话切断 8、拨电话号码数2 18、打电话者挂电话 …………….. 11、对方电话开始振铃

打电话的事件追踪图 打电话者 电话线 接电话者 打电话者 拿起接收器 拨号音开始 拨号(5) 忙音结束 拨号(1) 拨号(2) 拨号(3) 打电话的事件追综图 打电话者 电话线 接电话者 打电话者 拿起接收器 拨号音开始 拨号(5) 忙音结束 拨号(1) 拨号(2) 拨号(3) 拨号(4) 拨号(8) 铃声 铃声停止 电话连通 电话断开 打电话者挂机 打电话的事件追踪图 铃声 受话方回答 铃声停止 电话连通 受话方挂机 电话断开

⑷ 建立功能模型 功能模型着重于系统内部数据的传递与处理。定义“做什么?”的问题,表明值之间的依赖关系及其相关的功能。 描述手段为分层数据流图,DFD图有助于表示功能的依赖关系,其中的处理对应于状态图的活动和动作,数据流对应于对象图中的对象或属性。建立功能模型的步骤为:

OOSE的核心—最大贡献,是建立了Use Case 模型。 需求模型(RM) 分析模型(AM) 设计模型(DM) 实现模型(IM) 测试模型(TM) 分析 构造 测试 OOSE的开发活动主要分为三类:分析、构造和测试。 OOSE的核心—最大贡献,是建立了Use Case 模型。

<<Extend>> 用例(Use case)是OOSE中的重要概念,在开发各种模型时,用例贯穿了OOSE活动的核心,描述了系统的需求及功能。 分析模型 use case模型通过分析来构造。 设计模型 use case模型通过设计来具体化。 实现模型 该模型依据具体化的设计来实现use case模型。 测试模型 用来测试具体化的use case模型。 更新帐目 评价  用例图 记帐系统 销售人员 超越边界 贸易经理 营销人员 设置边界 风险分析 交易估价 进行交易 <<include>> <<Extend>>

面向对象建模 —— UML统一建模型语言应运而生!! Coda-Yourdon方法, Booch方法、 OMT方法及OOSE法代表了面向对象方法的主要流派。它们都是采用建模技术建立了各种视图来描述软件系统。 模型是对系统的抽象表示,建模是在不同层次上对系统的描述。 鉴于软件,尤其是大型软件所具有的复杂性,以及人们对复杂问题理解的局限性,建立一种共同的建模语言,推动OO方法的发展是十分必要的。 —— UML统一建模型语言应运而生!!