OO2分析3-类图

合集下载

OO概述

OO概述

类图
特征字符串 property-string:
明确地指明该属性可能的候选值,如{红,黄,绿}
定义为类属性(static attibute),用下划线指明
Job 类属性 实例属性 类操作 实例操作 maxCount:Integer=0 jobID:Integer create(){jobID=maxCount++} schedule()
用例
message
交互
Com1
Com2
Com3ClassAClassA-D *
ClassD
Com4 Iface
ClassB
ClassC
ClassB
ClassC
分析类
设计类
类图与用例图的关系
类图的角色——外观和机理
教学目标
掌握类图的表示方式 掌握类间关系的表示方式 学习类图的构建过程 构建在线拍卖系统的类图
12
面向对象的基本概念
类(Class)
• 一个对象类描述的是具有相似性质(属性)的 一组对象,这组对象具有一般行为(操作), 一般的关系(对象之间)及一般语义。 • 类是对象类的缩写,类中的对象有着相同的属 性、行为模式。
13
面向对象的基本概念
类(Class)
结构化程序设计
处理方法 (函数)
18
面向对象的基本概念
封装的定义为: (1)一个限定所有对象内部软件的一个清楚界面; (2)一个描述这个对象和其它对象之间相互作用的接口 (3)受保护的内部实现,这个实现给出了由软件对象提 供的功能细节,实现细节不能在定义这个对象的类的 外面访问 方法 存储结构

一个对象
公有 消息 私有 消息

OO思想

OO思想
13

多态机制


类关系与类图

类之间的四种基本关系(约束)


关联(association) 泛化(generalization) 实现(realization) 依赖(dependence)
类图(Class diagram)是最常用的UML图,显示出类、接口以及它们之间的 静态结构和关系;它用于描述系统的结构化设计。 类图以一种更一般的方式指定了系统的任何合法状态都必须满足的特性 对象图是类图的一个实例,对象图中的链接满足类图中定义的各种约束 对象图是对象与链接的集合,显示系统的一个特定状态
2
OO的基本概念



类 对象 封装 继承 重载 多态
3



是对具有相同数据和相同操作的一组相似对象的 抽象定义 理解

是对具有相同属性(不同值)和行为的一组对象的描述 是支持继承的抽象数据类型,是对象实例化的模版 一个对象就是类的一个实例 类定义了对象的特征,分为属性和操作 属性,定义类实例存储的数据,是对客观实体所具 有共同性质的抽象,类实例化的每个对象都有自己 特有的属性值 操作:也称方法,定义类实例的动态行为(算法)

两种重载
public
重载机制

提高OO程序灵活性和可读性
12
多态(Polymorphism)

描述:


通过重写(override)父类的同名操作,使子类对象和父类 对象接受同一消息,却提供不同服务 不同层次的类共享一个行为(函数名、参数和返回值类型 都相同),但行为实现却不同
动态联编(dynamic binding),也称滞后联编(late binging) 运行时,消息发送对象不知道谁将接收消息,依赖接 收对象以一种恰当的方式解释消息,根据消息接收对象所 属的类,决定实现什么样的行为,享受什么样的服务 增强OO系统的灵活性,减少信息冗余,提高软件的可重 用性和可扩充性

tanhuobin_uml05[1].Use-Case+Analysis

tanhuobin_uml05[1].Use-Case+Analysis

行为都是由相应的类来完成的 因此这些行为必须被分配到类中
分析阶段就是对这个过程的第一次尝试 这是一个从“无”到“有”的跨越
用例分析:对于每个用例实现
查找分析类
为分析类分配职责
构造参与类类图
-38-
分析类:达成目标的第一步
用例分析
-39-
什么是分析类
分析类代表了“系统中必须具备职责
用例分析流程
-20-
构架分析
构架分析的过程就是定义系统高层组
织结构和核心构架机制的过程
1.定义系统高层组织结构—备选构架
2.确定系统通用构架机制—分析机制
-21-
1.定义备选构架
RUP中的“定义备选构架”
创建系统
构架的初始草图 初步定义一组在构架方面具有重要意义的元素,
层之间建立依赖关系
-28-
2.构架机制
构架机制是对通用问题的决策、方针
和实践
构架机制描述了针对一个经常发生的问
题的一种通用解决方案 作为系统构架的一部分,构架机制常常 集中和定位在系统的非功能需求上
三类构架机制
分析机制(概念) 设计机制(具体) 实现机制(实际)
-29-
为什么使用分析机制
删除多余候选 删除不清楚的候选 删除执行者(系统外) 删除实现构造 删除属性 删除操作
-47-
示例:候选实体类
“学生选课”用例基本路径中的候选
实体类
-48-
示例:总结:分析类
-49-
总结:从用例中查找分析类
-50-
实例-旅店预订系统中查找分析类
-51-
2.2将用例行为分配给类
-26-
MVC备选构架示意图B-C-E

UML类图解析

UML类图解析

UML类图解析1. 类类(Class)封装了数据和⾏为,是⾯向对象的重要组成部分,它是具有相同属性、操作、关系的对象集合的总称。

在系统中,每个类都具有⼀定的职责,职责指的是类要完成什么样的功能,要承担什么样的义务。

⼀个类可以有多种职责,设计得好的类⼀般只有⼀种职责。

在定义类的时候,将类的职责分解成为类的属性和操作(即⽅法)。

类的属性即类的数据职责,类的操作即类的⾏为职责。

设计类是⾯向对象设计中最重要的组成部分,也是最复杂和最耗时的部分。

类图(Class Diagram)使⽤出现在系统中的不同类来描述系统的静态结构,它⽤来描述不同的类以及它们之间的关系。

在系统分析与设计阶段,类通常可以分为三种,分别是实体类(Entity Class)、控制类(Control Class)和边界类(Boundary Class),下⾯对这三种类加以简要说明:(1) 实体类:实体类对应系统需求中的每个实体,它们通常需要保存在永久存储体中,⼀般使⽤数据库表或⽂件来记录,实体类既包括存储和传递数据的类,还包括操作数据的类。

实体类来源于需求说明中的名词,如学⽣、商品等。

(2) 控制类:控制类⽤于体现应⽤程序的执⾏逻辑,提供相应的业务操作,将控制类抽象出来可以降低界⾯和数据库之间的耦合度。

控制类⼀般是由动宾结构的短语(动词+名词)转化来的名词,如增加商品对应有⼀个商品增加类,注册对应有⼀个⽤户注册类等。

(3) 边界类:边界类⽤于对外部⽤户与系统之间的交互对象进⾏抽象,主要包括界⾯类,如对话框、窗⼝、菜单等。

在⾯向对象分析和设计的初级阶段,通常⾸先识别出实体类,绘制初始类图,此时的类图也可称为领域模型,包括实体类及其它们之间的相互关系。

2. 类的UML图⽰在UML中,类使⽤包含类名、属性和操作且带有分隔线的长⽅形来表⽰,如定义⼀个Employee类,它包含属性name、age和email,以及操作modifyInfo(),在UML类图中该类如图所⽰:1class Employee {2private String name;3private int age;4private String email;56public void modifyInfo() {7 ......在类图2中,操作method1的可见性为public(+),带⼊了⼀个Object类型的参数par,返回值为空(void);操作method2的可见性为protected(#),⽆参数,返回值为String类型;操作method3的可见性为private(-),包含两个参数,其中⼀个参数为int类型,另⼀个为int[]类型,返回值为int类型。

第三章 类图

第三章 类图

3.1 类图的概念
图3-1电子商务网站的对象模型
3.1 类图的概念
2、类图的作用 类图常用来描述业务或软件系统的组成、结构和关系。
3、类图的组成元素 类 接口 协作 关系 注释 约束 包
3.2 UML中的类
1、类的表示 (1)类的定义
类是具有相似结构、行为和关系的一组对象的描述 符。 (2)类的表示
关于聚合与组合
2、泛化-Generalization
表示两个类元间“一般”与“特殊”的关系。 对应面向对象编程语言中类与类之间的继承关系。 “is a kind of”关系,XX是一种XX
Athlete
SwimmerBiblioteka Golfer3、实现-Realization
表达一种说明元素与实现元素之间的关系; 类和接口之间的关系是实现关系,表示类实现接口提供的
3.2 UML中的类
(7)类的约束 约束指定了类所要满足的一个或多个规则。 在UML中,约
束是用花括号括起来的自由文本。
Washing Machine
Brand name Model name Serial number Capacity Add clothes( ) Add detergent( ) Remove clothes( )
表示客户与提供者之间用不同的方法表现同一个概念, 通常一个概念更抽象,一个概念更具体。包括:
① 跟踪<<trace>>--声明不同模型中的元素之间存在一些 连接但不如映射精确。
② 精化<<refine>>--声明具有两个不同语义层次上的元 素之间的映射。
③ 派生<<derive>>--声明一个实例可以从另一个实例导 出。

UML类图详细教程ppt课件

UML类图详细教程ppt课件

Teacher
view,maintains
Grades
view
view
contains
student
Administrator generates
精选ppt课件R2e02p1ortCard
41
进一步创建类的关联: 增添WebSite类和Logon类
Teacher
view,maintains
contains
模型表达意义: •每个Person对象能够为很 多Company对象工作。 •每个Company对象能够雇佣很多Person对象
精选ppt课件2021
30
然而,当每个Person与雇佣它的Company间存在薪水属性时会发 生什么呢?薪水记录在何处呢?记录在Person类中还是在 Company类中?
21
关联的多重精选性ppt课件2021
22
角色 类关系还可以通过添加角色来进一步丰富。在类图中使用角色
可以帮助读者理解第一个类对于第二个类的作用。角色与多重性 显示在相同的位置,在指示类之间关系线的上面或者下面,如下 图所示。
精选ppt课件2021
23
下图显示了player类和Team类在关联中分别扮演两个角色。
答案是薪水实际上是关联本身的特性,对于Person对象和 Company对象之间的每个雇佣链接都存在特定雇佣的特定薪 水。
UML允许你使用关联类来建模这种情况,如下图所示。
精选ppt课件2021
31
2)依赖关系
依赖关系是指一个类的元素使用了另一个类。依赖关系描述类 之间的引用关系。
精选ppt课件2021
类的图精形选p表pt课示件和202示1 例
4
在类图中,根据建模的不同景象,类图标中不一定列出全部的 内容。如在建立分析模型或设计模型时,甚至可以只列出类名, 在图中着重表达的是类与类之间的联系;在建立实现 模型时,则应当在类图标中详细给出类的属性和方法等细节。

UML复习资料(完整)

UML复习资料(完整)

2011UML复习题纲一、选择、判断、填空第一章UML与面向对象1、UML(Unified Modeling Language,统一建模语言)是软件和系统开发的标准建模语言,它主要以图形的方式对系统进行分析、设计。

2、UML是在多种面向对象分析与设计方法相互融合的基础上形成的,是一种专用于系统建模的语言。

它为开发人员与客户之间,以及开发人员之间的沟通与理解架起了“桥梁”。

3、UML不是开发工具,只是建模语言。

4、OOA三种基本模型:功能模型、对象模型、动态模型。

5、软件是程序、数据和相关文档的完整集合。

6、软件开发过程分为如下几个阶段:需求分析、总体设计、详细设计、编程与测试、维护。

7、面向对象的软件工程方法包括面向对易用的分析(OOA)、面向对象的设计(OOD)、面向对象的编程(OOP)。

8、软件方法学包含3个要素:方法、工具和过程。

9、对象是现实世界中一个实际存在的事物,它可以是看得见摸得着的东西。

10、类是一组具有相同属性的操作的对象集合,它为所有属于该类的对象提供了统一的描述。

11、封装是指将对象属性和操作结合在一起,构成一个独立的对象。

封装使得对象属性和操作紧密结合在一起,这反映了事物的状态特性与动作是事物不可分割的特征。

12、继承是指子类可以拥有父类的全部属性和操作,继承是OO方法的一个重要的概念,并且是OO技术可以提高软件开发效率的一个重要原因。

13、多态性是指在父类中定义的属性和操作被子类继承后,可以具有不同的数据类型或表现出不同的行为。

14、OO开发中的三层设计:问题域类、GUI类和数据访问类。

15、面向对象设计准则:模块化、抽象、信息隐藏、低耦合、高内聚。

16、UML的构成:元元模型层、元模型层、模型层、用户模型层。

17、UML的核心是由视图、图、模型元素、通用机制组成。

18、UML中的视图细分:(1)用例视图(用例视图强调从系统的外部参与者角度需要的功能,描述系统应该具有的功能);(2)逻辑视图(逻辑视图的使用者主要是设计人员和开发人员,描述用例视图提出的系统功能的实现);(3)并发视图(并发视图的使用者主要是开发人员和系统集成人员,它主要考虑资源的有效利用、代码的并行执行以及系统环境中异步事件的处理);(4)组件视图(组件是不同类型的代码模块,它是构造应用的软件单元。

UML-3-类图

UML-3-类图
xor关联也可以通过泛化的方式来表达
Account * 1 Owner
Company
Person
图6-14 用泛化表示xor关联
(2)泛化(Generalization)
类之间存在相似性和差异性,通过泛化,子类共享 定义在一个或多个父类(Parent class)里的结构或行 为 泛化有时被称作“is a kind of”关系 泛化是指父类与其一个或多个子类之间的关系 父类拥有公共属性、方法和关联,子类除了具有父 类的属性、方法和关联之外,还具有自己特征 每个子类继承(Inherit)其父类的特征
1 OilPump
oilPumNumber getOilPumNumber()
1 Engine
engineNumber getEngineNumber()
图6-9 组合和聚合
0..1
Radio panelNumber getPanelNumber()
(1)关联(Association)
6) 自关联
(2)类的属性
3)属性名
属性的命名应该用首字母小写的名词为属 性命名 如果属性名中包括多个单词,除了第一个 单词外,应该把其余单词的第一个字母大 写 4) 属性的类型 用冒号分隔属性名和属性的类型
(1) 关联(Association)
关联(Association)表示一个对象拥有另一个 对象 关联指两个类之间的“has a”的关系。关联 描述了有着共同的结构和语义的一组对象之 间的连接
2 类图
类图 (Class Diagram) 类图用于建立类、类的内部结构(类的属性和 方法)以及类与类相互之间的各种关系模型 类图是我们编程的最重要的模型依据 此外领域类图也可以充当数据模型(类似ER 模型)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在尚未确定是不是主动对象之前,暂时用普通对象的类符号表示。
2019/9/19
15
类的命名
适合该类及其特殊类的全部对象实例*
汽车加摩托车->机动车;还有马车->车辆
反映个体而不是群体*
书-书籍;船-船舶*
使用名词,或带有定语的名词 ,避免无意义的符号
如线装书
考虑使用适当种类的语言文字对类命名。
它代表属于该类的全部对象实例。
类名 属性 操作
对象名:类名
普通类
对象
识别对象与类
在识别对象与类时,问题域和系统责任仍是 工作的基础。因为二者从不同的角度告诉分 析员应该设立哪些对象。
研究问题域
侧重于客观存在的事物与系统中对象的映射。 可以启发分析员发现对象的因素包括:人员、组 织机构、物品、设备、事件(如索赔、上访、交易) 、表格、日志、报告和结构等。 其中的结构可能是多种多样的,例如,在概念类 别上,汽车之上有车辆,之下可细分为客车和轿车, 左右有摩托车和拖拉机,之内有发动机。它还可作成 车队的一个成分。
人员
设备
外系统
从不同的角 度考虑人员 和设备
考虑系统责任
对照系统责任所要求的每一项功能,查看是否可以由现有的对 象完成这些功能。这可启发我们发现问题域中某些遗漏的对象。
如果已经建立了用况模型,考虑执行下列的附加步骤: ■ 使用用例产生场景。 ■ 使用场景寻找已错过的类。
名词技术
从名词到对象或类通常有一对一的映射。运用名词、代词和名
划线的方式,表示类范围的属性,否则属性 是实例范围的。
属性1 ······ 属性n
操作1 ······ 操作m
普通类
识别属性
按常识这个对象应该有哪些属性? 在当前的问题域中,对象应该有哪些属性? 根据系统责任,这个对象应具有哪些属性*?
如信用卡的使用 建立这个对象是为了保存和管理哪些信息? 对象为了完成其功能,需要增设哪些属性? 对象是否需要通过专设的属性区别其状态*?
在中国:可用中、英文双重命名*
建立类图的对象层
用类符号表示每个对象类 填写类描述模板 若发现新的属性与操作、关系,可以随时加到类符号中。
第四章 建立基本模型—类图
2 定义属性与操作
2019/9/19
17
17
定义属性
属性是用来描述对象静态特征的一个数据项 。 注意:属性是与问题高度相关的。 从技术观点上,属性是一些变量(数据项或状态信息), 包含它的每一个对象(实例)都具有自己的值。 按照面向对象方法的封装原则,一个对象的属性和操作是 紧密结合的,对象的属性只能由这个对象的操作存取。
在类描述模板中,写出:
说明操作的职责
操作原型(消息的格式)
消息发送(指出在这个操作执行时,需要请求哪些别的 对象操作,即接收消息的对象类名以及执行这个消息的 操作名)
约束条件:如果该操作的执行有前置条件、后置条件, 以及执行时间的要求等其它需要说明的事项,则在这里 加以说明。
实现操作的方法(文字、活动图或流程图)。
类是对一组具有相同属性和操作的一组对象的抽象描述。 一个类的所有对象具有相同的属性。 各个对象的属性值则可以互不相同,并且随着程序的执行而 变化。 操作,对于一个类的所有对象都是一样的。 由一个类生成的一个对象可以扮演不同的角色。 一个类的一个角色是在特定的语境下该类的对象所呈现的行 为。
表示法:在模型中用类符号来表示一个类,
在OOA中,只对识别那些必须由对象提供的、在算法上复杂 的业务操作(如要进行某些计算或监控操作 )感兴趣。
定义操作的策略与启发
(1)考虑系统责任 有哪些功能要求在本对象提供*?
(2)考虑问题域 对象在问题域对应的事物有哪些行为* ?
(3)分析对象状态 在每种状态下对象可能发生什么行为?对象状态的转换,是 由哪些操作引起的?--状态图讲述
如属性必须是整个实体的特征,而不是其成分的特征*
是否可通过继承得到? 可以从其他属性直接导出的属性; 与实现有关的因素,推迟到OOD考虑(规范化、对象标识、性 能问题)
属性的命名和定位
命名:原则与类的命名相同 定位:针对所描述的对象,适合全部对象实例。
属性的详细说明
把每个属性都填写到相应的类符号中去,并在相应的类 描述模板中进行详细说明。
(1)舍弃无用的对象 通过属性判断: 是否通过属性记录了某些有用的信息? 通过操作判断: 是否通过操作提供了某些有用的功能*? 二者都不是——无用 但是,也存在这样的对象,没有属性仅提供操作,或有属
性无操作的情况。
(2)对象的精简 只有一个属性的对象
班级 …… 1 ……
班主任
1
姓名
只有一个操作的对象
是不是高内聚的 一个操作应该只完成一项单一的、相对完整的功 能
调整——拆分 或 合并
2019/9/19
27
27
操作的命名和定位
命名:动词或动宾结构
定位: 与实际事物一致 例:售货员——售货*,商品——售出* 在泛化中的位置 ——适合类的全部对象实例
描述操作
把每个对象的操作都填写到相应的类符号中。
例如人的通信地址,包括国家、省、城市、街道、门牌号码等内容,但这些内容在通信地址 这个概念上是不可分的。在定义“人员”对象的属性时,应该使用一个属性“通信地址”,而不 应把有关通信地址的各项内容拆散开用多个属性来描述。
若一个对象与另一个对象有关系,其属性必须捕获该对象的性 质,而不是关系或关系中的其他对象的性质;
(4)追踪操作的执行路线 模拟操作的执行,并在整个系统中跟踪* 。
(5)用动词识别操作 (6)查看每一个属性,因为要用对象的操作来对其进行操纵
审查与调整
审查对象的每个操作 是否真正有用 是否直接提供系统责任所要求的某项功能? 或者 响应其它操作的请求,间接地完成某种功能的某 些局部操作? 调整——取消无用的操作
认识对象的主动行为并识别主动对象
主动对象是具有主动行为的对象,在设计阶段是拥有线 程或进程并能够启动控制活动的对象。主动类是其实例 为主动对象的类。 识别主动对象的策略: (1)考虑问题域
哪些对象需呈现主动行为*?--按定义
(2)考虑系统责任
根据系统责任观察系统功能的构成层次,重点考虑完成最外层 功能的对象是否应定义为主动对象。
词短语识别对象和类(寻找“现实世界”的对象和类)。
用单个的专有名词或代词(Jim、他、她、雇员号5、我的工作 站、我的家)以及直接引用的名词(第六个参赛者、第一百万次购 买)识别对象。
用复数名词(人们、顾客们、开发商们、用户们)以及普通名
词(人、顾客、雇员、工作站)来识别类。
2019/9/19
8
审查与筛选
(即捕获不同的概念),就需要把这样的概念作为不同的对象。
2019/9/19
12
抽象出类
对象分类 先使用问题域知识从对象中识别出类。
对类进行调整 (1)类的属性或操作不适合该类的全部对象 例:“汽车”类的“乘客限量”属性,不适合于吊车、铲车 问题:分类不够详细——进一步划分特殊类 (2)属性及操作相同的类 ——考虑能否合并为一个类,如计算机与吸尘器 (3)属性及操作相似的类 ——考虑能否提升出一个一般类,或形成整体部分结构。 例:轿车、货车,抽象出汽车;机床与鼓风机用电机做成分. (4)同一事物的重复描述 例:“职员”和“工作证” ——取消其中一个
[可见性] 属性名[‘:’类型][‘ =’初始值]
可见性分为+(公有的)、#(受保护的)或 -(私有的) 、 ~(包,只有在同一包中声明的类能够使用这一属性)。
在对象/类中,必须给每一个属性一个唯一的名字。 属性的类型可以是常见的基本数据类型,也可以是自己定 义的类型。
OO方法中有“实例属性”和“类属性”的概念之分。上
第四章 建立基本模型—类图
1 定义对象与类 2 定义属性与操作 3 定义关系 4 定义接口
2019/9/19
1
1
第四章 建立基本模型—类图
1 定义对象与类
2019/9/19
2
2
概念与表示法
对象是具有明确语义边界并封装了状态和行为的实体,由一 组属性和作用在这组属性上的一组操作构成,是构成系统的一 个基本单位,它用于描述客观事物。
如果想要在OOA阶段记录方法的详细文字描述或算法,则把 它们放在类描述模板中,如有必要也可放在注释中。该项工作应 该在OOD阶段完成。
识别操作
诸如创建(创建并初始化一个新对象)、连接(将一个对象 与另一个对象连接)、访问(得到或设置属性值)、断开连接( 将一个对象与另一个对象的连接断开)和删除一个对象之类的操 作都属于在算法上是简单的操作,在OOA不予以考虑。
操作
对象行为分类
(1)系统行为 例:创建、删除、复制、转存
(2)对象自身的行为——算法简单的操作 例:读、写属性值
(3)对象自身的行为——算法复杂的操作 计算或监控
2019/9/19
23
23
概念与表示法
操作是类的对象被要求执行的服务。
[可见性] 操作名[‘(‘参数列表’)’][‘:’返回类型]
可见性:+(公有的)、#(受保护的) 、-(私有的)或~(包) 。 内部操作和外部操作, 特征标记 类范围操作(静态操作)是用来创造实例或者操纵静态属性的 操作。 例如C++中的前面冠以static的成员函数,就是类范围操作。 表示法 类范围的操作用带下划线的名字和类型表达式串表示。实例 范围操作是默认的,对其不用标记。
问题域中的某些事物实际上是另一种事物的附属品和一定意 义上的抽象。例如,工作证对职员、车辆执照对车辆、图书索引 卡片对图书都是这样的关系。
有些时候,用相同的名词捕获两个不同的概念;这就必须产 生一个新词(补充对象),以确保每一个词捕获一个概念或“事 物”。
相关文档
最新文档