UML图:类图和对象图详解
目录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)说明复杂的数据结构。
对于复杂的数据结构,有时候很难对其进行抽象成类表达之间的交互关系。
使用对象描绘对象之间的关系可以帮助我们说明复杂的数据结构某一时刻的快照,从而有助于对复杂数据结构的抽象。
(2)表示快照中的行为。
通过一系列的快照,可以有效表达事物的行为。
类图的组成1. 类类是面向对象系统组织结构的核心。
类是对一组具有相同属性、操作、关系和语义的事物的抽象。
在UML的图形表示中,类的表示法是一个矩形,这个矩形由三个部分构成,分别是:类的名称(Name)、类的属性(Attribute)和类的操作(Operation)。
类的名称是每个类的图形中所必须拥有的元素,用于同其它类进行区分。
类的名称通常来自于系统的问题域,并且尽可能地明确表达要描述的事物,不会造成类的语义冲突。
属性是类的一个特性,也是类的一个组成部分,描述了在软件系统中所代表的对象具备的静态部分的公共特征抽象,这些特性是这些的对象所共有的。
在UML中,类的属性的表示语法为([ ]内的内容是可选的):[可见性] 属性名称 [:属性类型] [=初始值] [{属性字符串}]类的操作指的是类的所能执行的操作,也是类的一个重要组成部分,描述了在软件系统中所代表的对象具备的动态部分的公共特征抽象。
操作由一个返回类型、一个名称以及参数表来描述。
其中,返回类型、名称和参数一起被称为操作签名(Signature of the Operation)。
操作签名描述了使用该操作所必需的所有信息。
在UML中,类的操作的表示语法为([ ]内的内容是可选的):[可见性] 操作名称 [(参数表)] [:返回类型] [{属性字符串}]在标准的UML定义中,有时还应当指明类的另一种信息,那就是类的职责。
类的职责指的是对该类的所有对象所具备的那些相同的属性和操作共同组成的功能或服务的抽象。
在声明类的职责的时候,可以非正式的在类图的下方增加一栏,将该类的职责逐条描述出来。
类的职责的描述并不是必须的,因此也可以将其作为文档的形似存在,也就是说类的职责其实只是一段或多段文本描述。
一个类可以有多种职责,设计得好的类一般至少有一种职责。
类的约束指定了该类所要满足的一个或多个规则。
在UML中,约束是用一个大括号括起来的文本信息。
类的注释2. 接口类接口是在没有给出对象的实现和状态的情况下对对象行为的描述。
通常,在接口中包含一系列操作但是不包含属性,并且它没有对外界可见的关联。
接口是一种特殊的类,所有接口都是有构造型interface的类。
一个类可以通过实现接口从而支持接口所指定的行为。
在UML中,接口的表示方式是使用一个带有名称的小圆圈来进行表示的,并且我们可以通过一条Realize(实现关系)线与实现它的类相连接3. 类之间的关系依赖关系:表示的是两个或多个模型元素之间语义上的连接关系。
它只将模型元素本身连接起来而不需要用一组实例来表达它的意思。
它表示了这样一种情形,提供者的某些变化会要求或指示依赖关系中客户的变化。
也就是说依赖关系将行为和实现与影响其他类的类联系起来。
泛化关系是用来描述类的一般和具体之间的关系。
具体描述建立在对类的一般描述的基础之上,并对其进行了扩展。
因此,在具体描述中不仅包含一般描述中所拥有的所有特性、成员和关系,而且还包含了具体描述补充的信息。
关联关系是一种结构关系,指出了一个事物的对象与另一个事物的对象之间的语义上的连接。
关联描述了系统中对象或实例之间的离散连接,它将一个含有两个或多个有序表的类,在允许复制的情况下连接起来。
一个类的关联的任何一个连接点都叫做关联端,与类有关的许多信息都附在它的端点上。
关联端有名称、角色、可见性以及多重性等特性。
实现关系将一种模型元素(如类)与另一种模型元素(如接口)连接起来,是说明和其实现之间的关系。
在实现关系中,接口只是行为的说明而不是结构或者实现,而类中则要包含了其具体的实现内容,可以通过一个或多个类实现一个接口,但是每个类必须分别实现接口中的操作。
虽然实现关系意味着要有像接口这样的说明元素,它也可以用一个具体的实现元素来暗示它的说明(而不是它的实现)必须被支持。
使用Rose创建类图1. 创建类(1)在图形编辑工具栏中,选择按钮,此时光标变为“+”号。
(2)在类图中单击选择任意一个位置,系统在该位置创建一个新类。
系统产生的默认名称为“NewClass”。
(3)在类的名称栏中,显示了当前所有的类的名称,我们可以选择清单中的现有类,这样便把在模型中存在的该类添加到类图中。
如果创建新类,将“NewClass”重新命名成新的名称即可。
2. 创建类之间的关系(1)创建和删除依赖关系。
(2)创建和删除泛化关系。
(3)创建和删除实现关系。
(4)创建和删除关联关系。
对象图1. 对象图的组成对象图(Object Diagram)是由对象(Object)和链(Link)组成的。
对象图的目的在于描述系统中参与交互的各个对象在某一时刻是如何运行的。
2. 创建对象图在Rational Rose 2003中不直接支持对象图的创建,但是我们可以利用协作图来创建。
在协作图中添加对象的步骤如下:(1)在协作图的图形编辑工具栏中,选择按钮,此时光标变为“+”号。
(2)在类图中单击选择任意一个位置,系统在该位置创建一个新的对象。
(3)双击该对象的图标,弹出对象的规范设置窗口。
(4)在对象的规范设置窗口中,可以设置对象的名称、类的名称、持久性和是否多对象等。
(5)点击“OK”按钮即可。
在协作图中添加对象与对象之间的链的步骤如下:(1)选择工具栏中的协作图图形编辑工具栏中的图标,或者选择菜单栏“Tools”(工具)中“Create”(新建)下的“Object Link”选项,此时的光标变为“↑”符号。
(2)单击需要链接的对象。
(3)将链的线段拖动到要与链接的对象中。
(4)双击链的线段,弹出设置链规范的对话框。
(5)在弹出的对话框中,在“General”选项卡中设置链的名称、关联、角色以及可见性等。
(6)如需要在对象的两端添加消息,可以在“Messages”选项卡中进行设置。
使用Rose创建类图案例分析1. 确定类和关联用例图实质上是一种系统描述的形式,自然可以根据用例描述来识别类。
针对各个用例,通常可以根据如下的问题辅助识别:(1)用例描述中出现了那些实体?(2)用例的完成需要哪些实体合作?(3)用例执行过程中会产生并存储哪些信息?(4)用例要求与之关联的每个角色的输入是什么?(5)用例反馈与之关联的每个角色的输出是什么?(6)用例需要操作哪些硬设备?在选课管理系统的简单用例中,我们可以很容易的识别“教师”类和“学生”类。
教师可以安排课程和录入成绩,而学生可以选课和查询成绩,因而“成绩”和“课程”也是类。
2. 确定属性和操作每个类的操作都有所不同。
我们确定的一些类的属性和操作,为方便表示,我们使用英文标识。
浅谈UML中常用的几种图
浅谈UML中常用的几种图1 UML简介2 UML常见图分类3 用况图(用例)4 类图简单类图使用举例5 其他辅助用图●时序图(顺序图)●协作图(Collaboration Diagram/communication Diagram)/通信图●状态图●活动图(Activity Diagram)6 组件图(ComponentDiagram)、配置图(Deployment Diagram)1 UML简介统一建模语言(Unified Modeling Language,UML)又称标准建模语言,是始于1997年的一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。
‘UML感兴趣的可以阅读UML 1规范,包含了UML 的所有知识内容。
注:OMG, Object Management Group 对象管理组织2 UML常见图分类UML从考虑系统的不同角度出发,定义了用况图、类图、对象图、包图、状态图、活动图、序列图、通信图、构件图、部署图等10种图。
分类:面向对象动态建模,用于建立行为的实体间行为交互的四种图:状态图(Stage Diagram),序列图(Sequence Diagram),协作图(Communication Diagram),活动图(Activity Diagram) 。
“序列图”与“协作图”表述的是相似的消息,“活动图”是“状态图”的一种。
•静态结构图Static Structure Diagram•类图Class Diagram•对象图Object Diagram•用况图Use Case Diagram•交互图Interaction Diagram•顺序图Sequence Diagram•协作图Collaboration Diagram•状态图State chart Diagrams•活动图Activity Diagrams•实现图Implementation Diagrams•构件图Component Diagram•部署图Deployment Diagram3 用况图(用例)用例图,展现了一组用例、参与者(actor)以及它们之间的关系。
UML各种图例齐全—用例图、类图、状态图、包图、协作图、顺序图详细说明书画法和功能
UML各种图例面向对象的问题的处理的关键是建模问题.建模可以把在复杂世界的许多重要的细节给抽象出.许多建模工具封装了UML(也就是Unified Modeling Language ™),这篇课程的目的是展示出UML的精彩之处.UML中有九种建模的图标,即:∙用例图∙类图∙对象图∙顺序图∙协作图∙状态图∙活动图∙组件图∙配置图本课程中的某些部分包含了这些图的细节信息的页面链接.而且每个部分都有一个小问题,测试一下你对这个部分的理解.为什么UML很重要?为了回答这个问题,我们看看建筑行业.设计师设计出房子.施工人员使用这个设计来建造房子.建筑越复杂,设计师和施工人员之间的交流就越重要.蓝图就成标准文档为了这个行业中的设计师和施工人员的必修课.写软件就好像建造建筑物一样.系统越复杂,参与编写与配置软件的人员之间的交流也就越重要.在过去十年里UML就成为分析师,设计师和程序员之间的“建筑蓝图”.现在它已经成为了软件行业的一部分了.UML提供了分析师,设计师和程序员之间在软件设计时的通用语言.UML被应用到面向对象的问题的解决上.想要学习UML必须熟悉面向对象解决问题的根本原则――都是从模型的建造开始的.一个模型model就是根本问题的抽象.域domain就是问题所处的真实世界.模型是由对象objects组成的,它们之间通过相互发送消息messages来相互作用的.记住把一个对象想象成“活着的”.对象有他们知道的事(属性attributes)和他们可以做的事(行为或操作behaviors or operations).对象的属性的值决定了它的状态state.类Classes是对象的“蓝图”.一个类在一个单独的实体中封装了属性(数据)和行为(方法或函数).对象是类的实例instances.用例图用例图Use case diagrams描述了作为一个外部的观察者的视角对系统的印象.强调这个系统是什么而不是这个系统怎么工作.用例图与情节紧紧相关的.情节scenario是指当某个人与系统进行互动时发生的情况.下面是一个医院门诊部的情节.“一个病人打电话给门诊部预约一年一次的身体检查.接待员找出在预约记录本上找出最近的没有预约过的时间,并记上那个时间的预约记录.”用例Use case是为了完成一个工作或者达到一个目的的一系列情节的总和.角色actor是发动与这个工作有关的事件的人或者事情.角色简单的扮演着人或者对象的作用.下面的图是一个门诊部Make Appointment用例.角色是病人.角色与用例的联系是通讯联系communication association(或简称通讯communication)标准文档角色是人状的图标,用例是一个椭圆,通讯是连接角色和用例的线.一个用例图是角色,用例,和它们之间的联系的集合.我们已经把Make Appointment作为一个含有四个角色和四个用例的图的一部分.注意一个单独的用例可以有多个角色.用例图在三个领域很有作用.决定特征(需求).当系统已经分析好并且设计成型时,新的用例产生新的需求标准文档∙客户通讯.使用用例图很容易表示开发者与客户之间的联系.∙产生测试用例.一个用例的情节可能产生这些情节的一批测试用例.类图类图Class diagram通过显示出系统的类以及这些类之间的关系来表示系统.类图是静态的-它们显示出什么可以产生影响但不会告诉你什么时候产生影响.下面是一个顾客从零售商处预定商品的模型的类图.中心的类是Order.连接它的是购买货物的Customer和Payment.Payment有三种形式:Cash,Check,或者Credit.订单包括OrderDetails(line item),每个这种类都连着Item.标准文档UML类的符号是一个被划分成三块的方框:类名,属性,和操作.抽象类的名字,像Payment是斜体的.类之间的关系是连接线.类图有三种关系.关联association-表示两种类的实例间的关系.如果一个类的实例必须要用另一个类的实例才能完成工作时就要用关联.在图中,关联用两个类之间的连线表示.标准文档标准文档为了简单地表示出复杂的类图,可以把类组合成包packages.一个包是UML上有逻辑关系的元件的集合.下面这个图是是一个把类组合成包的一个商业模型.dependencies关系.如果另一个的包B改变可能会导致一个包A改变,则包A依赖包B.包是用一个在上方带有小标签的矩形表示的.包名写在标签上或者在矩形里面.点化线箭头表示依赖对象图Object diagrams用来表示类的实例.他们在解释复杂关系的细小问题时(特别是递归关系时)很有用.这个类图示一个大学的Department可以包括其他很多的Departments.标准文档这个对象图示上面类图的实例.用了很多具体的例子.UML中实例名带有下划线.只要意思清楚,类或实例名可以在对象图中被省略.标准文档每个类图的矩形对应了一个单独的实例.实例名称中所强调的UML图表.类或实例的名称可能是省略对象图表只要图的意义仍然是明确的.顺序图类图和对象图是静态模型的视图.交互图是动态的.他们描述了对象间的交互作用.顺序图将交互关系表示为一个二维图.纵向是时间轴,时间沿竖线向下延伸.横向轴代表了在协作中各独立对象的类元角色.类元角色用生命线表示.当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线.消息用从一个对象的生命线到另一个对象生命线的箭头表示.箭头以时间顺序在图中从上到下排列.标准文档协作图协作图也是互动的图表.他们像序列图一样也传递相同的信息,但他们不关心什么时候消息被传递,只关心对象的角色.在序列图中,对象的角色放在上面而消息则是连接线.标准文档对象角色矩形上标有类或对象名(或者都有).类名前面有个冒号(:).协作图的每个消息都有一个序列号.顶层消息的数字是1.同一个等级的消息(也就是同一个调用中的消息)有同样的数字前缀,再根据他们出现的顺序增加一个后缀1,2等等.状态图对象拥有行为和状态.对象的状态是由对象当前的行动和条件决定的.状态图statechart diagram显示出了对象可能的状态以及由状态改变而导致的转移.标准文档我们的模型例图建立了一个银行的在线登录系统.登录过程包括输入合法的密码和个人账号,再提交给系统验证信息.登录系统可以被划分为四种不重叠的状态:Getting SSN, Getting PIN, Validating, 以及 Rejecting.每个状态都有一套完整的转移transitions来决定状态的顺序.标准文档状态是用圆角矩形来表示的.转移则是使用带箭头的连线表示.触发转移的事件或者条件写在箭头的旁边.我们的图上有两个自转移.一个是在Getting SSN,另一个则在上Getting PIN.初始状态(黑色圆圈)是开始动作的虚拟开始.结束状态也是动作的虚拟结束.事件或条件触发动作时用(/动作)表示.当进入Validating状态时,对象并不等外部事件触发转移.取而代之,它产生一个动作.动作的结果决定了下一步的状态.活动图活动图activity diagram是一个很特别的流程图.活动图和状态图之间是有关系的.状态图把焦点集中在过程中的对象身上,而活动图则集中在一个单独过程动作流程.活动图告诉了我们活动之间的依赖关系.对我们的例子来说,我们使用如下的过程.“通过ATM来取钱.”这个活动有三个类Customer, ATM和 Bank.整个过程从黑色圆圈开始到黑白的同心圆结束.活动用圆角矩形表示.标准文档标准文档标准文档。
UML静态模型
UML静态建模—类图与对象图
关系
关联(Association)
关联用于描述类与类之间的连接。由于对象是类的实例,因此类与 类之间的关联也就是其对象之间的关联。
泛化(Generation)
又称继承,A generalization is a relationship between a more general and a more specific element。
9.
{
10.
employee = p;
11.
}
12. }
13. class Person
14. {
15.
… (略)
16. }
UML静态建模—类图与对象图
关系—组合聚合(composition Aggregation)
如果构成整体类的部分类完全隶属于整体类,则这样 的聚合称为复合聚合。换句话说,如果没有整体类则 部分类也没有存在的价值,部分类的存在是因为有整 体类的存在。
关系—共享聚合(Shared aggregation)
1. // 主程序 2. Person p = new Person(); 3. Team t = new Team(p);
4. class Team
5. {
6.
Person employee;
7.
// Constructor
8.
public Team(Person p)
由名称、属性 、方法构成
对象是类的实例。
类之间的关系一共有四种:关联、泛化、依赖、 实现化。 包(Package) 用来分类、组织类。
关联:用于表示类的对象之间的关系。其特殊
user
形式有组成关联和聚集关联。
uml表达逻辑模型
uml表达逻辑模型
UML(统一建模语言)是一种可视化的面向对象建模语言,提供了丰富的图形化表示法,使得开发人员能够更加直观地理解和描述软件系统的结构和行为。
在UML中,逻辑模型主要通过以下几种方式来表达:
1. 类图(Class Diagram):类图是UML中最基本的图之一,用于描述系统中的类、接口以及它们之间的关系。
类图可以展示类的静态结构,包括属性、方法和关系等,从而帮助开发人员理解系统的逻辑结构。
2. 对象图(Object Diagram):对象图是类图的一个实例,它展示了在某一特定时间点上系统中对象的快照。
对象图可以帮助开发人员理解系统在运行时的状态和行为。
3. 包图(Package Diagram):包图用于描述系统中的包以及包之间的关系。
包是一种组织类、接口和其他元素的方式,可以帮助开发人员将系统划分为更小、更易于管理的部分。
4. 组件图(Component Diagram):组件图用于描述系统中的组件以及它们之间的关系。
组件是系统中的可替换部分,可以执行特定的功能。
组件图可以帮助开发人员理解系统的物理结构和部署方式。
除了以上几种图之外,UML还提供了其他类型的图,如
用例图、顺序图、活动图等,这些图也可以用于描述系统的逻辑模型,但侧重点可能有所不同。
例如,用例图主要用于描述系统的功能需求,而顺序图则用于描述系统中对象之间的交互行为。
总的来说,UML提供了多种图形化表示法来描述系统的逻辑模型,开发人员可以根据需要选择合适的图来描述系统的不同方面。
UML对象图与类图的选择原则与对比分析详解
UML对象图与类图的选择原则与对比分析详解UML(Unified Modeling Language)是一种用于软件开发过程中的标准建模语言,它提供了一套丰富的图形符号和规范,帮助开发人员更好地理解和描述软件系统的结构和行为。
在UML中,对象图和类图是两种常用的建模工具,它们各自有着不同的特点和适用场景。
本文将对UML对象图和类图进行选择原则和对比分析,帮助读者更好地理解它们的应用。
一、UML对象图UML对象图是描述系统中对象之间的静态关系的一种图形表示方式。
它主要用于展示系统中对象的实例以及它们之间的关系。
对象图通常用于详细描述系统的某个特定状态或者场景,它能够清晰地展示对象之间的交互和依赖关系。
对象图的主要特点是直观、具体,能够很好地展示对象的属性和方法。
它适用于需求分析和系统设计的初期阶段,帮助开发人员更好地理解系统的需求和设计方案。
对象图可以帮助开发人员发现系统中的潜在问题和矛盾,从而提前进行调整和优化。
然而,对象图的局限性在于它只能展示系统的某个特定状态或者场景,不能全面地描述系统的整体结构和行为。
因此,在系统设计的后期阶段,开发人员通常会使用类图来更全面地描述系统的结构和行为。
二、UML类图UML类图是描述系统中类之间的静态关系的一种图形表示方式。
它主要用于展示系统的整体结构和类之间的关系。
类图是UML中最常用的一种图形表示方式,它能够清晰地展示类的属性、方法和关联关系。
类图的主要特点是抽象、概括,能够很好地展示系统的整体结构和类之间的关系。
类图适用于系统的整体设计和架构描述,它能够帮助开发人员更好地理解系统的总体设计思路和模块划分。
与对象图相比,类图具有更高的抽象层次和更全面的描述能力。
它能够展示系统的整体结构和行为,帮助开发人员更好地理解和分析系统的复杂性。
因此,在系统设计的后期阶段,开发人员通常会使用类图作为主要的建模工具。
三、选择原则与对比分析在实际的软件开发过程中,开发人员需要根据具体的需求和场景选择合适的建模工具。
UML中数据流图,用例图,类图,对象图,角色图,活动图,序列图详细讲述保存供参考
UML中数据流图,⽤例图,类图,对象图,⾓⾊图,活动图,序列图详细讲述保存供参考这个⽂章,是我在急需的情况下在园⼦⾥搜索到的,原创作者是:DO-websoftware,为了⾃⼰看⽅便,所以复制到我的空间,希望原创者不要介意哦~~~~很详细的介绍,对我的帮助很⼤,谢谢哦。
类图,对象图,⾓⾊图:⼀、UML中基本的图范畴:在 UML 2 中有⼆种基本的图范畴:结构图和⾏为图。
每个 UML 图都属于这⼆个图范畴。
结构图的⽬的是显⽰建模系统的静态结构。
它们包括类,组件和(或)对象图。
另⼀⽅⾯,⾏为图显⽰系统中的对象的动态⾏为,包括如对象的⽅法,协作和活动之类的内容。
⾏为图的实例是活动图,⽤例图和序列图。
⼆、UML中的类图:1.类图的表⽰:类的 UML 表⽰是⼀个长⽅形,垂直地分为三个区,如图 1 所⽰。
顶部区域显⽰类的名字。
中间的区域列出类的属性。
底部的区域列出类的操作。
在⼀个类图上画⼀个类元素时,你必须要有顶端的区域,下⾯的⼆个区域是可选择的(当图描述仅仅⽤于显⽰分类器间关系的⾼层细节时,下⾯的两个区域是不必要的)。
描述:顶部区域显⽰类的名字。
中间的区域列出类的属性。
底部的区域列出类的操作。
当在⼀个类图上画⼀个类元素时,你必须要有顶端的区域,下⾯的⼆个区域是可选择的(当图描述仅仅⽤于显⽰分类器间关系的⾼层细节时,下⾯的两个区域是不必要的)。
·类名:如果是抽象类,则采⽤斜体·类属性列表:name : attribute type 如 flightNumber : Integer,这是最常见的表达形式name : attribute type = default value 如 balance : Dollars = 0,这是带有默认值的表达形式·类⽅法列表:name(parameter list) : type of value returned注意:在业务类图中,属性类型通常与单位相符,这对于图的可能读者是有意义的(例如,分钟,美元,等等)。
UML各种图例—用例图、类图、状态图、包图、协作图、顺序图
UML各种图例——用例图、类图、状态图、包图、协作图、顺序图面向对象的问题的处理的关键是建模问题.建模可以把在复杂世界的许多重要的细节给抽象出.许多建模工具封装了UML(也就是Unified Modeling Language™),这篇课程的目的是展示出UML的精彩之处.UML中有九种建模的图标,即:∙用例图∙类图∙对象图∙顺序图∙协作图∙状态图∙活动图∙组件图∙配置图本课程中的某些部分包含了这些图的细节信息的页面链接.而且每个部分都有一个小问题,测试一下你对这个部分的理解.为什么UML很重要?为了回答这个问题,我们看看建筑行业.设计师设计出房子.施工人员使用这个设计来建造房子.建筑越复杂,设计师和施工人员之间的交流就越重要.蓝图就成为了这个行业中的设计师和施工人员的必修课.写软件就好像建造建筑物一样.系统越复杂,参与编写与配置软件的人员之间的交流也就越重要.在过去十年里UML就成为分析师,设计师和程序员之间的“建筑蓝图”.现在它已经成为了软件行业的一部分了.UML提供了分析师,设计师和程序员之间在软件设计时的通用语言.UML被应用到面向对象的问题的解决上.想要学习UML必须熟悉面向对象解决问题的根本原则――都是从模型的建造开始的.一个模型model就是根本问题的抽象.域domain就是问题所处的真实世界.模型是由对象objects组成的,它们之间通过相互发送消息messages来相互作用的.记住把一个对象想象成“活着的”.对象有他们知道的事(属性attributes)和他们可以做的事(行为或操作behaviors or operations).对象的属性的值决定了它的状态state.类Classes是对象的“蓝图”.一个类在一个单独的实体中封装了属性(数据)和行为(方法或函数).对象是类的实例instances.用例图用例图Use case diagrams描述了作为一个外部的观察者的视角对系统的印象.强调这个系统是什么而不是这个系统怎么工作.用例图与情节紧紧相关的.情节scenario是指当某个人与系统进行互动时发生的情况.下面是一个医院门诊部的情节.“一个病人打电话给门诊部预约一年一次的身体检查.接待员找出在预约记录本上找出最近的没有预约过的时间,并记上那个时间的预约记录.”用例Use case是为了完成一个工作或者达到一个目的的一系列情节的总和.角色actor是发动与这个工作有关的事件的人或者事情.角色简单的扮演着人或者对象的作用.下面的图是一个门诊部Make Appointment用例.角色是病人.角色与用例的联系是通讯联系communication association(或简称通讯communication)角色是人状的图标,用例是一个椭圆,通讯是连接角色和用例的线.一个用例图是角色,用例,和它们之间的联系的集合.我们已经把Make Appointment作为一个含有四个角色和四个用例的图的一部分.注意一个单独的用例可以有多个角色.用例图在三个领域很有作用.∙决定特征(需求).当系统已经分析好并且设计成型时,新的用例产生新的需求∙客户通讯.使用用例图很容易表示开发者与客户之间的联系.∙产生测试用例.一个用例的情节可能产生这些情节的一批测试用例.类图类图Class diagram通过显示出系统的类以及这些类之间的关系来表示系统.类图是静态的-它们显示出什么可以产生影响但不会告诉你什么时候产生影响.下面是一个顾客从零售商处预定商品的模型的类图.中心的类是Order.连接它的是购买货物的Customer和Payment.Payment有三种形式:Cash,Check,或者Credit.订单包括OrderDetails(line item),每个这种类都连着Item.每个类图包括类,关联和多样性表示.方向性和角色是为了使图示得更清楚时可选的项目.包和对象图为了简单地表示出复杂的类图,可以把类组合成包packages.一个包是UML上有逻辑关系的元件的集合.下面这个图是是一个把类组合成包的一个商业模型. dependencies关系.如果另一个的包B改变可能会导致一个包A改变,则包A依赖包B.包是用一个在上方带有小标签的矩形表示的.包名写在标签上或者在矩形里面.点化线箭头表示依赖对象图Object diagrams用来表示类的实例.他们在解释复杂关系的细小问题时(特别是递归关系时)很有用.这个类图示一个大学的Department可以包括其他很多的Departments.这个对象图示上面类图的实例.用了很多具体的例子.UML中实例名带有下划线.只要意思清楚,类或实例名可以在对象图中被省略.每个类图的矩形对应了一个单独的实例.实例名称中所强调的UML图表.类或实例的名称可能是省略对象图表只要图的意义仍然是明确的.顺序图类图和对象图是静态模型的视图.交互图是动态的.他们描述了对象间的交互作用.顺序图将交互关系表示为一个二维图.纵向是时间轴,时间沿竖线向下延伸.横向轴代表了在协作中各独立对象的类元角色.类元角色用生命线表示.当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线.消息用从一个对象的生命线到另一个对象生命线的箭头表示.箭头以时间顺序在图中从上到下排列.协作图协作图也是互动的图表.他们像序列图一样也传递相同的信息,但他们不关心什么时候消息被传递,只关心对象的角色.在序列图中,对象的角色放在上面而消息则是连接线.对象角色矩形上标有类或对象名(或者都有).类名前面有个冒号(:).协作图的每个消息都有一个序列号.顶层消息的数字是1.同一个等级的消息(也就是同一个调用中的消息)有同样的数字前缀,再根据他们出现的顺序增加一个后缀1,2等等.状态图对象拥有行为和状态.对象的状态是由对象当前的行动和条件决定的.状态图statechart diagram显示出了对象可能的状态以及由状态改变而导致的转移.我们的模型例图建立了一个银行的在线登录系统.登录过程包括输入合法的密码和个人账号,再提交给系统验证信息.登录系统可以被划分为四种不重叠的状态:Getting SSN, Getting PIN, Validating, 以及Rejecting.每个状态都有一套完整的转移transitions来决定状态的顺序.状态是用圆角矩形来表示的.转移则是使用带箭头的连线表示.触发转移的事件或者条件写在箭头的旁边.我们的图上有两个自转移.一个是在Getting SSN,另一个则在上Getting PIN.初始状态(黑色圆圈)是开始动作的虚拟开始.结束状态也是动作的虚拟结束.事件或条件触发动作时用(/动作)表示.当进入Validating状态时,对象并不等外部事件触发转移.取而代之,它产生一个动作.动作的结果决定了下一步的状态.活动图活动图activity diagram是一个很特别的流程图.活动图和状态图之间是有关系的.状态图把焦点集中在过程中的对象身上,而活动图则集中在一个单独过程动作流程.活动图告诉了我们活动之间的依赖关系.对我们的例子来说,我们使用如下的过程.“通过ATM来取钱.”这个活动有三个类Customer, ATM和Bank.整个过程从黑色圆圈开始到黑白的同心圆结束.活动用圆角矩形表示.。
UML课件5-类图和对象图详解
5.4.3 寻找类(三种常用方法)
1. 使用名词/动词法分析寻找类
收集相关信息 补充的需求规格说明 用例 项目词汇表 其他文档
选取类的属性时只考虑系统用到的特征,不必将所有属 性都表示出来,原则上,由类的属性应能区分每个特定 的对象。
5.1.1 属性
可见性
属性的可访问性,四类: 公共(public)
私有(private)
保护(protected)
实现(implementation) 子类无法继承和访问父类的私有属性和实现属性
先调用Order的dispatch ()方法,它将根据其包含的OrderItem中 产品信息,来按供应商户分拆成若干个DeliverOrder。商户登录 系统后就可以获取其DeliverOrder,并在执行完成后再调用close ()方法。此时,就将调用OrderItem的stateChange()方法来改变 其状态。同时再调用Order的close()方法,判断该Order的所有 的OrderItem是否都已经送到了,如果是就将其真正close()掉。
一个公司有多个部门,一个职员为其中某部门工作,则 可推导该职员为该公司工作。
5.2.2 泛化
Generalization,一般元素和特殊元素之间 的关系。即OO语言中,类之间的继承关系
斜体表示 抽象类
5.2.2 泛化
泛化的目的
自顶向下的属性继承。可以使得子类共享父类的属性 和操作,实现继承。
5.1.2 操作
标准格式:
[可见性] 操作名[ (参数列表) ] [: 返回值类型][{特性}]
例:
+display() #create() -attachXWindow(xwin:XWindowPtr) +getname():String
UML中的类图详解及其应用场景
UML中的类图详解及其应用场景在软件开发过程中,UML(统一建模语言)被广泛应用于需求分析、系统设计和软件开发等各个阶段。
其中,类图作为UML的核心图表之一,用于描述系统中的类、对象以及它们之间的关系。
本文将详细介绍UML中的类图,并探讨其在实际应用中的场景。
一、类图的基本概念类图是一种静态结构图,用于表示系统中的类、接口、关联、继承、依赖等元素及其之间的关系。
在类图中,类用矩形表示,类名位于矩形顶部,类的属性位于矩形中部,类的操作(方法)位于矩形底部。
类之间的关系通过连线表示,如关联关系用实线箭头表示,继承关系用空心三角箭头表示,依赖关系用虚线箭头表示等。
二、类图的元素及其关系1. 类(Class):类是对象的抽象表示,用于描述具有相同属性和行为的一组对象。
类图中的类用矩形表示,类名位于矩形顶部。
2. 接口(Interface):接口是一组方法的集合,用于描述类的行为。
接口在类图中用带有<<interface>>标记的矩形表示。
3. 属性(Attribute):属性是类的特征,描述了类的状态。
属性在类图中用名称:类型的形式表示,例如“name:String”。
4. 操作(Operation):操作是类的行为,描述了类的方法。
操作在类图中用名称(参数列表):返回类型的形式表示,例如“getName():String”。
5. 关联关系(Association):关联关系描述了类之间的连接,表示一个类与另一个类之间的关联。
关联关系在类图中用实线箭头表示。
6. 继承关系(Inheritance):继承关系描述了类之间的继承关系,表示一个类继承自另一个类。
继承关系在类图中用空心三角箭头表示。
7. 依赖关系(Dependency):依赖关系描述了类之间的依赖关系,表示一个类依赖于另一个类。
依赖关系在类图中用虚线箭头表示。
三、类图的应用场景1. 系统设计:类图是系统设计的重要工具之一。
UML面向对象建模chapter3类图对象图
Product
具有泛化关系的类图
案例—银行网络系统
一、问题的陈述 银行网络系统包括人工出纳和分行共享的自动 出纳机;各分理处用自己的计算机处理业务(保存 帐户、处理事务等);各分理处与出纳站通过网络 通信;出纳站录入帐户和事务数据;自动出纳机与 分行计算机通信;自动出纳机与用户接口,接受现 金卡;发放现金;打印收据;分行计算机与拨款分 理处结帐。 要求系统正确处理同一帐户的并发访问;网络 费用平均摊派给各分理处。
连接
递归关联 带有职责的递归关联 医生
治疗
人
病人
二、聚集(aggregation)
聚集是一种特殊的关联,它指出类间的“整体-部分”关系。 1、共享聚集(shared aggregation) 其“部分”对象可以是任意“整体”对象的一部分。当 “整体”端的重数不是1时,称聚集是共享的。
整体类 部分类
共享聚集
项目
*
*
人员
2、组合聚集(composition aggregation) 其“整体”(重数为0、1)拥有它的“部分” 。部分仅属 于同一对象,整体与部分同时存在。
标题 整体类 部分类 窗口 工具框 显示区
组合聚集 窗口
标题 工具框 显示区
三、泛化
泛化指出类之间的“一般与特殊关系”,即继承关系。父 类与子类之间构成类的分层结构。
类之间的关系
UML中类的关系有关联(association) ,聚集 (aggregation) ,泛化(generalization) , 依赖 (depending)和细化 (refinement)。
一、关联
公司
0..* 顾 佣
工作于
0..*
关联是类之间的连结,分为: 1. 2. 常规关联 多元关联
