类图入门
- 格式:docx
- 大小:185.23 KB
- 文档页数:7
UML类图记忆⼝诀
UML类图在设计模式书籍中⽤的⽐较多,经常忘记,⼝诀挺重要的,⽐如我们从⼩到⼤,除了乘法⼝诀、元素周期表等⼝诀形式的知识,其它的知识都基本忘记了,
所以编写⼝诀如下
1、三级⽯
2、见关⼀
3、零⾜迹
记忆⽅式:玩通关游戏时,装备上打了三级⽯头(三级⽯),才打到第⼀关(见关⼀),还没开始(零⾜迹)。
该⼝诀适合看UML类图⽤,不适合画UML类图(画图还需要记忆箭头指向顺序),不过⼀般画图的机会不多,毕竟敲代码的时候多。
备注:
每⼀句后两字分别代表实线,虚线或者实⼼空⼼。
空三⾓实线指向被继承,空三⾓虚线指向实现
箭头实线指向关联,箭头虚线指向依赖
菱形实⼼指向组合,菱形空⼼指向聚合
⽰例:。
UML快速入门经典教程UML(统一建模语言)是一种用于建模软件系统的标准化语言。
它提供了一种图形化的表示方式,帮助开发者更清楚地理解和描述软件系统的结构和行为。
本文将简要介绍UML的基本概念和主要图形表示方式,以帮助读者快速入门UML。
UML包含了多种类型的图形,用于表示不同方面的系统信息。
其中最常用的图形类型包括用例图、类图、时序图和活动图。
1.用例图用例图用于表示系统的外部行为,描述系统与其用户之间的交互。
在用例图中,用例表示系统的功能需求,参与者表示系统的不同类型的用户。
用例图可以帮助开发者明确系统的功能和用户的需求,并帮助设计流程图和功能结构图。
2.类图类图是描述系统的静态结构的图形化方式。
它表示系统中的类、接口、属性和方法之间的关系。
类图可以帮助开发者理解和描述系统的对象模型,包括类之间的继承、关联和依赖关系等。
3.时序图时序图用于描述系统中的消息传递和对象交互的时间顺序。
它展示了系统中不同对象之间的交互过程和时间顺序。
时序图可以帮助开发者理解系统的动态行为,尤其是对象之间的消息传递过程。
4.活动图活动图用于描述系统的业务流程。
它表示系统中的各个活动和活动之间的顺序关系。
活动图可以帮助开发者理解和描述系统的工作流程,包括输入和输出的过程。
在使用UML进行建模时,需要遵循一些基本的规则和概念:1.抽象和具体类在类图中,抽象类用斜体字表示,具体类用正常字体表示。
抽象类可以定义一些通用的属性和方法,具体类可以继承抽象类并添加自己的独特属性和方法。
2.继承关系在类图中,继承关系用带箭头的实线表示。
箭头指向的是子类,实线表示继承关系。
继承关系表示子类继承了父类的属性和方法,并可以添加自己的特有属性和方法。
3.关联关系在类图中,关联关系使用实线表示。
类之间的关联关系表示一个类与另一个类之间的连接。
关联关系通常是双向的,即两个类之间可以相互访问和引用对方的属性和方法。
4.依赖关系在类图中,依赖关系使用虚线表示。
基本元素符号:1. 类(Classes)类包含3个组成部分。
第一个是Java中定义的类名。
第二个是属性(attributes)。
第三个是该类提供的方法。
属性和操作之前可附加一个可见性修饰符。
加号(+)表示具有公共可见性。
减号(-)表示私有可见性。
#号表示受保护的可见性。
省略这些修饰符表示具有package(包)级别的可见性。
如果属性或操作具有下划线,表明它是静态的。
在操作中,可同时列出它接受的参数,以及返回类型,如下图所示:2. 包(Package)包是一种常规用途的组合机制。
UML中的一个包直接对应于Java中的一个包。
在Java中,一个包可能含有其他包、类或者同时含有这两者。
进行建模时,你通常拥有逻辑性的包,它主要用于对你的模型进行组织。
你还会拥有物理性的包,它直接转换成系统中的Java包。
每个包的名称对这个包进行了惟一性的标识。
3. 接口(Interface)接口是一系列操作的集合,它指定了一个类所提供的服务。
它直接对应于Java中的一个接口类型。
接口既可用下面的那个图标来表示(上面一个圆圈符号,圆圈符号下面是接口名,中间是直线,直线下面是方法名),也可由附加了<<interface>>的一个标准类来表示。
通常,根据接口在类图上的样子,就能知道与其他类的关系。
关系:1. 依赖(Dependency)实体之间一个“使用”关系暗示一个实体的规范发生变化后,可能影响依赖于它的其他实例。
更具体地说,它可转换为对不在实例作用域内的一个类或对象的任何类型的引用。
其中包括一个局部变量,对通过方法调用而获得的一个对象的引用(如下例所示),或者对一个类的静态方法的引用(同时不存在那个类的一个实例)。
也可利用“依赖”来表示包和包之间的关系。
由于包中含有类,所以你可根据那些包中的各个类之间的关系,表示出包和包的关系。
例如:动物与氧气2. 关联(Association)实体之间的一个结构化关系表明对象是相互连接的。
UML类图,常用符号小计UML类图,常用符号小计1、首先看该图中的动物矩形框,它代表的是一个类,类图分三层,第一层是类名(动物),第二层是特性(通常我们说的属性或是字段),第三层是操作(通常我们说的方法或行为),注意特性和操作前面的+,“+”代表public,“-“代表private,“#”代表protected。
在这里需要注意一下,动物类的名称是斜体,这就表示该类是抽象类。
同样的鸟类也是抽象类。
2、再看左下角的飞翔,它是一个接口图,与类图的不同就在于,顶部有一个<<interface>>,第一行是接口名称,第二行是接口方法。
接口还有一种表示方法是棒棒糖表示法,如图中的唐老鸭实现讲人话的接口。
3、鸟继承自动物类,鸭继承自鸟类,唐老鸭又继承自鸭类,继承的关系用空心三角形+实线来表示。
4、大雁实现了飞行的接口,接口用虚线+空心三角来实现5、企鹅需要了解天气情况,气候的变化,那么如果一个类“知道”另一个类时,可以用关联(association)。
关联关系要用实线箭头来表示6、一个雁群可以包括很多只雁,但雁并不是雁群的一部分,像这样的关系就满足聚合(aggregation)关系,聚合是一种弱的拥有关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。
聚合关系用空心菱形+实线表示。
7、合成(composition)是一种强的拥有关系,体现的严格的部分与整的关系,部分和整的生命周期一样。
上图中鸟和翅膀就是合成的关系,其中图中标注的1,2被称为基数。
表明这一端的类可以有多个实例,鸟肯定是两个翅膀喽,一个是没法飞的,哈哈。
8、动物与氧气、水之间是依赖的关系,没有氧气和水,动物(当然也包括人)根本是无法生存的,所以嘛。
不管是动物还是植物还是高级动物人也好,都要依赖于氧气和水的,依赖(dependency)关系,用虚线箭头来表示。
或许还有好多好多其他的常用符号,欢迎朋友们和我一起沟通。
UML类图关系大全1、关联双向关联:C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法。
在GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描述设计模式内的类关系来说显得太抽象了,因为在设计阶段关联关系必须被映射为对象引用或指针。
对象引用本身就是有向的,更适合表达我们所讨论的那种关系。
所以这种关系在设计的时候比较少用到,关联一般都是有向的。
使用ROSE 生成的代码是这样的:class C1...{public:C2* theC2;};class C2...{public:C1* theC1;};双向关联在代码的表现为双方都拥有对方的一个指针,当然也可以是引用或者是值。
单向关联:C3->C4:表示相识关系,指C3知道C4,C3可以调用C4的公共属性和方法。
没有生命期的依赖。
一般是表示为一种引用。
生成代码如下:class C3...{public:C4* theC4;};class C4...{};单向关联的代码就表现为C3有C4的指针,而C4对C3一无所知。
自身关联(反身关联):自己引用自己,带着一个自己的引用。
代码如下:class C14...{public:C14* theC14;};就是在自己的内部有着一个自身的引用。
2、聚合/组合当类之间有整体-部分关系的时候,我们就可以使用组合或者聚合。
聚合:表示C9聚合C10,但是C10可以离开C9而独立存在(独立存在的意思是在某个应用的问题域中这个类的存在有意义。
这句话怎么解,请看下面组合里的解释)。
代码如下:class C9...{public:C10 theC10;};class C10...{};组合(也有人称为包容):一般是实心菱形加实线箭头表示,如上图所示,表示的是C8被C7包容,而且C8不能离开C7而独立存在。
但这是视问题域而定的,例如在关心汽车的领域里,轮胎是一定要组合在汽车类中的,因为它离开了汽车就没有意义了。
目录1.类图和对象图的概念2.类图的组成3.使用Rose创建类图4.对象图5.使用Rose创建类图案例分析类图和对象图详解对于类图和对象图来说我们需要了解的是类图和对象图的概念,类图的组成,使用Rose创建类图和对象图。
当然最重要的是如何使用Rose创建类图案例分析。
具体的创建通过选课管理系统的简单用例说明创建类图和对象图的方法和具体的过程。
下面是我对类图和对象图学习过程的一个整理,一些资料是直接拿过来直接用的。
希望能对你的学习有一点点的帮助吧。
类图和对象图的概念1. 类的含义类图(Class diagram)显示了系统的静态结构,而系统的静态结构构成了系统的概念基础。
类图,就是用于对系统中的各种概念进行建模,并描绘出它们之间关系的图。
在大多数的 UML 模型中,我们可以将这些概念的类型概括为以下四种,分别是:(1) 类(2) 接口(3) 数据类型(4) 构件在类图中,具体来讲它一共包含了以下几种模型元素,分别是:类、接口、依赖关系、泛化关系、关联关系以及实现关系。
类图可以创建约束、注释和包等。
2. 对象图的含义对象图中包含对象(Object)和链(Link)。
其中对象是类的特定实例,链是类之间关系的实例,表示对象之间的特定关系。
3. 类图在项目开发中的作用类图的作用是对系统的静态视图进行建模。
当对系统的静态视图进行建模时,通常是以以下三种方式来使用类图。
(1)为系统的词汇建模。
(2)模型化简单的协作。
(3)模型化逻辑数据库模式。
在设计数据库时,通常将数据库模式看作为数据库概念设计的蓝图,在很多领域中,都需要在关系数据库或面向数据库中存储永久信息。
系统分析者可以使用类图来对这些数据库进行模式建模。
4. 对象图在项目开发中的作用对象图作为系统在某一时刻的快照,是类图中的各个类在某一个时间点上的实例及其关系的静态写照,可以通过以下几个方面来说明它的作用:(1)说明复杂的数据结构。
对于复杂的数据结构,有时候很难对其进行抽象成类表达之间的交互关系。
UML类图画法全程解析本节向⼤家介绍⼀下UML类图画法,主要包括UML类图元素和关系画法,希望通过本⽂的介绍,你对UML类图画法有⼀定的认识。
软件设计起步:UML类图画法学习设计模式,画UML类图是基础,通过UML类图,能更好地和⼤家交流,也能很容易就表达出⾃⼰的设计想法,它就好⽐普通话,是⼀种标准语⾔。
现在流⾏的主要⼯具有两种:RationalRose和MicrosoftVisio,这两种⼯具都⽐较易⽤,选择哪种⼯具就看个⼈的喜好了。
本⼈对Microsoft 的软件⽐较有好感,所以⾃然MicrosoftVisio2003是我的⾸选。
UML类图常⽤元素。
类:类是⼀种复杂的数据类型,它是将不同类型的数据和与这些数据相关的操作封装在⼀起的集合体。
CPerson是⼀个抽象类,它是不能被实例化的,⽽CFamily可以被实例化。
接⼝:接⼝是被调⽤者调⽤的⼀组操作⽅法。
其实CPerson也可以作为接⼝。
UML类图中常见的⼏种关系。
泛化(Generalization):⼀句话,就是继承的表⽰。
是is-a的关系。
依赖(Dependency):UML类图画法中依赖是⼀种使⽤关系,它说明⼀个事物规范的变化可能影响到使⽤它的另⼀个事务,但反之则不然。
依赖关系的表⽰法是虚线箭头,箭头尾部的元素依赖箭头头部的元素,是use-a的关系。
关联(Association):⽤于描述类与类之间的连接,是has-a的关系。
聚合(Aggregation):聚合是关联的特例。
如果类与类之间的关系具有“整体和局部”的特点,则把这样的关联称为聚合。
它往往有“包含”,“由……组成”的意思。
我这⾥举的都是平时UML类图画法常⽤的⼏种情况,当然UML还有很多知识我没有了解,⽐如关联就有许多种。
本节向⼤家介绍⼀下UML类图符号,只有掌握了UML符号的意义,你才能很好的使⽤,本节从⼋个⽅⾯向⼤家介绍UML类图符号,希望通过本节的学习你对UML类图符号有初步的认识。
第一章UML入门填空:1、如果把众多事物进行归纳和分类,那么所依据的面向对象的特性是抽象。
2、面向对象中的表示层用于提供给用户使用和显示的界面。
3、UML中的元元模型层位于结构最上层,是组成UML最基本的元素,代表要定义的所有事物。
4、在UML2.0中用来表示类、组件、协作等模型元素内部结构的是组合结构图。
5、UML中的实现关系使用一条空心三角作为箭头的虚线作为其图形表示。
选择:1、下列不属于对象特性的是。
A、对象都是唯一的B、一滴水是一个对象C、一个对象肯定属于某个类别D对象必须是可见的2、如果要解决系统做什么应该使用。
A、面向对象的分析B、面向对象的设计C、面向对象的编程D、面向对象的开发3、面向对象中的描述了系统内部对象及其关系的静态结构。
A、对象模型B、状态模型C、交互模型D、类模型4、UML中的用于描述系统的实现模块以及它们之间的依赖关系。
A、组件视图B、用例视图C、逻辑视图D、部署视图5、下列不属于UML2.0中图的是。
A、协作图B、包图C、交互图D、组合结构图6、下列UML事物中表示协作的是。
A、B、C、D、InterfaceName简答题:1、简要说明UML中视图与图的关系。
答:UML的视图都是由一个或多个图组成的,图就是系统架构在某个侧面的表示,所有的图一起组成了系统的完整视图。
第二章用例图填空题:1、用例图标准关系有扩展、泛化关系、关联关系和包含关系。
2、用例图的组成有关系、系统、参与者和用例。
3、在UML中,用例用一个圆形来表示。
4、泛化关系使用一条实线和一个三角箭头来链接用例。
选择题:1、下列说法正确的是。
A.用例间的关系是后期开发需要的,对用例图没有影响。
B.扩展关系可以是用例间的,也可以是参与者间的。
C.泛化关系可以是用例间的,也可以是参与者间的。
D.包含关系表示为虚线箭头。
2、下列符号中表示扩展的是。
A. B. C. <<extends>>D. <<extends>>简答题:1、用例描述主要包括哪些方面?答:用例描述一般包括有:名称、标识符(可选)、参与者(可选)、状态(可选)、频率、前置条件、后置条件、假设(可选)、基本操作流程、可选操作流程、修改历史记录(可选)2、泛化描述了什么?答:泛化描述的是子用例与父用例的关系,子用例是父用例的特化,它除了可以具有父用例的特性外,还可以有自己的另外特性。
uml记忆口诀UML(统一建模语言)是一种用于软件设计和开发的图形化语言,要记住它的各种元素和规则可不简单,下面我就给您分享一些 UML 记忆口诀。
先来说说类图吧,类图里的类有属性和方法,咱们可以这么记:“类像个小盒子,属性方法往里搁。
属性静静躺里面,方法活跃跑外面。
” 比如说,想象一个“学生”类,属性可能有“姓名”“年龄”“学号”,方法可能有“学习”“考试”“参加活动”。
就像咱们身边的学生,有名有姓有年龄,还得天天学习考试参加活动。
再看看用例图,用例图展示了系统的功能和使用者的交互。
记忆口诀就是:“用例像个小任务,执行者来把它做。
系统功能全靠它,清晰明了不糊涂。
” 就像我们去超市购物,“挑选商品”“结账付款”就是一个个用例,而顾客就是执行者。
顺序图呢,描述了对象之间的消息传递顺序。
“顺序图像个小剧场,对象消息来登场。
从上到下时间流,交互过程全知道。
” 比如说一个在线订票的过程,用户发送订票请求,服务器处理请求并返回结果,这一系列的交互就像一场精彩的小演出。
状态图可不好记,不过有了口诀就简单多啦。
“状态图像个小地图,状态之间变变变。
触发事件引转变,系统行为全展现。
” 好比一个自动售货机,有“空闲”“收款”“出货”等状态,顾客投币这个触发事件让它从空闲变成收款。
活动图也有口诀哦,“活动图像个小流程,活动分支和并行。
顺序分支看清楚,业务逻辑在其中。
” 比如学校组织一场运动会,从报名、准备、比赛到颁奖,每个环节都是一个活动。
在我多年的教育工作中,曾经遇到过一个学生,他对 UML 怎么都记不住,特别苦恼。
我就把这些口诀教给他,还给他举了好多生活中的例子。
他一开始将信将疑,觉得这能行吗?结果自己试着用口诀去理解和记忆,嘿,还真就慢慢掌握了。
后来他跟我说,这些口诀就像一把神奇的钥匙,打开了 UML 这个复杂世界的大门。
所以啊,记住这些口诀,再结合实际的例子多练习,UML 也就没那么难啦!希望这些口诀能帮助您轻松记住 UML ,在学习和工作中更加得心应手!。
uml教程UML(统一建模语言)是用于设计和描述软件系统的一种图形化语言。
它广泛用于软件开发过程中的系统建模、分析、设计和实现。
本教程将向您介绍UML的基本概念、图形符号和建模过程。
一、UML的基本概念1. 类(Class):表示了一类对象的共同属性和行为。
用矩形框表示,包含类名、属性和方法。
2. 对象(Object):表示类的具体实例。
用矩形框表示,包含对象名和属性。
3. 关联(Association):表示类之间的关系。
用实线连接两个类,可以有箭头指向关联的类型。
4. 聚合(Aggregation):表示一种弱的“整体-部分”的关系。
用空心菱形连接两个类,菱形指向整体类。
5. 组合(Composition):表示一种强的“整体-部分”的关系。
用实心菱形连接两个类,菱形指向整体类。
6. 继承(Inheritance):表示一个类派生自另一个类。
用带空心箭头的实线连接两个类,箭头指向父类。
7. 接口(Interface):表示类的一组相关方法的集合。
用包含方法名和返回类型的矩形框表示。
二、UML的图形符号1. 用例图(Use Case Diagram):表示系统的功能和用户之间的交互关系。
用椭圆表示用例,用箭头表示参与者和关联关系。
2. 类图(Class Diagram):表示系统的静态结构和类之间的关系。
用矩形框表示类,用线表示关联、聚合、组合和继承关系。
3. 时序图(Sequence Diagram):表示对象之间的交互时序。
用矩形框表示对象,用垂直线表示消息传递顺序。
4. 活动图(Activity Diagram):表示系统的业务处理流程。
用矩形框表示活动,用箭头表示流程顺序。
5. 状态图(State Diagram):表示对象的各种状态及其转换。
用圆角矩形表示状态,用箭头表示状态转换条件。
三、UML的建模过程1. 理解需求:收集和分析用户的需求,确定系统的功能和目标。
2. 识别用例:将需求转化为用例,描述系统的各个功能点和用户的操作。
UML中的类图详解及其应用场景在软件开发过程中,UML(统一建模语言)被广泛应用于需求分析、系统设计和软件开发等各个阶段。
其中,类图作为UML的核心图表之一,用于描述系统中的类、对象以及它们之间的关系。
本文将详细介绍UML中的类图,并探讨其在实际应用中的场景。
一、类图的基本概念类图是一种静态结构图,用于表示系统中的类、接口、关联、继承、依赖等元素及其之间的关系。
在类图中,类用矩形表示,类名位于矩形顶部,类的属性位于矩形中部,类的操作(方法)位于矩形底部。
类之间的关系通过连线表示,如关联关系用实线箭头表示,继承关系用空心三角箭头表示,依赖关系用虚线箭头表示等。
二、类图的元素及其关系1. 类(Class):类是对象的抽象表示,用于描述具有相同属性和行为的一组对象。
类图中的类用矩形表示,类名位于矩形顶部。
2. 接口(Interface):接口是一组方法的集合,用于描述类的行为。
接口在类图中用带有<<interface>>标记的矩形表示。
3. 属性(Attribute):属性是类的特征,描述了类的状态。
属性在类图中用名称:类型的形式表示,例如“name:String”。
4. 操作(Operation):操作是类的行为,描述了类的方法。
操作在类图中用名称(参数列表):返回类型的形式表示,例如“getName():String”。
5. 关联关系(Association):关联关系描述了类之间的连接,表示一个类与另一个类之间的关联。
关联关系在类图中用实线箭头表示。
6. 继承关系(Inheritance):继承关系描述了类之间的继承关系,表示一个类继承自另一个类。
继承关系在类图中用空心三角箭头表示。
7. 依赖关系(Dependency):依赖关系描述了类之间的依赖关系,表示一个类依赖于另一个类。
依赖关系在类图中用虚线箭头表示。
三、类图的应用场景1. 系统设计:类图是系统设计的重要工具之一。
需求描述•小王就是一个爱书之人,家里各类书籍已过千册,而平时又时常有朋友外借,因此需要一个个人图书管理系统。
该系统应该能够将书籍得基本信息按计算机类、非计算机类分别建档,实现按书名、作者、类别、出版社等关键字得组合查询功能。
在使用该系统录入新书籍时系统会自动按规则生成书号,可以修改信息,但一经创建就不允许删除。
该系统还应该能够对书籍得外借情况进行记录,可对外借情况列表打印。
另外,还希望能够对书籍得购买金额、册数按特定时间周期进行统计发现类•小王就是一个爱书之人,家里各类书籍已过千册,而平时又时常有朋友外借,因此需要一个个人图书管理系统。
该系统应该能够将书籍得基本信息按计算机类、非计算机类分别建档,实现按书名、作者、类别、出版社等关键字得组合查询功能。
在使用该系统录入新书籍时系统会自动按规则生成书号,可以修改信息,但一经创建就不允许删除。
该系统还应该能够对书籍得外借情况进行记录,可对外借情况列表打印。
另外,还希望能够对书籍得购买金额、册数按特定时间周期进行统计筛选备选类•“小王”、“人”、“家里”很明显就是系统外得概念,无须对其建模;•而“个人图书管理系统”、“系统”指得就就是将要开发得系统,即系统本身,也无须对其进行建模;•很明显“书籍”就是一个很重要得类,而“书名”、“作者”、“类别”、“出版社”、“书号”则都就是用来描述书籍得基本信息得,因此应该作为“书籍”类得属性处理,而“规则”就是指书号得生成规则,而书号则就是书籍得一个属性,因此“规则”可以作为编写“书籍”类构造函数得指南。
•“基本信息”则就是书名、作者、类别等描述书籍得基本信息统称,“关键字”则就是代表其中之一,因此无需对其建模;•“功能”、“新书籍”、“信息”、“记录”都就是在描述需求时使用到得一些相关词语,并不就是问题域得本质,因此先可以将其淘汰掉;•“计算机类”、“非计算机类”就是该系统中图书得两大分类,因此应该对其建模,并改名为“计算机类书籍”与“非计算机类书籍”,以减少歧义;•“外借情况”则就是用来表示一次借阅行为,应该成为一个候选类,多个外借情况将组成“外借情况列表”,而外借情况中一个很重要得角色就是“朋友”—借阅主体。
类图和对象图教程-类(Class)、接口(Interface)、协作(collaboration)、依赖关系(Dependency)、泛化关系(Generalization)、关联关系(Association)以及实现关系(Realization)类图的概念一、概述类图(Class Diagram)是描述类、接口、协作以及它们之间关系的图,用来显示系统中各个类的静态结构。
类图是定义其他图的基础,在类图基础上,可以使用状态图、协作图、组件图和配置图等进一步描述系统其他方面的特性。
类图包括7个元素:类(Class)、接口(Interface)、协作(collaboration)、依赖关系(Dependency)、泛化关系(Generalization)、关联关系(Association)以及实现关系(Realization)。
二、类类定义了一组有着状态和行为的对象。
其中,属性和关联用来描述状态。
属性通常用没有身份的数据值表示,如数字和字符串。
关联则用有身份的对象之间的关系表示。
行为由操作来描述,方法是操作的实现。
对象的生命期则由附加给类的状态机来描述。
1、名称:类的名称是每个类中所必有的构成元素。
2、属性(Attribute)(1)可见性:类中属性的可见性主要包括公有(public)、私有(Private)和受保护(Protected)。
在UML中,公有类型的用“+”表达,私有类型用“-”表达,而受保护类型则用“#”表达。
UML的类中不存在默认的可见性,如果没有显示任何一种符号,就表示没有定义该属性的可见性。
(2)属性名:按照UML的约定,单字属性名小写。
如果属性名包含多个单词,这些单词要合并,且除了第一个单词外其余单词的首字母要大写。
(3)属性字符串。
属性字符串用来指定关于属性的其他信息,例如某个属性应该是永久的。
任何希望添加在属性定义字符串值但又没有合适地方可以加入的规则,都可以放在属性字符串里。
(4)类属性。
属性也可以作为一个类属属性来定义,这就意味着此属性被该类的所有对象共享。
在类图中,类属性带有一条下划线。
3、操作。
类的操作是对类的对象所能做的事务的抽象,相当于一个服务的实现。
4、职责:在操作部分下面的区域,可以用来说明类的职责。
职责是类或其他元素的契约或义务。
类的职责是是自由形式的文本,写一个短语,一个句子等。
在UML中,把职责列在类图底部的分隔栏中。
5、约束。
说明类的职责是消除二义性的一种非形式化的方法,形式化的方法是使用约束。
约束指定了该类所要满足的一个或多个规则。
在UML 中,约束是用一个花括号括起来的自由文本。
三、接口接口包含操作但不包含属性,且它没有对外界可见的关联。
四、类之间的关系类之间的关系最常见的有四种:依赖关系、泛化关系、管理关系、实现关系。
1、依赖关系(Dependency)依赖表示两个或多个模型元素之间语义上的关系。
它表示了这样一种情形,对于一个元素(提供者)的某些改变可能会影响或提供消息给其他元素(客户),即客户以某种形式依赖于其他类元。
根据这个定义,关联、实现和泛化都是依赖关系,但是它们有更特别的语义。
在UML中,依赖用一个从客户指向提供者的虚箭头表示,用一个构造型的关键字来区分它的种类。
UML定义了4种基本依赖类型,分别是使用(Usage)依赖、抽象(Abstraction)依赖、授权(Permission)依赖和绑定(Binding)依赖。
(1)、使用依赖。
使用依赖都是非常直接的,通常表示客户使用提供者提供的服务以实现它的行为。
以下列出了5种使用依赖关系.(2)、抽象依赖。
抽象依赖用来表示客户与提供者之间的关系,依赖于在不同抽象层次上的事物。
(3)、授权依赖。
授权依赖表示一个事物访问另一个事物的能力。
提供者通过规定客户的权限,可以控制和限制对其内容访问的方法。
(4)、绑定依赖。
绑定依赖是较高级的依赖类型,用于绑定模板以创建新的模型元素。
2、泛化关系(Generalization)泛化关系是一种存在于一般元素和特殊元素之间的分类关系,它只使用在类型上,而不是实例上。
在类中,一般元素被称为超类或父类,而特殊元素被称为子类。
在UML中,泛化关系用一条从子类指向父类的空心三角箭头表示3、关联关系(Association)关联关系是一种结构关系,它指明一个事物的对象与另一个事物的对象之间的联系。
也就是说,关联描述了系统中对象或实例之间的离散连接。
在UML中,关联关系用一条连接两个类的实线表示关联关系有6种对应的修饰,它们分别是:名称、角色、多重性、聚合、组合和导航性。
(1)、名称(Name)。
名称用来描述关联的性质,通常使用一个动词或动词短语来命名关联。
名称以前缀或后缀一个指引阅读的方向指示符以消除名称含义上可能存在的歧义,方向指示符用一个实心的三角形箭头表示。
(2)、角色(Role)。
角色是关联关系中一个类对另一个类所表现出来的职责。
角色名称是名词或名词短语,以解释对象是如何参与关联的。
(3)、多重性(Multiplicity)。
约束是UML三大扩展机制之一,多重性是其中使用最广泛的一种约束。
关联的多重性是指有多少对象可以参与该关联,多重性可以用来表达一个取值范围、特定值、无限定的范围或一组离散值。
(4)、聚合(Aggregation)。
聚合关系表示整体和部分关系的关联。
聚合关系描述了“has a”的关系。
在UML中聚合关系用带空心的实线来表示,其中头部指向整体。
(5)、组合关系(Composition)。
组合关系是聚合关系中的一种特殊情况,是更强形式的聚合,又被称为强聚合。
在组合中,成员对象的生命周期取决于聚合的生命周期,聚合不仅控制着成员对象的行为,而且控制着成员对象的创建和析构。
在UML中,组合关系用带实心菱头的实线来表示,其中头部指向整体。
(6)、导航性(Nevigation)。
导航性描述的是一个对象通过链(关联的实例)进行导航访问另一个对象,即对一个关联端点设置导航属性意味着本端的对象可以被另一端的对象访问。
可以在关联关系上加箭头表示导航方向。
只在一个方向上可以导航的关联称为单向关联(Unidirection Association),用一条带箭头的实线来表示。
在两个方向上都可以导航的关联称为双向关联(Bidirection Association),用一条没有箭头的实线来表示。
另外使用导航性可以降低类之间的耦合度,在也是好的面向对象分析与设计的目标之一。
4、实现关系(Realization)实现是规格说明和其实现之间的关系,它将一种模型元素与另一种模型元素连接起来,比如类和接口。
泛化和实现关系都可以将一般描述与具体描述联系起来。
泛化将同一语义层上的元素连接起来,并且通常在同一模型内。
实现关系则将不同语义层内的元素连接起来,通常建立在不同的模型内。
实现关系通常在两种情况下被使用:在接口与实现该接口的类之间;在用例以及实现该用例的协作之间。
在UML中,实现关系的符号与泛化关系的符号类似,用一条带指向接口的空心三角箭头的虚线表示。
下图所示的是实现关系的一个示例,描述的是Keyboard保证自己的部分行为可以实现Typewriter的行为实现关系还有一种省略的表示方法,即接口表示为一个小圆圈,并和实现接口的类用一条线段连接,如图类图建模技术一、对简单协作建模类不是单独存在的,而是要与其他类协同工作。
协作是动态交互在静态视图上的映射,协作的静态结构通过类图来描述。
对协作建模要遵循如下策略1、识别要建模的机制。
一个机制描述了正在建模的部分系统的一些功能和行为,这些功能和行为是由类、接口和一些其他元素的相互作用产生的。
2、对每种机制,识别参与协作的类、接口和其他协作,并识别这些事物之间的关系。
3、用协作的脚本检测事物,通过这种方法可以发现模型中被遗漏的部分和有明显语义错误的部分。
4、把元素和它们的内容聚合在一起。
对于类,首先平衡好职责,随着时间的推移,将它们转换成具有的属性和操作。
二、对逻辑数据库模式建模通用的逻辑数据库建模工具是“实体-关系(E-R)”图,传统的E-R图只针对数据,而UML的类图还允许对行为建模。
在物理数据库中,类图一般要把逻辑操作转化成触发器或存储过程。
对模式建模要遵循如下策略:1、在模型中识别的类,其状态必须超过其应用系统的生命周期。
2、创建包含这些类的类图,并把它们标记为永久(persistent)。
对于特定的数据库细节,可以定义自己的标记值集合。
3、展开这些类的结构性细节,即详细描述属性的细节,并注重于关联和构造类的基数。
4、观察系统中的公共模式(如循环关联、一对一关联和n元关联),它们常常造成物理数据库设计的复杂化。
5、考虑这些类的行为,扩展对数据库存储和数据完整性来说重要的操作。
一般情况下,与对象集的操作相关的业务规则应该被封装在永久类的上一层。
三、正向工程和逆向工程1、正向工程(Forward Engineering)正向工程是通过实现语言的映射把模型转换为代码的过程。
由于UML中描述的模型在语义上比当前的任何面向对象语言要丰富,所以正向工程会导致一定信息的损失,这也是需要模型的原因。
对类图进行正向工程,要遵循如下的策略(1)、识别映射到所选择的实现语言的规则(2)、根据所选择的语言的语义,可能会限定一些对UML特性的使用(3)、用标记值详细描述目标语言,若需要精确的控制,该操作可以在单个类的层次上进行,也可以在较高的层次(如协作或包)上进行(4)、使用工具对模型进行正向工程2、逆向工程(Reverse Engineering)逆向工程是通过从特定实现语言的映射,把代码转换为模型的过程。
逆向工程会导致大量的冗余信息同时逆向工程又是不完整的。
对类图进行逆向工程,要遵循如下的策略(1)、识别从实现语言或所选的语言进行映射的规则(2)、使用工具,指向要进行逆向工程的代码,用工具生成新的模型或修改以前进行正向工程时已有的模型。
(3)、使用工具,通过查询模型创建类图。
对象图一、概述对象图(Object Diagram)描述的是参与交互的各个对象在交互过程中某一时刻的状态。
对象图可以被看作是类图在某一时刻的实例。
在UML中,对象图使用的是与类图相同的符号和关系,因为对象就是类的实例。
下图显示了对象图的模型。
其中节点可以是对象也可以是类,连线表示对象之间的关系:二、类图和对象图的区别类图对象图类具有3个分栏:名称、属性和操作对象只有两个分栏:名称和属性在类的名称分栏中只有类名对象的名称形式为“对象名:类名”,匿名对象的名称形式为“:类名”类的属性分栏定义了所有属性的特征对象则只定义了属性的当前值,以便用于测试用例或例子中类中列出了操作对象图中不包括操作,因为对于同属于同一个类的对象而言,其操作是相同的类使用关联连接,关联使用名称、角色、多重性以及约束等特征定义。