`
cn_arthurs
  • 浏览: 327506 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

类图、对象图、角色图

阅读更多

转载自:http://www.cnblogs.com/wangbin/archive/2009/02/18/1393012.html

注:本文为IBM Developer网站UML2.X系列教程的学习笔记,原文参见:http://www.ibm.com/developerworks/cn/rational/r-uml/

一、UML中基本的图范畴:

在 UML 2 中有二种基本的图范畴:结构图和行为图。每个 UML 图都属于这二个图范畴。结构图的目的是显示建模系统的静态结构。它们包括类,组件和(或)对象图。另一方面,行为图显示系统中的对象的动态行为,包括如对象的方法,协作和活动之类的内容。行为图的实例是活动图,用例图和序列图。

 

二、UML中的类图:

1.类图的表示:

类的 UML 表示是一个长方形,垂直地分为三个区,如图 1 所示。顶部区域显示类的名字。中间的区域列出类的属性。底部的区域列出类的操作。在一个类图上画一个类元素时,你必须要有顶端的区域,下面的二个区域是可选择的(当图描述仅仅用于显示分类器间关系的高层细节时,下面的两个区域是不必要的)。




描述:

顶部区域显示类的名字。中间的区域列出类的属性。底部的区域列出类的操作。当在一个类图上画一个类元素时,你必须要有顶端的区域,下面的二个区域是可选择的(当图描述仅仅用于显示分类器间关系的高层细节时,下面的两个区域是不必要的)。

·类名:如果是抽象类,则采用斜体

·类属性列表:name : attribute type 如 flightNumber : Integer,这是最常见的表达形式



UML 2 也允许在实体层的关系/关联建模。绘制关联与一般的类关系的规则一样,除了在建模关联时有一个附加的要求。附加的限制是,关联关系必须与类图的关系相一致,而且关联的角色名字也必须与类图相一致。


四、UML中的角色图:

建模类的实例有时比期望的更为详细。有时,你可能仅仅想要在一个较多的一般层次做类关系的模型。在这种情况下,你应该使用 角色 记号。角色记号类似于实例记号。为了建立类的角色模型,你画一个方格,并在内部放置类的角色名及类名,作为实体记号,但是在这情况你不能加下划线。





注意:角色图和对象图的一个明显区别就是:对象图每个对象名称下面都加了下划线,而角色图没有

                 name : attribute type = default value  balance : Dollars = 0,这是带有默认值的表达形式

·类方法列表:name(parameter list) : type of value returned

注意:

在业务类图中,属性类型通常与单位相符,这对于图的可能读者是有意义的(例如,分钟,美元,等等)。然而,用于生成代码的类图,要求类的属性类型必须限制在由程序语言提供的类型之中,或包含于在系统中实现的、模型的类型之中。

2.继承的表示:

为了在一个类图上建模继承,从子类(要继承行为的类)拉出一条闭合的,单键头(或三角形)的实线指向超类。




类名BankAccount和withdrawal操作使用斜体。这表示,BankAccount 类是一个抽象类,而withdrawal方法是抽象的操作。换句话说,BankAccount 类使用withdrawal规定抽象操作,并且CheckingAccount 和 SavingsAccount 两个子类都分别地执行它们各自版本的操作。

3.接口的表示:

一个类和一个接口不同:一个类可以有它形态的真实实例,然而一个接口必须至少有一个类来实现它。在 UML 2 中,一个接口被认为是类建模元素的特殊化。因此,接口就象类那样绘制,但是长方形的顶部区域也有文本“interface”。



注意:继承用带箭头或三角形的实线表示,实现用带箭头或三角形的虚线表示

4.可见性的表示:

在面向对象的设计中,存在属性及操作可见性的记号。UML 识别四种类型的可见性:public,protected,private及package。

UML 规范并不要求属性及操作可见性必须显示在类图上,但是它要求为每个属性及操作定义可见性。为了在类图上显示可见性,放置可见性标志于属性或操作的名字之前。虽然 UML 指定四种可见性类型,但是实际的编程语言可能增加额外的可见性,或不支持 UML 定义的可见性。表4显示了 UML 支持的可见性类型的不同标志。

            UML 支持的可见性类型的标志

标志

可见性类型

+ Public
# proteted
- private
~ package




5.关联的表示:

·双向(标准)的关联

关联是两个类间的联接。关联总是被假定是双向的;这意味着,两个类彼此知道它们间的联系,除非你限定一些其它类型的关联。


一个双向关联用两个类间的实线表示。在线的任一端,你放置一个角色名和多重值。图 6 显示Flight与一个特定的Plane相关联,而且Flight类知道这个关联。因为角色名以Plane类表示,所以Plane承担关联中的“assignedPlane”角色。紧接于Plane类后面的多重值描述0...1表示,当一个Flight实体存在时,可以有一个或没有Plane与之关联(也就是,Plane可能还没有被分配)。图 6 也显示Plane知道它与Flight类的关联。在这个关联中,Flight承担“assignedFlights”角色;图 6 的图告诉我们,Plane实体可以不与flight关联(例如,它是一架全新的飞机)或与没有上限的flight(例如,一架已经服役5年的飞机)关联。

注意:关联的一方关联对象位于直线的上端,关联数目位于同侧的直线下端,另一方则相反 

 

     多重值和它们的表示

表示含义

可能的多重值描述

0..1 0个或1个
1 只能1个
0..* 0个或多个
* 0个或多个
1..* 1个或多个
3 只能3个
0..5 0到5个
5..15 5到15个


·单向关联

在一个单向关联中,两个类是相关的,但是只有一个类知道这种联系的存在。




一个单向的关联,表示为一条带有指向已知类的开放箭头(不关闭的箭头或三角形,用于标志继承)的实线。如同标准关联,单向关联包括一个角色名和一个多重值描述,但是与标准的双向关联不同的时,单向关联只包含已知类的角色名和多重值描述。

简单的说就是OverdrawAccountReport中包含了BankAccount属性,而BankAccount中不需要包含OverdrawnAccountsReport对象


6.聚合的表示:

聚合是一种特别类型的关联,用于描述“总体到局部”的关系。在基本的聚合关系中, 部分类 的生命周期独立于 整体类 的生命周期。

举例来说,我们可以想象,车 是一个整体实体,而 车轮 轮胎是整辆车的一部分。轮胎可以在安置到车时的前几个星期被制造,并放置于仓库中。在这个实例中,Wheel类实例清楚地独立于Car类实例而存在。然而,有些情况下, 部分 类的生命周期并 不 独立于 整体 类的生命周期 -- 这称为合成聚合。举例来说,考虑公司与部门的关系。 公司和部门 都建模成类,在公司存在之前,部门不能存在。这里Department类的实例依赖于Company类的实例而存在。

让我们更进一步探讨基本聚合和组合聚合。

注意:聚合与普通的关联的区别在于:普通的关联可能只是一个简单的“包含、引用”关系,关联和被关联类之间在逻辑概念上不一定有紧密的联系,而聚合则不同,它表示的是一种内在关系紧密,相互依存,相互包含的概念,其中的一部分是构成另外一部分的不可或缺的成分。

·基本聚合

有聚合关系的关联指出,某个类是另外某个类的一部分。在一个聚合关系中,子类实例可以比父类存在更长的时间。为了表现一个聚合关系,你画一条从父类到部分类的实线,并在父类的关联末端画一个未填充棱形。



图中清楚的表明了类Car对象包含了另一类Wheel的4个实例,这两者在概念上是密不可分的,其中的一个类是另一个类的构成成分。菱形表示“包含”,箭头表示被包含的对象,数字4表示包含的数目。

·组合聚合

组合聚合关系是聚合关系的另一种形式,但是子类实例的生命周期依赖于父类实例的生命周期。



注意:组合关系如聚合关系一样绘制,不过这次菱形是被填充的。

7.反射关联的表示:

类也可以使用反射关联与它本身相关联。起先,这可能没有意义,但是记住,类是抽象的。当一个类关联到它本身时,这并不意味着类的实例与它本身相关,而是类的一个实例与类的另一个实例相关。



图描绘的关系说明一个Employee实例可能是另外一个Employee实例的经理。然而,因为“manages”的关系角色有 0..*的多重性描述;一个雇员可能不受任何其他雇员管理。


三、UML中的对象图:

实例的记号和类一样,但是取代顶端区域中仅有的类名,它的名字是经过拼接的:

Instance Name : Class Name 如 Donald : Person


因为显示实例的目的是显示值得注意的或相关的信息,没必要在你的模型中包含整个实体属性及操作。相反地,仅仅显示感兴趣的属性及其值是完全恰当的。 

分享到:
评论

相关推荐

    Uml 用例图 类图 包图 活动图 顺序图

    在软件开发过程中,UML(统一建模...例如,用例图描述系统需求,类图和包图构建系统架构,活动图展现业务流程,而顺序图则细化了对象间的交互细节。通过这些图形化的表达,开发者能够更好地理解和设计复杂的软件系统。

    UML设计核心技术 类图 用例图 对象图

    对象图与类图的主要区别在于,对象图中的元素是实际的对象,而类图中的元素是类的抽象定义。 - **对象(Object)**:类的实例,包含属性值。 - **关联实例(Association Instance)**:对象之间的关系,与类图中的...

    图书馆管理系统的各种图 类图 活动图 序列图 协作图~~~

    而协作图则更注重展示对象间的关系和通信结构,强调了参与者的角色和他们如何协作完成任务。 通过以上分析,我们可以看出,UML图形在图书馆管理系统的设计和实现中扮演了关键角色。它们提供了全面、直观的理解,...

    第5章 类图和对象图-软件建模技术.PPT

    类图和对象图在软件建模中扮演着关键角色。类图用于设计阶段,它帮助开发者理解系统的静态结构,定义类的接口和实现细节,以及类之间的关系,如继承、聚合、组合等。而对象图则更多地用于系统运行时的表示,它展示了...

    类图与对象图PPT学习教案.pptx

    类图和对象图是软件建模中的核心工具,主要用于描绘系统的静态结构。它们在软件开发过程中扮演着重要的角色,帮助开发者理解和设计系统架构。 类图(Class Diagram)是UML(统一建模语言)中的一种图表,它展示了...

    各种UML图:用例图、类图、序列图、状态图、活动图、组件图和部署图.zip

    协作图与序列图类似,但更强调对象间的关系,如连接对象和角色。`交互图之协作图.gif`可能展示了这种关系,包括对象之间的合作关系和消息传递。 5. **状态图 (State Diagram)**: 状态图描绘了一个对象在其生命...

    图书馆管理系统类图 uml

    通过这样的类图,我们可以清晰地理解系统中每个对象的角色、职责和它们之间的交互方式。 总的来说,UML类图为图书馆管理系统提供了直观的设计蓝图,帮助开发者理解和构建系统,同时也有助于非技术人员如管理人员和...

    登录图UML类图.zip

    类图展示了类、接口、对象之间的关系,如继承、关联、聚合、组合等。在"登录图"的上下文中,我们通常会看到以下几个关键概念: 1. **用户类(User Class)**:在登录系统中,用户类是必不可少的。它通常包含属性如...

    UML论文 包括 类图 用例图 活动图 顺序图 状态图 协作图

    协作图使用角色和链(连接对象)来表示消息传递,有助于理解系统中的通信网络和协作模式。 这六个图型共同构成了一个全面的UML模型,它们相互补充,共同构建了一个详尽的系统模型,使得设计者和开发者能够深入理解...

    UML笔记(starUML 类图 用例图)

    对象图是类图的一个实例,展示了系统中具体对象的配置。而包图则用于组织和模块化大型系统,它描绘了类、接口和其他元素的分组,以及这些分组之间的依赖关系。包图有助于保持系统的可维护性和可重用性。 总结,UML...

    UML网购 用例图 类图 活动图

    本案例中基于当当网购物网站构建了用例图,展示了网站的主要功能及用户角色。 ##### 主要知识点: 1. **参与者**:参与者是指与系统交互的人或外部系统,如买家、卖家等。 2. **用例**:代表系统提供的功能或服务,...

    图书馆管理系统用例图活动图类图时序图.pdf

    图书馆管理系统用例图活动图类图时序图 图书馆管理系统是 modern library management system,旨在实现图书馆内图书的自动化管理、规范化和数字化。该系统主要目标是对图书进行注册登记、对借阅人进行注册登记、...

    图书管理系统用例建模报告 用例图 类图 时序图

    类图提供了系统中对象之间的静态视图,帮助理解系统内部结构和对象间的关系。在图书管理系统中,类图涵盖了以下几类: - **阅读者信息类**:作为父类,包含了所有阅读者的通用信息。 - **读者类**:继承自阅读者...

    UML2.0类图结构图流程图建模讲义

    UML 2.0 类图结构图流程图建模讲义 本讲义主要介绍 UML 建模的基本概念、OOAD 方法、RUP 建模过程与步骤,旨在指导读者学习 UML 建模的基本知识和应用。 一、 OOAD 与 UML 表示法 OOAD(Object-Oriented Analysis...

    UML 建模 用例图 类图 序列图详解文档打包下载

    - 在用例图中,"用例"代表系统执行的动作,"参与者"是与系统交互的角色,而"关系"(关联、扩展、包含等)则描述了用例间的联系。 - 用例图有助于识别系统的功能需求,为后续的设计和开发提供基础。 2. **类图...

    家教发布系统UML实现,类图,用例图,活动图,序列图。。。

    本系统的设计包含了UML的几个核心图表:类图、用例图、活动图和序列图,这些都是理解系统功能、行为和交互的关键。 1. **类图**:类图是UML中描述系统静态结构的工具,主要展示类、接口及其之间的关系,如继承、...

    uml 图书馆管理、网络教学系统

    本资料主要探讨了如何运用UML来对图书馆管理系统和网络教学系统进行建模,涵盖了多种图形,如用例图、顺序图、类图、对象图和协作图等。 首先,用例图(Use Case Diagram)是UML中用来描述系统功能需求的一种图形...

    uml类图详解实例图

    《UML类图详解实例图》 UML(Unified Modeling Language),即统一建模语言,是一种通用的、标准化的建模语言,旨在为软件开发提供一个可视化表达系统设计的工具。自1997年发布以来,UML已经成为了软件工程领域广泛...

    Jsp网络购物系统(类图、用例图)

    用例图能帮助我们理解系统的功能需求,明确各角色的交互过程。 ### 系统实现 JSP网络购物系统通常使用MVC(Model-View-Controller)架构,将业务逻辑、数据和用户界面分离。核心组件包括: 1. **Controller**:...

Global site tag (gtag.js) - Google Analytics