面向对象方法-UML(2)
UML面向对象概述

对象(Object)是面向对象的基本构造单元。是系 统中用来描述客观事物的一个实体,一个对象由一组属 性和对属性进行操作的一组方法组成。
对象不仅能表示具体的实体,也能表示抽象的规则 、计划或事件。主要有如下的对象类型:
(1)有形的实体:如汽车、书、计算机。 (2)作用:如医生、教师、员工、学生。 (3)事件:如飞行、事故、中断、开会等。 (4)性能说明:如车厂对车辆的性能说明,往往要 列出型号及各种性能指标等。
对外访问时提供了4种访问控制级别: (1)public:公有访问。 (2)protected:受保护的。 (3)private:私有访问。 (4)default:默认的。
继承(Inheritance)是一种一般类与特殊类的层次 模型。继承性是指特殊类的对象具有其一般类的属性和 方法,在其之上又增加了自己的特殊属性和方法。
l 对象(Object)是面向对象的基本构造单元。是系统中 用来描述客观事物的一个实体,一个对象由一组属性 和对属性进行操作的一组方法组成。一个类定义了一 组大体上相似的对象。一个类所包含的方法和数据描 述一组对象的共同行为和属性。
l 1.什么是对象,具有什么特征? l 2.简述面向对象的开发过程。 l 3.UML在面向对象开发过程中起到的作用是什么? l 4.什么是建模,有什么优点? l 5.什么是面向对象技术?
一个类定义了一组大体上相似的对象。一个类所包 含的方法和数据描述一组对象的共同行为和属性。例如 ,窗口,车轮,玻璃等都是类的例子。如图2.1所示的是 类的例子,其中类的名字是图书Book。
封装(Encapsulation)就是把一个对象的方法和属 性组合成一个独立的单位,并尽可能隐蔽对象的属性、 方法和实现细节的过程。
系统开发好后,在交付用户使用前,必须对程序进 行严格的测试,这个阶段称为面向对象测试OOT。
4-1UML类目介绍

期间,形成了以下 大学派 大学派, 期间,形成了以下2大学派,即: 第一种: 驱动的方法学。 第一种:以“方法(method )”驱动的方法学。 方法( 基本思想:在给出符号体系的基础上, • 基本思想:在给出符号体系的基础上,明确规定 进行的“步骤” 进行的“步骤”,并在每一步中给出 “实施策略”。 实施策略” 代表:P.Coad的 OOA(1990) OOD(91) • 代表:P.Coad的“OOA(1990)”, “ OOD(91) ” 优缺点分析: • 优缺点分析: 优点:容易学习和掌握。 优点:容易学习和掌握。 缺点:不够灵活, 缺点:不够灵活,可能对出现的新问题就没有 办法处理。 办法处理。
2 UML UML概述 1) UML概述
UML是一种可视化语言,用于: 是一种可视化语言,用于: 是一种可视化语言 规约系统的制品 系统的制品; (1)规约系统的制品; 构造系统的制品 系统的制品; (2)构造系统的制品; 建立系统制品的文档 系统制品的文档。 (3)建立系统制品的文档。 UML应用范围 应用范围 UML作为一种一般性的语言 作为一种一般性的语言: UML作为一种一般性的语言: 可用于对象方法和构件方法; (1)可用于对象方法和构件方法; (2)可用于 •所有应用领域 所有应用领域
•••••• •••••• •••••• ••••••
表达模型的工具 -类图、交互图等 需求分析层 类图、 类图 表达模型的工具 -类图、交互图等 类图、 类图 表达模型的工具 设计层
2)面向对象方法术语/符号 2)面向对象方法术语/ 面向对象方法术语 基于面向对象方法的世界观, 大千世界是由对象组成的, 基于面向对象方法的世界观,即“大千世界是由对象组成的, 面向对象方法的世界观 对象有其自己的属性和运动规律, 对象有其自己的属性和运动规律,对象之间的相互作用构成了 客观世界各种各样的系统。 为了支持软件开发, 客观世界各种各样的系统。” 为了支持软件开发,面向对象方 法 主要提供了两类术语: 主要提供了两类术语: 一类是表达结构化事物的术语; 一类是表达结构化事物的术语; 一类是表达关系的术语。 一类是表达关系的术语。
02333软件工程简答知识点

第一章绪论简述软件危机与软件工程的概念以及提出软件工程概念的目的。
201804 201810(1)软件生产率、软件质量远远满足社会发展的需求,成为社会、经济发展的制约因素,把这一现象称为软件危机;(2)软件工程是应用计算机科学理论和技术以及工程管理原则和方法,按预算和进度实现满足用户要求的软件产品的工程,或以此为研究对象的学科;(3)软件工程概念的提出是倡导以工程的原理、原则和方法进行软件开发,以期解决出现的软件危机。
简述软件工程的概念与发展201404发展:60年代末—80年代初,主要围绕系统实现技术、软件质量和软件工程管理;80年代以来,主要表现为软件复用技术、软件生产管理的研究和实践。
简述计算机软件的概念,以及提出软件工程概念的目的。
201704 2016101.计算机软件一般是指计算机系统中的程序及其文档。
2.其中,程序是计算机任务的处理对象和处理规则的描述;3.文档是为了理解程序所需的阐述性资料。
4.软件工程概念的提出是倡导以工程的原理、原则和方法进行软件开发,以期解决出现的软件危机。
简述软件开发的本质及其涉及到的问题。
201904 201504本质:不同抽象层术语之间的“映射”,以及不同抽象层处理逻辑之间的“映射”。
问题:(1)如何实现这样的映射,这是技术层面上的问题;(2)如何管理这样的映射,以保障映射的有效性和正确性。
这是管理层面上的问题。
简述软件开发的本质及其基本途径。
201710 201510本质:实现问题空间的概念;处理逻辑到解空间的概念;处理逻辑之间的映射。
途径:系统建模。
简述何谓系统模型以及软件开发中所涉及的系统模型分类。
模型是待建系统的任意抽象。
该抽象是在特定意图下所确定的角度和抽象层次对物理系统的一个描述,描述其中的成分和成分之间所具有的特定语义的关系,还包括对该系统边界的描述;系统模型分为两类:概念模型和软件模型。
软件模型又可进步分为设计模型、实现模型和部署模型等。
面向对象UML

细化
除了上述的模型元素外,模型元素还包括消息,动作和版类 (stereotype)等。
约束
约束(constraint)是元素的一种语义条件或限制,它应用于元素。 一条约束应用于一个种类的元素,可能涉及许多元素,但它们必须是同 一类元素。 约束的表示 如果约束应用于一种具有相应视图 元素的模型元素,它可以出现在它所约 束的视图元素的旁边。 通常一个约束由一对花括号括起来 ({constrraint}),花括号中为约束 的内容 。
对泛化的约束 完整、不完整、不相交和覆盖是四种应用于泛化的约束,显示在大括号 里。若有多个约束,用逗号隔开。如果没有共享,则用一条虚线通过所有继 承线,并在虚线的旁边显示约束, 如图所示:
Class A {constraint 1,constraint 2} Class B Class C Class D Class B Class A {constraint 1,constraint 2} Class C Class D
售货 顾客 《使用》 供货 供货人 《使用》 《使用》 取货款 《使用》 打开机器 关闭机器 打开机器 关闭机器 自动售货机系统 《扩展》 售散装 饮料
如在图中,“售货”是一个基本用例, 定义的是售罐装饮料,而用例“售散 装饮料”则是继承了“售货”的一般 收银员 功能的基础上进行修改,因此是“售 货”的扩展。
注意:用例总是由执行者启动的。
如何确定执行者? (可通过回答问题来识别)
1、谁使用系统的主要功能(主执行者)? 2、谁需要从系统获得对日常工作的支持和服务?
客户
买饮料
供货
3、需要谁维护管理系统的日常运行(副执行者)?
4、系统需要控制哪些硬件设备? 5、系统需要与其他哪些系统交互?
面向对象的分析与UML

面向的对象分析与UML--汽车租赁系统学院:数学计算机学院专业:计算机科学与技术班级:2011级计科(6)班姓名:伍永喜学号:12011242603日期:2014年5月22日摘要:面向对象的系统分析是运用面向对象的方法对系统进行分析。
OOA的基本任务是:运用面向对象的方法,对问题域和系统责任进行分析和理解,对其中的事物和它们之间的关系产生正确的认识,找出描述问题域和系统责任所需的类和对象,定义这些类和对象的属性和操作,以及它们之间所形成的各种关系。
UML可以对软件密集型系统的制品进行可视化、详述、构造和文档化。
最好把它用于以用例为驱动、以体系结构为中心、迭代及增量的过程中。
随着汽车行业的发展和汽车的普遍,汽车租赁行业成为近年来兴起的一个新行业。
汽车租赁管理系统可以减少企业的经营成本,提高企业工作效率。
在本系统中,要实现对汽车基本信息的添加、修改、删除、和查询;实现客户信息的添加、修改、删除和查询以及汽车租赁、归还等具体操作,以满足当前该行业在处理业务上的需求。
针对以上的要求,汽车租赁管理系统的用户是汽车租赁企业的管理人员,其需求功能应包括汽车信息管理、客户信息管理和汽车租赁、归还管理等主要功能,从而可以形成统一有效的管理。
关键字:OOA UML 汽车租赁类图可视化一、引言UML是一种语言,它是一种可视化的语言,它是一组图形符号。
是一门面向对象开发方法的设计语言,是本科类计算机专业的一门骨干课程,技术复杂,应用范围广。
它可用于详细描述。
它又是一种构造语言,可以直接生成代码。
用Rational Rose就可以实现从UML到C#,或者从C#到UML的双向工程。
UML课程设计实验主要包括两部分:一是构建系统的分析模型,二是设计模型。
一需要掌握面向对象的分析技术和设计技术,二需要构建需求分析模型和设计模型。
系统主要目标是:利用互联网和信息化技术,结合汽车租赁经营的实际运作情况,建设一个覆盖汽车租赁业务的汽车租赁管理系统,通过该管理系统提高企业信息化水平,完善经营管理体系,增强企业管理效率,让管理人员能更为方便快捷的工作。
UML2面向对象分析与设计(第2版)

5.3架构分析 5.4构造用例实现
5.5定义分析类
5.6练习题
6.1设计需要原则
6.2 Liskov替换原 则
6.3开放—封闭原则 6.4单一职责原则
6.6依赖倒置原则
6.5接口隔离原则
6.7练习题
01
7.1模式与 设计模式
02
7.2 GoF模 式
03
7.3更多的 设计模式
04
7.4职责分 配模式
UML2面向对象分析与设计(第2 版)
读书笔记模板
01 思维导图
03 读书笔记 05 目录分析
目录
02 内容摘要 04 精彩摘录 06 作者介绍
思维导图
本书关键字分析思维导图
设计
软件开发
例
方法
基础
设计
问题
面向对 象分析
分析
书
面向对象
业务
版
模型
类
建模
结构
架构
原则
内容摘要
内容摘要
分析和设计是软件开发中至关重要的一环,面向对象的方法是主流的软件开发方法,UML是用于面向对象分 析设计的标准化建模语言。本书围绕这3个方面展开,以论述分析设计建模过程为最终目标,以面向对象方法作为 建模的理论基础,以UML作为建模支撑语言。全书从面向对象和UML的基本概念入手,循序渐进地讲解业务建模、 需求建模、需求分析、设计原则和模式、架构设计、构件设计和代码生成等分析设计中的各个知识点,并通过多 个贯穿全书的案例将各个知识点串联起来,形成一套完整的面向对象分析设计方法论。本书是作者多年从事软件 工程教学和软件项目开发实践的总结,书中并没有太多抽象的概念,主要**实际软件开发中所需要的知识和实践 技能,力求做到通俗易懂。
第2章 UML通用知识点概述

2、图
序 列 图
序列图显示了一个具体用例或者用例的一部分的一个详细流程。它几 乎是自描述的,序列图不仅可以显示了流程中不同对象之间的调用关系, 还可以很详细地显示对不同对象的不同调用。 序列图有两个维度:垂直维度,也称时间维度,以发生的时间顺序显 示消息或调用的序列;水平维度显示消息被发送到的对象实例。
UML统一建模语言
二、常用的UML元素分析
1、视图
活 动 视 图
活动视图是一种特殊形式的状态机视图,是状态机的一个变体,用 来描述执行算法的工作流程中涉及的活动。 通常活动视图用于对计算流程和工作流程建模。活动视图中的状态 表示计算过程中所处的各种状态。 活动视图是在假定整个计算处理的过程中没有外部事件引起的中断 的条件下进行描述的,否则普通的状态机更加适合于描述这种情况。
UML统一建模语言
二、常用的UML元素分析
2、图
用 例 图
用例图描述了系统提供的一 个功能单元。用例图的主要目的 是帮助开发团队以一种可视化的 方式理解系统的功能需求,包括 基于基本流程的“角色”关系, 以及系统内用例之间的关系。 使用用例图可以表示出用例 的组织关系,这种组织关系包括 整个系统的全部用例或者是完成 相关功能的一组用例。 在用例图中画出某个用例方 式是在用例图中绘制一个椭圆, 然后将用例的名称放在椭圆的中 心或椭圆下面的中间位置。
三、UML的通用机制
2、修饰
在UML的图形表示中,每一个模型元素都有一个基本符号,这个基本 符号可视化地表达了模型元素最重要的信息。 用户也可以把各种修饰细节加到这个符号上以扩展其含义。这种添加 修饰细节的做法可以为图中的模型元素在一些视觉上的效果上发生一些 变化。
UML统一建模语言
三、UML的通用机制
UML第二章作业答案

1.UML如何表示类?类图标中可以指明哪些信息?类是描述一类对象的特征和行为,类图包含一组、接口及他们之间的关联、依赖和泛化的关系。
它不仅显示了信息的结构,同时还描述了系统对象的的行为。
2.什么是类的多重性(关联的基数)?多重性怎么表示?多重性是对象之间关联的一个重要方面,它说明了在关联中的一个类的对象可以对应另一个类的多个对象。
主要包含一组上下限数,用来指出可被允许生成的实例(instance)数量,即最多可以生成多少数目(上限),最少不得低于多少数目(下限)。
关联的两端以"下限..上限"的格式标示出多重性,如图2-12中的1..*。
星号(*)代表无指定上限,下限最低为0。
如果上下限数相同,标示出一个数目就可以了3.两者对象之间能够以多种方式关联吗?关联两边的"employee"和“employer”标示了两者之间的关系,而数字表示两者的关系的限制,是关联两者之间的多重性。
通常有“*”(表示所有,不限),“1”(表示有且仅有一个),“0...”(表示0个或者多个),“0,1”(表示0个或者一个),“n...m”(表示n到m个都可以),“m...*”(表示至少m个)。
在关联中有一种叫“限定关联”,还有一种谓之自身关联。
另外,对象之间的关联就没那么复杂,只是将类的关联实例化而已4.什么是约束?为什么要对类图附加注释?约束用来约束MUL成员的语义。
约束用举例在大括号内的条件来表示({contrraint}),可以直接放在图中,类图除了在设计新系统方面的用途外,它们还能用来记录一个存在系统(称它为“遗产”)的对象现在如何交互5.聚集和组成之间有什么区别?聚合关系完全是概念上的,只是区分了整体与组成部分,没有改变整体与其组成部分之间的关联导航的含义,也没有将整体与部分的生命周期联系起来。
而组合是聚合的变种,整体与部分之间有很强的所有关系,也就是说,在组合关系中,一个对象一次只是一个组合的一部分,而在简单的聚合关系中,一个部分可以被好几个整体共享。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
引入: 《import》 表示为从源包到目标包的一条带箭头的线段,并标记为 《import》,如下图所示:
例如:
GUI +Window +Form #EventHandler
Policies +OrderRules -GUI::Window Server -Database -LoggingService
p5 p4 p1 p2 c2 p3 c1 c3 c4 c7 c6 c5
拥有关系:{<p1,c3>,< p1,c4
>,< p2,c1 >, < p3,c2 >, < p4,c6 >, < p5,c7 >}
模型化为
拥有
0..1 1..2
多重性的表达: 关联的一端的多重性,说明:对于关联另一端的类的每个对象 ,本端的类可能有多少个对象出现。
6.2.2.3 包之间的关系 两种依赖:访问依赖和引入依赖。作用:使一个包可以访问 和引入其它包。 注:包间的依赖通常隐含了各包中元素之间存在着的一个或 多个依赖。 (1)引入依赖: 《import》 从源包到目标包的引入依赖表明:目标包中有适当可见性 的内容被加入到源包的公共命名空间中,这相当于源包对它们 做了声明(即对它们的引用可不需要一个路径名)
上图多重性解释:每个公司对象可以雇佣一个或多个人员对象 (多重性为1..*);每个人员对象受雇于0个或多个公司对象(多重 性为*,它等价于0..*)
聚合(aggregation):一种特殊形式的关联,表达一种“整体 /部分”关系。即一个类表示了一个大的事物,它是有一些小 的事物(部分)组成的。
注意:不论是整体类还是部分类,它们在概念上是处于同一 个层次的。 -在建模实践中,这是区分是否把一类事物标识为一个部分类 还是把它标识为一个类的属性的基本准则.
6.2.1.7 制品(artifact) 是系统中物理的、可替代的部件,其中包含物理信息(比特). 表示: 《artifact》 Window.dll 2点说明 在一个系统中,可能会存在不同类型的部署制品,例如源 代码文件、可执行程序和脚本等。 制品通常代表对源代码信息或运行时信息的一个物理打包 注:以上3个术语:主动类、构件和制品,都和类是相似的, 即它们描述了一组具有相同属性、操作和相同语义的实体。
6.2.2.4 对成组的元素建模策略: 浏览特定体系结构视图中(如类图)的建模元素, 找出概念或语义上相互接近的元素所定义的组块. 把每一个这样的组块围在一个包内. 对每一个包判别哪些元素要在包外访问,把这些元 素标记为公共的,把所有其他元素标记为受保护的 或私有的. 用引入依赖显示地连接建立在其他包之上的包. 在包的家族中,用泛化关系把特殊包连接到它们的 较一般的包.
6.2.2 包 为了组织类目,控制信息组织和文档组织的复杂性,UML引入了 术语-包。 6.2.2.1 语义 包是模型元素的一个分组。一个包本身可以被嵌套在其它包 中,并且可以含有子包和其它种类的模型元素。 一个包元素对外的可见性,可以通过在该元素名字前加上可 见性符号(+:公共的,-:私有的,#:受保护的)来指示: +:对其他包而言都是可见的; - :对其他包而言都是不可见的; #:对子孙包而言是可见的;
6.2.2.2 表示 通常,在大矩形中描述包的内容,而把该包的名字放 在左上角的小矩形中。 外围包名 包名 Client Sensors::Vision 限定名
可以把所包含的元素画在包的外面,通过符号♁,将这些 元素与该包相连。这时可把该包的名字放在大矩形中。
包拥有在其内所声明的 模型元素,它们可以是 类、接口、构件、协 作、用况、节点,甚至 可以是其他包。
注: 在明确给出关联端名的情况下,通常可以不给出该关联 名.但若一个类有多个关联,可使用关联名或端点名来区分 它们.若一个类有多个端点,可使用端点名来区分它们. 同一个类可以在其它关联中扮演相同或不同的角色.
多重性(multiplicity):类中对象参与一个关联的数目, 称为该关联角色的多重性。例如:
6.2.1.4 用况(use case) --体现功能抽象 是对一组动作序列的描述,系统执行这些动作应产生对特 定的参与者有值的、可观察的结果。 表示:
2点说明: 用况用于构造模型中的行为。 用况是通过协作予以细化的。
6.2.1.5 主动类(active class) --体现并发行为抽象 是一种至少具有一个进程或线程的类,因此它能够启动控制 活动。 表示:
(4)几点说明(仅以类为例) 接口只描述类(构件或子系统)的外部可见操作,并不描述 内部结构。 通常,接口仅描述一个特定类的有限行为。接口没有实现, 接口也没有属性、状态或者关联,接口只有操作。 --接口在形式上等价于一个没有属性、没有方法而只有 抽象操作的抽象类。 接口只可以被其它类目使用,而其本身不能访问其它类目。 接口之间没有没有关联、泛化、实现和依赖,但可以参与泛 化、实现和依赖关系。
(2)访问依赖: 《access》 从源包到目标包的访问依赖表示:目标包中具有可见性 的内容增加到源包的私有命名空间里(即源包可以不带限定 名来引用目标包中的内容,但不可以输出之)。 包的公共部分 称为它的输出
注:如果在提出访 问的那个包中还 存在包,那么嵌 套在其中的 包能得到与外层 包同样的访问。
4点说明: 组合是聚合的一种形式。部分和整体之间具有很强的“ 属于”关系,即具有一致的生存期; 组合的末端,其多重性显然不能超过1; 在一个组合中,由一个链所连接的对象而构成的任何 元组,必须都属于同一个容器对象; 在一个组合中,其部分可以包含一些类和关联;根据需 要,也可以把它们规约为关联类。
限定符
左图的限定符有一个属性account#,表明:在一个银行中,一个帐户对应 一个用户,或没有对应人员。 右图的限定符有两个属性,它们与Chessboard一起确定了Square,且 Square是其组成部分。
《import》
注:包Policies引入包GUI,因此,对于类GUI::Window和类 GUI::Form,包Policies的内容使用简单名Window和Form就能访 问它们,然而,由于GUI::EventHandler是受保护的,因此它是 不可见的.由于包Server没有引入包GUI,Server中的内容必须 用限定名才能访问GUI的公共内容,如GUI::Window。由于 Server的内容是私有的,GUI的内容无权访问Server中的任何内 容,即使用限定名也不能访问它们.
6.2.1.3 协作(collaboration)
--体现行为结构抽象
协作是一个交互,涉及交互三要素:交互各方、交互方式以 及交互内容。交互各方的共同工作提供了某种协作行为。 表示: 统计学生成绩分布
2点说明: 协作具有结构、行为和维度。 由于一个给定的类或对象可以参与多个协作,因此协 作表现了系统细化的构成模式。
把从类目到它支持的 接口的实现关系显示 为带有实三角箭头的 虚线. 类String提供了接口 Comparable的实现
用带有《use》标记 的虚线箭头表示类目 (在箭头尾部)使用 或者需要接口提供的 操作. 类HashTable使用接 口Comparable
其中: 接口名放在圆圈的下面,并用实线把圆圈连接到支持它 的类目上。 这意味着这个类目要提供在接口中的所有操 作,其实类目提供的操作可能要更多。 把从类目到它支持的接口的实现关系显示为带有实 三角箭头的虚线。 用带有《use》标记的虚线箭头表示类目(在箭头 尾部)使用或者需要接口提供的操作。 显然,要显示接口的操作列表的话,就不能使用圆圈表 示法,而应该使用矩形表示法。
6.2.3 表达关系的术语
在UML中,提供了以下4种关系,作为UML模型中的基本 关系构造块,表达类目之间的关系,以构造一个结构良好 的UML模型. 关联(association) 泛化(generalization) 实现(realization) 依赖(dependency)
关联(association) 定义:关联是类目之间的结构关系,描述了一组具有相同结构 、相同语义的链(links). 链是对象之间的连接(connection)。例如:
表示: 表示组合的 不同方法
该例给出了三种表示组合的方法。 其中,类Window由类Silder(角色为Scrollbar)、 Header(角色为title) 和Panel(角色为body)组成。
限定符: 一个限定符是一个关联的属性或属性表,这些属性的值将 对该关联相关的对象集做了一个划分。 例如:
主要特性: 主动类对象的行为通常与其他元素的行为是并发的。
6.2.1.6 构件(component)
构件描述比特世界的软件制品 的系统单位
是系统设计的模块化部件,通过外部接口隐藏了它的内部实 现.构件遵循并提供了一组接口的实现. 表示:
3点说明; 在一个系统中,共享相同接口的构件可以相互替代,但其 中要保持相同的逻辑行为。 可以结合连接件来表示构件的实现。 构件可以包含更小的构件。
组合(composition) 定义: A form of aggregation which requires that a part instance be included in at most one composite at a time,and that the composite object is responsible for the creation and destruction of the parts. Composition may be recursive. Synonym: composite aggregation. [ Composite:A class that is related to one or more classes by a composition relationship.] 即:如果整体类的实例和部分类的实例具有相同的生命周期, 这样的聚合称为组合。