UML 1 — 简介
UML (统一建模语言) 介绍
面向对象软件开发需要经过 OOA (面向对象分析), OOD (面向对象设计) 和 OOP (面向对象编程) 三个阶段, OOA 对目标系统进行分析并建立分析模型, 并将之文档化, OOD 用面向对象的思想将 OOA 的结果进行细化, 得出设计模型. OOA 和 OOD 的分析, 设计结果需要统一的符号描述, 交流并记录, UML 就是这种用于描述, 记录 OOA 和 OOD 结构的符号表示法.
UML 图大致上分为静态图和动态图两种, UML 2.0 的各种 UML 图如下所示:
UML建模之类图(Class Diagram,UML图)
1、 简介
类是对象的集合,展示了对象的结构以及与系统的交互行为。类主要有属性(Attribute)和方法(Method)构成,属性代表对象的状态,如果属性 被保存到数据库,此称之为“持久化”;方法代表对象的操作行为,类具有继承关系,可以继承于父类,也可以与其他的Class进行交互。
2、 类的构成
类图是面向对象系统建模中最常见的图,类图显示了一组类、接口、协作以及它们之间的关系。类图用于对系统的静态设计视图建模。 在UML中类以矩形表示,具有名称、属性、操作、和关系等描述。接下来我们将全面的对类里面的每个元素的表现作出详细的介绍。
-
类:
- 在UML中类以一个矩形表示,类的名称用一个字符串表示。
- 抽象类通过将类名改为斜体字表示。
- 不能继承的类(叶子类,封闭类)通过在类名下面增加 leaf 特性说明。
-
属性:
- 属性在类下面的栏中列出,可以仅显示属性名。
- 静态属性通过在属性名下加下划线表示。
- 属性其他特征完整语法: [可见性] 属性名 [':'类型] [多重性] ['='初始值] [{特性串]}]
- 不能重写属性通过在特性串中增加 leaf 特性说明。
-
操作:
- 属性在类下面的第二栏中列出,可以仅显示操作名。
- 静态操作与静态属性同样通过在名称下加下划线表示。
- 抽象操作与抽象类同样通过斜体字表示。
- 操作特征完整语法: [可见性] 操作名 [([方向] 参数名 ':' 参数类型 ['=' 默认值])] [':' 返回类型] [{特征串}]
- 不能重写的操作与属性一样使用特征串中增加 leaf 表示。
-
可见性:
- 可见性通过在属性或方法名称前增加特定的符号表示。公共的(+)私有的的(-)受保护的(#)包内的(~)
比如商品属性有:名称、价格、高度、宽度等;商品的方法有:计算税率,获得商品的评价等等。如下图
3、 类之间的关系
类之间的关系最常见的有四种:依赖关系、泛化关系、关联关系、实现关系。
3.1、依赖关系(Dependency)
依赖表示两个或多个模型元素之间语义上的关系。它表示了这样一种情形,对于一个元素(提供者)的某些改变可能会影响或提供消息给其他元素(客户),即客户 以某种形式依赖于其他类元。根据这个定义,关联、实现和泛化都是依赖关系,但是它们有更特别的语义。在UML中,依赖用一个从客户指向提供者的虚箭头表 示,用一个构造型的关键字来区分它的种类。
UML定义了4种基本依赖类型,分别是使用(Usage)依赖、抽象(Abstraction)依赖、授权(Permission)依赖和绑定(Binding)依赖。
(1)、使用依赖。使用依赖都是非常直接的,通常表示客户使用提供者提供的服务以实现它的行为。以下列出了5种使用依赖关系.
(2)、抽象依赖。抽象依赖用来表示客户与提供者之间的关系,依赖于在不同抽象层次上的事物。
(3)、授权依赖。授权依赖表示一个事物访问另一个事物的能力。提供者通过规定客户的权限,可以控制和限制对其内容访问的方法。
(4)、绑定依赖。绑定依赖是较高级的依赖类型,用于绑定模板以创建新的模型元素。
3.2、泛化关系(Generalization)
泛化关系是一种存在于一般元素和特殊元素之间的分类关系,它只使用在类型上,而不是实例上。在类中,一般元素被称为超类或父类,而特殊元素被称为子类。在UML中,泛化关系用一条从子类指向父类的空心三角箭头表示
3.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),用一条没有箭头的实线来表示。另外使用导航性可以降低类之间的耦合度,在也是好的面向对象分析与设计的目标之一。
导航性示例:(双向关联与单向关联)
关联是两个类间的联接。关联总是被假定是双向的;这意味着,两个类彼此知道它们间的联系,除非你限定一些其它类型的关联。回顾一下Flight 的例子,图 6 显示了在Flight类和Plane类之间的一个标准类型的关联。
图 6:在一个Flight类和Plane类之间的双向关联的实例
一个双向关联用两个类间的实线表示。在线的任一端,你放置一个角色名和多重值。图 6 显示Flight与一个特定的Plane相关联,而且 Flight类知道这个关联。因为角色名以Plane类表示,所以Plane承担关联中的“assignedPlane”角色。紧接于Plane类后面的 多重值描述0...1表示,当一个Flight实体存在时,可以有一个或没有Plane与之关联(也就是,Plane可能还没有被分配)。图 6 也显示 Plane知道它与Flight类的关联。在这个关联中,Flight承担“assignedFlights”角色;图 6 的图告诉我们,Plane实 体可以不与flight关联(例如,它是一架全新的飞机)或与没有上限的flight(例如,一架已经服役5年的飞机)关联。
由于对那些在关联尾部可能出现的多重值描述感到疑惑,下面的表3列出了一些多重值及它们含义的例子。
表 3: 多重值和它们的表示
可能的多重值描述
|
表示
|
含义
|
0..1
|
0个或1个
|
1
|
只能1个
|
0..*
|
0个或多个
|
*
|
0个或多个
|
1..*
|
1个或多个
|
3
|
只能3个
|
0..5
|
0到5个
|
5..15
|
5到15个
|
|
单向关联
在一个单向关联中,两个类是相关的,但是只有一个类知道这种联系的存在。图 7 显示单向关联的透支财务报告的一个实例。
图 7: 单向关联一个实例:OverdrawnAccountsReport 类 BankAccount 类,而 BankAccount 类则对关联一无所知。
一个单向的关联,表示为一条带有指向已知类的开放箭头(不关闭的箭头或三角形,用于标志继承)的实线。如同标准关联,单向关联包括一个角色名和一个 多重值描述,但是与标准的双向关联不同的时,单向关联只包含已知类的角色名和多重值描述。在图 7 中的例子 中,OverdrawnAccountsReport 知道 BankAccount 类,而且知道 BankAccount 类扮演“overdrawnAccounts”的角色。然而,和标准关联不同,BankAccount 类并不知道它 与 OverdrawnAccountsReport 相关联。
3.4、实现关系(Realization)
实现是规格说明和其实现之间的关系,它将一种模型元素与另一种模型元素连接起来,比如类和接口。
泛化和实现关系都可以将一般描述与具体描述联系起来。泛化将同一语义层上的元素连接起来,并且通常在同一模型内。实现关系则将不同语义层内的元素连接起来,通常建立在不同的模型内。
实现关系通常在两种情况下被使用:在接口与实现该接口的类之间;在用例以及实现该用例的协作之间。
在UML中,实现关系的符号与泛化关系的符号类似,用一条带指向接口的空心三角箭头的虚线表示。下图所示的是实现关系的一个示例,描述的是Keyboard保证自己的部分行为可以实现Typewriter的行为
实现关系还有一种省略的表示方法,即接口表示为一个小圆圈,并和实现接口的类用一条线段连接,如图
用例图
分享到:
相关推荐
B2C电子商务系统UML建模——淘宝网系统 本文档介绍了基于统一建模语言(UML)的B2C电子商务系统建模,目标对象是淘宝网系统。该系统主要实现网上商品展示与在线购买及各类用户管理。系统的主要功能需求包括管理员...
该文提到的“高校UML全程建模1”适用于初学者,通过详细的讲解和实例,帮助读者掌握UML的基础概念和应用技巧。 #### UML的重要性 - **系统理解**:UML有助于开发者和利益相关者更好地理解和讨论系统架构。 - **设计...
UML类图中的六种关系——依赖、类属、关联、实现、聚合和组合,是理解系统静态结构的基础。每种关系都有其特定的含义和应用场景,通过合理使用这些关系,可以有效地描述系统的结构特征。对于软件开发人员来说,熟练...
【UML课程——福州大学计算机系】是一门深入教授面向对象分析与设计的课程,特别强调使用统一建模语言(UML)进行软件开发。该课程由刘秉瀚老师主讲,提供了丰富的教学资源和联系方式,旨在帮助学生掌握UML的基础...
2. **类图(Class Diagrams)**:类图是最常用的一种UML图,它展示了系统中的类、接口以及它们之间的关系。类图可以提供面向对象分析与设计(OOA&D)过程中的不同视角,用于识别业务概念,探索问题域的词汇,并记录...
本文将详细介绍两款Eclipse中的UML类图插件——AmaterasUML和GEF,并阐述它们的安装与使用方法。 首先,AmaterasUML是一款强大的Eclipse插件,版本为1.3.4,它使得开发者无需离开Eclipse环境就能创建、编辑和查看...
《UML建模——图书管理系统需求分析报告》 图书管理系统是一种使用计算机技术高效处理大量图书信息的电子档案管理系统。该系统旨在满足三个主要用户群体的需求:借书者、图书管理员和系统管理员。对于借书者,系统...
本文基于标题“使用UML类图构建本体模型的方法”以及其描述,将深入探讨如何利用UML类图来构建和表达复杂的知识体系——即本体模型。 ### UML与本体建模的关系 UML作为一种广泛使用的建模语言,它不仅适用于软件...
### UML类图在关系数据库中的实现 #### 概述 在关系数据库设计过程中,实体关系模型(ER模型)作为一种标准方法被广泛采用以创建数据库的逻辑模型。然而,随着业务需求的日益复杂以及对数据模型灵活性的需求提高,...
**UML(统一建模语言)教程——基础级** UML,全称为Unified Modeling Language,是一种标准化的图形建模语言,用于软件工程中系统、软件和业务过程的可视化、构造和文档化。它通过一系列图形符号来表达软件设计的...
本次实验旨在让学生通过实践理解一个简单软件项目(学生学籍系统)的UML建模流程,掌握用况图、序列图、协作图和类图等主要建模元素的使用方法,从而提高系统设计的能力。 #### 实验内容与要求 根据学籍管理系统的...
**UML类图绘制工具——Flash版** UML(统一建模语言)是软件工程领域中用于系统建模的一种标准化语言,它可以帮助开发者清晰地表达系统设计思想,提高团队之间的沟通效率。类图是UML中最为基础和重要的图表类型之一...
**UML类图工具——StarUML** 在软件开发领域,UML(统一建模语言)是一种标准化的建模工具,用于可视化、构建和文档化软件系统。类图是UML中的一种基本图表,它描绘了类之间的关系,如继承、实现、关联等,帮助...
【UML——统一建模语言】是软件开发领域中一种重要的建模工具,它通过一套标准化的图形符号和文本语法来描述软件系统的设计和结构。UML的主要目标是提供一个通用的语言,使得开发者能够清晰、一致地表达和交流系统...
UML包含多种类型的图表,如用例图、类图、对象图、组件图、配置图、序列图、协作图、状态图和活动图,这些图表分别用于展示不同的系统方面。 【广告管理系统特征】广告管理系统的核心是客户导向,它改变了传统的以...
- UML(统一建模语言):一种用于软件系统建模的标准语言,包括类图、序列图、状态图和活动图等多种图表,用于描述系统的结构和行为。 - 类图:UML中的静态结构模型,描述了系统中对象的分类、属性和操作,以及它们...
本文将深入探讨UML中的四个关键图表类型:用例图、类图、序列图和活动图,以及它们如何应用于一个具体的实例——新闻发布系统。 1. **用例图(Use Case Diagram)**: 用例图描述了系统的主要参与者(Actors)与...
本系统基于某高校的教务管理模式,使用UML建模语言,设计了系统的用例模型、类图模型、状态机模型和顺序图模型等。 关键词:大学教务管理系统、UML模型设计、用例模型、类图模型、状态机模型、顺序图模型 一、引言...
UML类图是一种建模语言,用于描述面向对象设计的核心元素——类,以及类之间的关系。在类图中,类通常被表示为矩形,分为三层。第一层展示类的名称,如果类是抽象的,那么名称将用斜体表示。第二层列出类的属性或...
《UML类图和时序图详解》 UML(统一建模语言)是软件开发过程中常用的一种图形表示工具,它能清晰地描绘出系统的设计和行为。在本文中,我们将深入探讨UML中的两类重要图表——类图和时序图。 首先,类图是UML中...