第11章 面向对象的OMT方法分析
面向对象分析实例
4
学生ID 自选习题,
5
习题解答 核对答案
练习本类的属性和方法
确定对象类
属性: 方法:
01
习题号 编写习题,
02
题目内容 编写答案,
03
答案 习题入库
04
所属课程
02
筛选对象原则:
发现对象
2
3
从需求中找名词作为侯选对象:
教师,系统,习题,答案,作业,时间,学生,试题,系统管理员,权限,学校,班,学期,课程,习题板,考试板,练习本,习题库.
共18项
具体做法:
发现对象
系统:太大的抽象,不能作为对象.
时间:只有考试板要求,可作为考试板属性处理.
作业:是习题的同义词,可舍弃.
系统需求说明按三方面描述:
01
系统问题域说明:应用系统的业务范围
02
系统边界说明:确定系统与用户之间接口
03
系统功能说明:系统需要实现的责任
04
实例描述:习题管理系统
对象
系统问题域说明:
在一个公共习题库的支持下, 负责各科习题的教师: 可用系统编写习题及答案,并存入习题库; 从习题库中选择一组习题去组成作业,并在要求时间公布习题答案; 从习题库中选择一组习题组成考试题公布; 可以批改学生的作业; 学生答题后收卷,阅卷评分.
用系统完成作业或答题并提交给系统; 可在习题库中选择习题自己练习; 可以在公布答案后核对自己的作业;
每个学生:
负责习题,编班和权限管理和维护习题库.
一名系统管理员:
壹
贰
系统问题域说明:
系统的用户有本校教师,学生,系统管理员.
学校以班组织学生,每班每学期有若干课程.
面向对象编程思想
面向对象编程思想面向对象是一种新兴的程序设计方法,或者说它是一种新的程序设计范型,其基本思想是使用对象,类,继承,封装,消息等基本概念来进行程序设计。
它是从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式,强调直接以问题域(现实世界)中的事物为中心来思考问题,认识问题,并根据这些事物的本质特点,把它们抽象地表示为系统中的对象,作为系统的基本构成单位(而不是用一些与现实世界中的事物相关比较远,并且没有对应关系的其它概念来构造系统)。
这可以使系统直接地映射问题域,保持问题域中事物及其相互关系的本来面貌。
它可以有不同层次的理解:从世界观的角度可以认为:面向对象的基本哲学是认为世界是由各种各样具有自己的运动规律和内部状态的对象所组成的;不同对象之间的相互作用和通讯构成了完整的现实世界。
因此,人们应当按照现实世界这个本来面貌来理解世界,直接通过对象及其相互关系来反映世界。
这样建立起来的系统才能符合现实世界的本来面目。
从方法学的角度可以认为:面向对象的方法是面向对象的世界观在开发方法中的直接运用。
它强调系统的结构应该直接与现实世界的结构相对应,应该围绕现实世界中的对象来构造系统,而不是围绕功能来构造系统。
从程序设计的角度来看,面向对象的程序设计语言必须有描述对象及其相互之间关系的语言成分。
这些程序设计语言可以归纳为以下几类:系统中一切皆为对象;对象是属性及其操作的封装体;对象可按其性质划分为类,对象成为类的实例;实例关系和继承关系是对象之间的静态关系;消息传递是对象之间动态联系的唯一形式,也是计算的唯一形式;方法是消息的序列。
面向对象面向对象(Object Oriented,OO)是当前计算机界关心的重点,它是90年代软件开发方法的主流。
面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。
如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。
面向对象分析方法
面向对象分析方法1/2面向对象分析方法(Object-Oriented Analysis,OOA),是在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题。
OOA与结构化分析有较大的区别。
OOA所强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析。
OOA(面向对象的分析)模型由5个层次(主题层、对象类层、结构层、属性层和服务层)和5个活动(标识对象类、标识结构、定义主题、定义属性和定义服务)组成。
在这种方法中定义了两种对象类之间的结构,一种称为分类结构,一种称为组装结构。
分类结构就是所谓的一般与特殊的关系。
组装结构则反映了对象之间的整体与部分的关系。
OOA在定义属性的同时,要识别实例连接。
实例连接是一个实例与另一个实例的映射关系。
OOA在定义服务的同时要识别消息连接。
当一个对象需要向另一对象发送消息时,它们之间就存在消息连接。
OOA 中的5个层次和5个活动继续贯穿在OOD(画向对象的设计)过程中。
OOD模型由4个部分组成。
它们分别是设计问题域部分、设计人机交互部分、设计任务管理部分和设计数据管理部分。
一、OOA的主要原则。
(1)抽象:从许多事物中舍弃个别的、非本质的特征,抽取共同的、本质性的特征,就叫作抽象。
抽象是形成概念的必须手段。
抽象原则有两方面的意义:第一,尽管问题域中的事物是很复杂的,但是分析员并不需要了解和描述它们的一切,只需要分析研究其中与系统目标有关的事物及其本质性特征。
第二,通过舍弃个体事物在细节上的差异,抽取其共同特征而得到一批事物的抽象概念。
抽象是面向对象方法中使用最为广泛的原则。
抽象原则包括过程抽象和数据抽象两个方面。
过程抽象是指,任何一个完成确定功能的操作序列,其使用者都可以把它看作一个单一的实体,尽管实际上它可能是由一系列更低级的操作完成的。
数据抽象是根据施加于数据之上的操作来定义数据类型,并限定数据的值只能由这些操作来修改和观察。
软件工程许家怡教材习题答案《《软件工程——理论与实践》(第2版)习题答案》之欧阳体创编
《软件工程——理论与实践》(第2版)习题答案习题答案习题一答案一、选择题1. 软件的主要特性是(A B C)。
A) 无形B) 高成本C) 包括程序和文档D) 可独立构成计算机系统2. 软件工程三要素是(B)。
A) 技术、方法和工具B) 方法、工具和过程C) 方法、对象和类D) 过程、模型、方法3. 包含风险分析的软件工程模型是(A)。
A) 螺旋模型B) 瀑布模型C) 增量模型D) 喷泉模型4.软件工程的主要目标是(C)。
A) 软件需求B) 软件设计C) 风险分析D) 软件实现5. 下列属于面向对象开发方法的是(A B C D)。
A) BoochB) UMLC) CoadD) OMT6. 软件危机的主要表现是(B D)。
A) 软件成本太高B) 软件产品的质量低劣C) 软件开发人员明显不足D) 软件生产率低下7. 软件开发方法的主要工作模型有(A B C)A) 螺旋模型B) 循环模型C) 瀑布模型D) 专家模型8. 软件工程的目标有(A B C)。
A) 易于维护B) 低的开发成本C) 高性能D) 短的开发期9. 软件工程学的目的和意义是(A D)。
A) 应用科学的方法和工程化的规范管理来指导软件开发B) 克服软件危机C) 作好软件开发的培训工作D) 以较低的成本开发出高质量的软件二、判断题1. 软件就是程序,编写软件就是编写程序。
(×)2. 瀑布模型的最大优点是将软件开发的各个阶段划分得十分清晰。
(×)3. 结构化方法的工作模型是使用螺旋模型进行开发。
(×)4. 结构化方法和OO方法都是一种面向过程的软件开发方法。
(×)5. 原型化开发方法包括生成原型和实现原型两个步骤。
(×)6. 面向对象的开发方法包括面向对象的分析、面向对象的设计和面向对象的程序设计。
( √)7. 软件危机的主要表现是软件的需求量迅速增加,软件价格上升。
(×)8. 软件工具的作用是为了延长软件产品的寿命。
面向对象方法概述
张山 (instance)
Class 中国人 张山的 Attributes 李士 (instance) Class 杭州人 中国人李士的 Attributes 杭州人李士的 Attributes
首页
上页
下页
末页
退出
特点: 特点: 杭州人的 中有与中国人的同名, 中有与中国人的同名 若杭州人的 methods中有与中国人的同名,则 时以杭州人为 杭州人为准 不执行中 李士执行该 method 时以杭州人为准,不执行中 国人中定义的同名 国人中定义的同名 method。 。
OOD
OOP OOP
1.3.5 面向对象开发方法的组成
1、OOA法 OOA法
1、OOA法 OOA法 就是要解决“作什么”的问题。 就是要解决“作什么”的问题。OOA 法的基本任务就是要 建立三种模型: 建立三种模型: 对象模型(信息模型) 对象模型(信息模型) 定义构成系统的类和对象,它们的属性与操作。 定义构成系统的类和对象,它们的属性与操作。 状态模型(动态模型) 状态模型(动态模型) 描述任何时刻对象的联系及其联系的改变,即时序。 描述任何时刻对象的联系及其联系的改变,即时序。常 用状态图, 事件追踪图描述。 用状态图, 事件追踪图描述。 处理模型(函数模型) 处理模型(函数模型) 描述系统内部数据的传送处理。 描述系统内部数据的传送处理。 显然,在三大模型中,最重要的是对象模型。 显然,在三大模型中,最重要的是对象模型。
6.1.2 面向对象的基本概念
6.1.2 面向对象的概念
理解面向对象的基本概念对于学习和掌握面向对象的 开发方法是十分重要的。 开发方法是十分重要的。 对象(Object) 类(Class) Class) 继承(Inheritance) Inheritance) 消息(Information) 多态性(Polymorphism) 永久对象(Persistent object) 重载
面向对象的分析方法
如何确定执行者: 1、谁使用系统的主要ห้องสมุดไป่ตู้能(主执行者)? 2、谁需要从系统获得对日常工作的支持和服务? 3、需要谁维护管理系统的日常运行(副执行者)? 4、系统需要控制哪些硬件设备? 5、系统需要与其它哪些系统交互? 6、谁需要使用系统产生的结果(值)?
简单的用例:自动售货系统
客户
买饮料 供货
供货人
用例之间的关系
❖ 包含关系:使用包含(Include)用例来封装一组跨越 多个用例的相似动作(行为片断)。
《include》
• 有时当某用例的事件流过于复杂时,为了简化用例的描述,我们 也可以把某一段事件流抽象成为一个被包含的用例
用例之间的关系
3、扩展关系Extend 一个用例也可以定义为基本用例的增量扩展,这称作扩 展关系,即扩展关系是把新的行为插入到已有的用例中 的方法。
贸易经理 营销人员
设置边界
更新帐目
风险分析 交易估价
《使用》 《使用》
评价
进行交易
《扩展》
超越边界
记帐系统 销售人员
Use case图
采用“基于用例的方法”来识别和获取需求,是从外部的角度来看系统功能 ,建立系统的Use case模型。描述外部执行者(Actor)所理解的系统功能。即待开发 系统的功能需求。
用例 — 表示一个子系统,或者系统一个独立的功能。 角色— 表示外部的“执行者”。
描述方法: 用例 :
角色: 用例
连接:
一、执行者(Actor)
一、执行者
执行者是指用户在系统中所扮演的角色。执行者在用例
图中是用类似人的图形来表示, 但执行者可以是人,也可以
是一个外界系统。
注意:用例总是由执行者启动的。
面向对象方法
面向对象方法面向对象方法是当前的主流开发方法,拥有大量不同的方法,主要包括OMT(Object Model Technology,对象建模技术)方法、Coad/Yourdon方法、OOSE(Object-Oriented Software Engineering,面向对象的软件工程)及Booch方法等,而OMT、OOSE及Booch最后统一成为UML(United Model Language,统一建模语言)。
1.Coad/Yourdon方法Coad/Yourdon方法主要由面向对象的分析(Object-Oriented Analysis, OOA)和面向对象的设计(Object-Oriented Design, OOD)构成,特别强调OOA和OOD采用完全一致的概念和表示法,使分析和设计之间不需要表示法的转换。
该方法的特点是表示简练、易学,对于对象、结构、服务的认定较系统、完整,可操作性强。
在Coda/Yourdon方法中,OOA的任务主要是建立问题域的分析模型。
分析过程和构造OOA概念模型的顺序由5个层次组成,分别是类与对象层、属性层、服务层、结构层和主题层,它们表示分析的不同侧面。
OOA需要经过5个步骤来完成整个分析工作,即标识对象类、标识结构与关联(包括继承、聚合、组合及实例化等)、划分主题、定义属性和定义服务。
OOD中将继续贯穿OOA中的5个层次和5个活动,它由4个部分组成,分别是人机交互部件、问题域部件、任务管理部件和数据管理部件,其主要的活动就是这4个部件的设计工作。
2.Booch方法Booch认为软件开发是一个螺旋上升的过程,每个周期包括4个步骤,分别是标识类和对象、确定类和对象的含义、标识关系、说明每个类的接口和实现。
Booch方法的开发模型包括静态模型和动态模型,静态模型分为逻辑模型(类图、对象图)和物理模型(模块图、进程图),描述了系统的构成和结构。
动态模型包括状态图和顺序图。
面向对象系统分析
面向对象系统分析允许在运行时动态地添加或删除对象, 这使得系统更加灵活,能够更好地适应变化。
挑战
复杂性Biblioteka 过度设计性能问题面向对象系统分析涉及的概 念和机制较多,如类、对象、 继承、多态等,学习曲线相 对较陡峭。
面向对象设计鼓励对问题进 行深入思考和抽象,但过度 设计可能导致系统过于复杂, 降低可维护性和可读性。
面向对象系统分析
目录
• 面向对象的基本概念 • 面向对象分析方法 • 面向对象设计原则 • 面向对象系统设计案例 • 面向对象系统分析的优势与挑战
01
面向对象的基本概念
对象与类
对象
现实世界中事物的抽象,具有状态和 行为。
类
对象的抽象,定义了对象的共同属性 和方法。
封装、继承与多态
封装
01
隐藏对象的内部状态,只通过公共接口与外界交互,保证数据
示例
如果有一个方法接受一个动物类 型的参数,那么传入一个狗(动 物的一个子类)类型的对象是完 全合法的。
接口隔离原则
定义
客户端不应该依赖于它不使用的接口。
目的
降低类之间的耦合度,提高系统的可维护性和可扩展性。
示例
一个用户接口不应该依赖于未使用的功能接口,这样可以避 免不必要的依赖和潜在的冲突。
依赖倒置原则
分析类间关系
确定类与类之间的关系,如继承、聚合、关联 等。
设计类的结构
根据需求设计类的层次结构和类之间的组织结构。
系统功能分析
详细描述每个功能的输入、输出 和处理逻辑。
将复杂的功能分解为更小的功能 或操作。
从业务需求中提取系统需要实现 的功能。
功能分解 识别系统功能
功能描述
面向对象分析与设计
类(class)和实例(instance)
把具有相同特征和行为的对象归在一起就形成了类。类成为 对象的模板,抽象地描述了属于该类的全部对象的属性和操 作。 属于某个类的对象叫做该类的实例。
王辉 属性 王辉 男 湖南 计算机控制 1979.1 9#楼320室 服务 杨芳 属性 杨芳 女 北京 系统结构 1979.12 5#楼418室 服务 学生 属性 姓名 性别 籍贯 专业 出生年月 住址 服务 看书 实验 上课 运动
对象(object) 一般意义来讲,对象是现实世界中存在的一 个事物。可以是物理的,如一张桌子,也可 以是概念上的,如一个开发项目。 对象具有自己的静态特征(用数据描述)和动 态特征(行为或具有的功能)。
对象的分类: 外部实体:与软件系统交换信息的外部设备、相关子系统、操作 员或用户等。 信息结构:问题信息域中的概念实体,如信号、报表、显示信息 等。 需要记忆的事件:在系统运行过程中可能产生并需要系统记忆的 事件,如单击鼠标左键、击打键盘“”键等。 角色:与软件系统交互的人员所扮演的角色,如经理、部长、技 术支持等。 组织机构:有关机构,如单位、小组等。 位置:作为系统环境或问题上下文的场所、位置,如客户地址、 收件人(机构)地址等。 操作规程:如操作菜单、某种数据输入过程等。
通过在不同程度上运用抽象的原则,可以得到较一般的类和 较特殊的类。持殊类继承一般类的属性与服务,从而简化系 统的构造过程及其文档。 复杂的对象可以用简单的对象作为其构成部分(称作聚合)。 对象之间通过消息进行通信,以实现对象之间的动态联系。 通过关联表达对象之间的静态关系。 同名服务提供不同功能实现对象的多态性。
面向对象分析与设计 OOA&OOD
1 面向对象方法概述
面向对象的建模技术
面向对象的建模技术(OMT)以前,我们在用Fortran 、C 语言进行编程时实际上使用了一种叫做面向过程的程序设计方法,也就是所说的结构化方法。
这种方法强调对系统功能进行抽象,系统功能的实现是通过对若干个模块的调用来完成的。
历史已经证明这种方法在降低软件开发成本、提高软件生产率方面是一次失败的尝试。
为什么呢?客观世界是一个对象的世界,人类对客观事物的认识又是一个由特殊到一般、一般到特殊的过程。
而面向过程所能提供给我们的解决问题的方法却是“后一步的设计要满足前一步的要求” 。
这种强调系统功能、一环套一环的设计方法使我们设计出来的软件模块仅仅是满足了特定的需求,并且在软件系统后期维护过程中它仅能给程序员提供很小的活动空间。
回首往事,除了仅有的几个数学函数外又有多少个所谓的模块可以真正地重用!又有多少位软件工程师在为自己所做的“遗憾工程”感到惋惜!这些主要是由于计算机求解的问题空间与解题的方法空间不一致,两种空间的映射量太大!当然产生上述问题的最根本的原因还应是冯. 偌伊曼的计算机体系结构。
面向对象的方法正是在上述背景下产生的。
面向对象的方法认为:客观世界的问题都是由客观世界的实体及其相互之间的联系构成的。
我们把客观世界的实体称为问题对象,那么对象都有自己的运动状态及运动规律,不同对象之间的相互作用和相互通信就构成了完整的客观世界。
使用面向对象的方法人们可以逐步去解决问题,而在问题逐步深入过程中不必去重新修改前面已完成的设计工作。
由于采用了数据抽象和封装技术,面向对象的程序设计降低了各模块间的关联程度,这就相对减少了程序员之间的相互影响。
这项技术是在设计初期只由有很少的程序员介入的情况下,通过在对象系统中建立一个高层次的通讯环境来实现的,它使得今后更改引起的成本大大降低。
使用面向对象的方法详细定义用户的数据类型,将它们封装在一起又可实现较高的代码利用率。
当今,计算机产业正朝着分布式处理、并行处理、网络化和软件生产工程化发展,而面向对象的方法是作为实施这些目标的关键技术之一。
软件工程 面向对象的技术
1. Coda方法的OOA
类与对象层 属性层 服务层
类的边界 实例的边界 实例连接
属性 消息连接
服务
结构层
主题层
泛化与特化结构 主题
整体与部分结构
图4.10 分析过程的五个层次
在Coda方法中, 构 造 和 评 审 OOA 概 念模型的顺序由五 个层次组成:类与 对象、属性、服务、 结构和主题
这五个层次表 示分析的不同侧面。
继承是使用现存的定义作为基础,建立新定义的 技术。是父类和子类之间共享数据结构和方法的机制, 这是类之间的一种关系。
继承性分:
单重继承:一个子类只有一个父类。即子类只继承 一个父类的数据结构和方法。
多重继承:一个子类可有多个父类。继承多个父类 的数据结构和方法。
基类
现存类定义 父类(基类)
继承
图 4.3 继承性
良好的接口,子系统内的类相互协作。标识问题本身 的并发性,为子系统分配处理器。
系统内部
保险单 填写界面
保险单
客户
数据库界面 (abstract)
Oracle 界面 Sybasec界面
子系统的分解是关键,可以有分层和分块:
分层:将软件系统组织为层次结构,每层是一个子系 统。分层结构又分为封闭式和开放式。
类具有属性,用数据结构来描述类的属性, 类具有操作,它是对象的行为的抽象,操作实现 的过程称为方法(method) ,方法有方法名,方法体 和参数。
由于对象是类的实例,在进行分析和设计时, 通常把注意力集中在类上,而不是具体的对象上。
对象和类的描述
类和对象一般采用“名字”、“属性”和“运算”来描 述。
基本概念: 问题域(problem domain) — 被开发系统的应用领域。 系统责任(system responsibilities) — 所开发的系统应 具备的职能。
面向对象的软件开发方法分析论文
面向对象的软件开发方法分析论文•相关推荐面向对象的软件开发方法分析论文面向对象的技术是计算机软件技术史上的一次革命,为软件开发拉开了新的篇章。
面向对象的软件开发方法,是一种以对象建模为基础,自底向上和自顶向下相结合的方法,包括了所有对象的数据结构。
基于此,文章从传统软件开发方法存在的问题出发,并以此为基础,对面向对象的软件开发方法展开分析,以供参考。
相比传统的软件开发方法,面向对象的软件开发方法(OMT)实现了质的飞跃,采用了一种自底向上的归纳、自顶向下的分解方法,通过对对象建模的建立,彻底解决了软件开发在需求分析、可维护性以及可靠性三大环节上的问题,同时也大大提高和改善了系统的可维护性。
可见,面向对象的软件开发方法,作为一种归纳和演绎思想的综合体现,其对软件设计、软件开发所起的促进作用是毋庸置疑的。
一、传统软件开发方法存在的问题(一)软件复用性差在软件开发工程所追求的目标当中,软件复用性是重点之一,同时也是节约人力和提升软件生产率的重要渠道。
虽然近年来软件当中的结构化分析、结构化设计和结构化程序开发给软件产业带来了巨大的进步,但是还不足以从根源上解决软件重复使用的问题。
(二)软件可维护性差传统的软件开发方法过于侧重一致、完整的文件合成最终的产品,以致在整个开发过程中,软件的可测试性、可读性和可修改性成了衡量一个软件产品优劣的重要标准。
事实上,在软件的实际应用中,我们可以发现这类产品的维护性差,且所消耗的成本相当高。
(三)开发出的软件不能满足用户需要传统的结构化方法所涉及的知识领域比较广泛,以致使用它开发大型软件时,一旦遇到系统需求模糊或者系统发生动态变化,就会影响开发效率,导致最终开发出来的软件脱离用户实际需求。
(四)软件质量难以保证传统的软件开发方法所开发出来的复杂型大型软件,或者是需求模糊的系统,绝大多数都是难以成功投入市场使用的。
归其原因,主要有以下两大因素:第一,软件开发人员对用户的实际需求理解不够透彻,以致最后开发出来的软件和用户的期待不相符;第二,所开发出来的软件灵活性低,无法适应用户需求的经常性变化,再加上部分用户有时会在软件的一些使用性能方面提出部分要求,倘若系统的设计和开发是基于过程中,那么软件系统的可扩充性和稳定性就会无法适应变化,而这种变化也会对软件系统自身的机构造成影响,设计、开发的成本也会随之提高。
面向对象方法概论
习题第1章面向对象方法概论1、与传统开发方法相比,面向对象方法有什么优点?2、查阅资料,进一步讨论UML与面向对象方法的关系。
3、封装的目的是什么?在面向对象方法中封装的目的是如何达到的?4、针对你过去使用传统开发方法所建造的系统的不足,总结一下问题的原因。
考虑如果使用面向对象方法,在哪些方面可能会获益。
5、面向对象方法的一个主要原则是抽象。
思考一下在工作和学习中你经常在什么场合下运用抽象原则。
第2章什么是面向对象分析1、简述OOA模型及OOA过程。
2、为什么要进行OOA?3、简述问题域与系统责任间的关系。
4、OOA是如何应对需求变化性的?5、为什么把用类图构建的模型称为基本模型?6、你对本章讲述的分析面临的主要问题有过什么实际感受?请举例说明。
第3章建立需求模型——用况图1、用况之间的关系可为包含关系、扩展关系或继承关系,三种关系之间有相同之处吗?它们之间的区别又在哪?2、论述用况图在面向对象方法中的地位。
3、怎样理解把系统内外的交互情况描述清楚了,就明确了系统边界?4、对于3.3.1节中的收款用况,补充用信用卡付款和使用优惠卡的描述。
5、通常自动售货机会按用户的要求进行自动售货,供货员会巡查向其内供货,取款员会定时取款。
针对上述要求,请建立用况图,并描述各个用况。
6、现要开发一个购书积分系统,其中至少要具有申请积分卡、增加积分、查看积分和按积分奖励功能。
请建立用况图,并描述各个用况。
第4章建立类图1、论述类与对象之间的关系以及关联与链之间的关系。
这四者之间还有什么联系吗?2、在什么情况下使用组合关系进行建模?3、总结继承关系的用途。
4、图4-44表明,一名教师可以在一个或多个系中任职,而且在二者间使用的是聚合关系。
在二者间可以使用组合关系吗?请解释原因。
5、举例说明类继承结构中的重载与多态。
6、面包是由面包片组成的。
面包与面包片之间的关系是聚合还是组合?7、一本书含有若干章,一章有若干节,一节由一些段落和图组成,一个段落由一些句子组成。
1.3 面向对象的分析方法
1.3 面向对象的分析方法面向对象分析作为一个比较全面的方法,面向对象分析由五个主要步骤组成,即确定类与对象,识别结构,识别主题,定义属性和定义方法。
一旦建立了模型,就可以由五个层次来表示,它们是:主题层主题给出分析模型的总体概貌。
对象层对象是数据及其处理的抽象。
它反映了系统保存和处理现实世界中某些事物的信息的能力。
结构层结构表示问题域的复杂性。
类—成员结构反映了一般——特殊关系,整体——部分结构反映了整体和部分的关系。
属性层属性就是数据元素,可用来描述对象或分类结构的实例,可在图中给出并在对象的存储中定义。
方法层方法是在收到消息后必须进行的处理,在图上定义它并在对象的存储中指定。
一、确定类与对象1、什么是类、对象在面向对象分析中对象是一个封装体和抽象体,即是属性和处理这些属性的方法的封装体以及问题域的抽象体。
类是对一个以上对象的共同属性和方法集合的描述,包括如何在一个类中建立新对象的描述。
属性以及处理这些属性的方法的封装体对面向对象分析模型的稳定性影响很大。
首先,封装性是可以将属性和方法看成一个不可分割的整体的基础。
第二,封装性有助于减少重复劳动。
在面向对象分析中,对问题域中某件事情的抽象是很重要的。
事实上,在每次分析活动中,分析人员必须首先理解要分析的问题域。
而将对象定义为现实世界的抽象,这样有助于深刻理解问题域,从而获得系统模型。
这种模型至少可以产生一个现实的可观察且可管理的模型层集合,包括主题、对象、结构、属性和方法。
系统模型还为上下文的初始表示奠定了基础。
上下文树是由系统分析人员在分析过程中画出来用于技术决策的。
系统上下文表明该系统包含有几个问题域、要保存什么样的数据、处理的复杂程度如何等。
系统上下文有着“四重约束”,即预算、进度、性能和人员。
为了使一个项目顺利进行,必须满足所有这四个约束。
2、为什么要识别对象识别对象的主要目的是为了使一个系统的技术表示同现实世界更为接近。
这种分析的表示和策略是依据人类的3种基本分析方法的,即对象和属性,类与成员,以及整体和部分。
omt的使用--(通信软件)
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
View
object operation OMT 显示信息
显示状态 连接
拆除连接 PCM 显示信息
定义PCM RBS 显示信息
监视 定义TEI 显示软件版本
显示环路测试参数
INIT Y Y Y
L I C N I C L I CONN
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
Y
MO VIEW能够显示已定义旳各个MO及各个MO旳“BTS”(如 MO TRXC有RES/START;MO LU有RES/DIS/ENA;)
3.4 OBJECT 菜单栏中的 OBJECT 可以下拉出几个硬件单元和逻辑单元,如 MO VIEW 与 PCM 中的主体,这个选择的主体在状态栏中显示。
选择的方法是: 1 选择一个 VIEW 窗口, 2 点窗口中的一个主体 3 状态栏中将显示被选主体。 另一个方法是: 1 选择一个 VIEW 窗口 2 SELECT OBJECT/SELECT 3 选择窗口中的或者是下拉菜单栏中的一个主体 4 确认(OK) 5 选择的主体将显示在状态栏中 3.5 OPERATION 每一个主体都有一个可以执行的操作,但操作内容不同, 决定于具体选取择的对象, 方法是: 按上面讲的方法选择一个主体,之后选择 OPERATION。
每一个 VIEW 都提供若干的操作对象,这些对象包括硬件单元 与逻辑单元,例如:PCM、外部告警、MO。窗口中的灰色图标便 是可提供选择的,选择之后会变色。一个空的主体是不能选择的,
使用面向对象的omt方法
使用面向对象的omt方法
面向对象的OMT方法是对象模型技术的一种,它是一种分析和设计面向对象系统的步骤。
其步骤包括:
(1)理解问题。
在这一步中,要明确和分析清楚客户在关注哪些问题、操作什么功能、需要实现哪些特定的服务。
(2)古典对象解决方案的确定。
在这一步中,要确定解决问题的对象模型,分析并与客户沟通,得出具有明确功能的对象模型。
(3)识别影响对象的事件。
在这一步中,需要识别能够影响对象的事件,以及事件发生是如何影响对象的。
(4)识别对象之间的相互关系。
在这一步中,要分析清楚对象之间的相互关系及其行为以及它们如何相互作用。
(5)提炼、验证和测试对象模型。
在完成了之前的步骤后,就可以开始提炼和完善对象模型,并对其进行有效的验证和测试。
几种典型的面向对象方法简介
Jacobson方法 方法
• Jacobson方法是从目标系统的输入、输 方法是从目标系统的输入、 方法是从目标系统的输入 出数据结构入手,导出程序框架结构, 出数据结构入手,导出程序框架结构, 再补充其他细节, 再补充其他细节,就可得到完整的程序 结构图。这一方法对输入、 结构图。这一方法对输入、输出数据结 构明确的中小型系统特别有效, 构明确的中小型系统特别有效,如商业 应用中的文件表格处理。 应用中的文件表格处理。
• OMT方法是一种思考问题的方法,而不 方法是一种思考问题的方法, 方法是一种思考问题的方法 仅仅是一种编程技术。 仅仅是一种编程技术。
• OMT方法是从三个相关但体现系统不同 方法是从三个相关但体现系统不同 方面的角度去对一个系统进行建模的, 方面的角度去对一个系统进行建模的, 得到的三种模型分别是对象模型 对象模型、 得到的三种模型分别是对象模型、动态 模型和功能模型。 模型和功能模型。 • 每一种模型描述系统的一个方面: 每一种模型描述系统的一个方面:
• OMT方法并不是最新的方法,一种叫做 方法并不是最新的方法, 方法并不是最新的方法 UML(Unified Modeling Language,统 , 一建模语言或标准建模语言)的方法目前 一建模语言或标准建模语言 的方法目前 已经开始成为面向对象的工业标准, 已经开始成为面向对象的工业标准,详 章节。 见UML章节。 章节
• Booch方法提供了丰富的符号体系,包 方法提供了丰富的符号体系, 方法提供了丰富的符号体系 括类图(类结构 静态视图)、对象图(对 类结构- 括类图 类结构-静态视图 、对象图 对 象结构-静态视图)、状态转移图(类结 象结构-静态视图 、状态转移图 类结 动态视图)、时态图(对象结构 对象结构- 构-动态视图 、时态图 对象结构-动 态视图)、模块图(模块体系结构 模块体系结构)、 态视图 、模块图 模块体系结构 、进程 进程体系结构)。 图(进程体系结构 。 进程体系结构
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第11章 面向对象的OMT方法
系统设计阶段确定整个系统的体系结构。以对象 模型为指导,系统可由多个子系统组成,把对象组织 成聚集并发任务而反映并发性,对动态模型中处理的 相互通信、数据存储及实现要制定全面的策略,在权 衡设计方案时要建立优先顺序。
对象设计阶段要精心考虑和细化分析模型,然后 优化地生成一个实际设计。对象设计的重点从应用域 概念转到计算机概念上来,应选择基本算法来实现系 统中各主要功能。
(4) 实现系统设计中的软件控制。 (5) 为提高继承而调整类体系:是指为提高继承 而调整和重新安排类和操作,从多组类中把共同行为 抽取出来。 (6) 设计关联的实现:分析关联的遍历,使用对 象来实现关联或者对关联中的1、2个类增加值对象的 属性。
第11章 面向对象的OMT方法
(7) 确定对象属性的明确表示:是将类、关联封 装成模块。
第11章 面向对象的OMT方法
4. 构造功能模型 构造功能模型的步骤如下: (1) 确定输入、输出值。 (2) 需要时使用数据流图来表示功能依赖关系。 (3) 描述各功能“干什么”。 (4) 确定约束。 (5) 详细说明优化标准。 最后得到:功能模型 = 数据流图 + 约束。
第11章 面向对象的OMT方法
第11章 面向对象的OMT方法
OMT方法学是组织开发的一种过程。这种过程是建立在 一些协调技术之上的,OMT方法的基础是开发系统的3个模 型,再细化这3种模型,并优化以构成设计。对象模型由系 统中的对象及其关系组成,动态模型描述系统中对象对事 件的响应及对象间的相互作用,功能模型则确定对象值上 的各种变换及变换上的约束。 11.1.2 系统分析
5. 验证、重复并完善细化 3 种模型 最后得到:分析文档 = 问题陈述 + 对象模型 + 动态模型 + 功能模型。 11.1.3 系统设计 在系统设计阶段建立系统的高层结构,有各种标 准结构可以用作设计的起点。面向对象的开发方法对 系统设计没有什么特殊的限制,但覆盖了完整的软件 开发阶段。系统设计的开发步骤如下: (1) 将系统分解为各子系统。 (2) 确定问题中固有的并发性。
最后得到:对象设计文档 = 细化的对象模型 + 细 化的动态模型 + 细化的功能模型。
第11章 面向对象的OMT方法
11.2 建模概念
11.2.1 对象模型 对象模型表示了静态的、结构化的系统数据性质,
描述了系统的静态结构,它是从客观世界实体的对象 关系角度来描述的,表现了对象的相互关系。该模型 主要关心系统中对象的结构、属性和操作,使用了对 象图的工具来刻画,它是分析阶段三个模型的核心, 是其他两个模型的框架。
期。它覆盖了问题构成、分析、设计和实现等阶段。 系统分析阶段涉及对应用领域的理解及问题域建
模。分析阶段的输入是问题陈述,说明要解决的问题 并提供了对假想系统概念的总览,同用户不断对话以 及对客观世界背景知识的了解作为分析的附加输入, 分析的结果是一个形式化模型。该模型概括了系统的3 个本质因素:对象及对象之间的关系、动态的控制流 以及带有约束的功能数据变换。
1. 对象和类 1) 对象
第11章 面向对象的OMT方法
对象就是应用领域中有意义的事物。对象建模的 目的就是描述对象,把对象定义成问题域的概念、抽 象或者具有明确边界和意义的事物。对象有两种用途: 一是促进客观世界的理解,二是为计算机实现提供实 际基础。问题分解为对象依赖于对问题判断和问题的 性质。对象的符号表示如图11.1所示。
第11章 面向对象的OMT方法
第11章 面向对象的OMT方法
11.1 OMT方法概述 11.2 建模概念 11.3 系统分析 11.4 系统设计 11.5 对象设计 11.6 小结 习题
ห้องสมุดไป่ตู้
第11章 面向对象的OMT方法
11.1 OMT方法概述
11.1.1 OMT方法学 OMT是一种软件工程方法学,支持整个软件生存周
第11章 面向对象的OMT方法
11.1.4 对象设计 对象设计时,对分析模型进行详细分析和阐述并且奠
定实现的基础,从分析模型的面向客观边界的观点转到面 向实现的计算机观点上来。对象设计步骤如下:
(1) 从其他模型中获取对象模型上的操作:在功能模 型中寻找各个操作,为动态模型中的各个事件定义一个操 作,这个操作与控制的实现有关。
第11章 面向对象的OMT方法
(3) 将各子系统分配给处理器及任务。 (4) 根据数据结构、文件及数据库来选择实现存 储的基本策略。 (5) 确定全局资源和制定控制资源访问的机制。 (6) 选择实现软件控制的方法。 (7) 考虑边界条件。 最后得到:系统设计文档 = 系统的基本结构 + 高层次决策策略。
(2) 设计实现操作的算法:指选择开销最小的算法, 选择适合于算法的数据结构,定义新的内部类和操作。给 那些与单个类联系不太清楚的操作分配内容。
第11章 面向对象的OMT方法
(3) 优化数据的访问路径:指增加冗余联系以减 少访问开销,提高方便性,重新排列运算以获得更高 效率。为防止重复计算复杂表达,保留有关派生值。
第11章 面向对象的OMT方法
3. 构造动态模型 构造动态模型的步骤如下: (1) 准备典型交互序列的脚本。 (2) 确定对象间的事件并为各脚本安排事件跟踪。 (3) 准备系统的事件流图。 (4) 开发具有重要动态行为的各个类的状态图。 (5) 检查状态图中共享事件的一致性和完整性。 最后得到:动态模型 = 状态图 + 全局事件流图。
分析的目的是确定一个系统“干什么”的模型,该模 型通过使用对象、关联、动态控制流和功能变换等来描述。 分析过程是一个不断获取需求及不断与用户磋商的过程。
1. 问题陈述 问题陈述为记下或获取对问题的初步描述。
第11章 面向对象的OMT方法
2. 构造对象模型 构造对象模型的步骤如下: (1) 确定对象类。 (2) 编制类、属性及关联描述的数据词典。 (3) 在类之间加入关联。 (4) 给对象和链加属性。 (5) 使用继承构造和简化对象类。 (6) 将类组合成模块,这种组合在紧耦合和相关 功能上进行。 最后得到:对象模型=对象模型图+数据词典。