UML图中类之间的关系
类图中的关系大致一下几种
l 泛化
l 关联
l 依赖
l 组合
l 聚合
泛化
泛化是子集和超集的关系,常使用继承和实现来表示;
继承:子类到超类的实线和空心三角箭头表示
实现:子类到超类的虚线和空心三角箭头表示

依赖
依赖常常表示 一方(客户)知道另一方(提供者)并且另一方(提供者)有所改变时会对一方(客户)产生影响。这就是常常说的耦合。

依赖有许多种类型,比较常见的类型;
拥有提供者类型的参数
接收提供者类型的参数
提供者是超类或接口
向提供者发送消息。对提供者的可见性可能是 属性,参数变量,局部变量,全局变量或类方法。
public class Client
{ /// <summary>
/// 1.UpdatePrintMsg 方法接收Supplier对象作为参数,然后向其发送GetPrintMsg消息
/// 由此可见 client对象对supper具有参数可见性,并且有发送消息的耦合,因此对supplier有依赖。
/// 如果后者发生变化,client类将会受到影响。
/// </summary>
/// <param name="supplier"></param>
public void UpdatePrintMsg(Supplier supplier)
{
var msg = supplier.GetPrintMsg();
Console.WriteLine("客户端:call-》"+ msg);
} } public class Supplier
{
public string Msg => "提供者信息";
public string GetPrintMsg()
{
return Msg;
}
}
客户端调用并输出 :客户端: call-》提供者信息
Client client = new Client();
client.UpdatePrintMsg(new Supplier());
在看另外一个例子
public class Client
{ /// <summary>
/// PrintCartNum方法调用了supplier的静态方法。因此client对象对suplier类
/// 具有静态方法依赖。
/// </summary>
public void PrintCartNum()
{
long cartNum = Supplier.GetCartId(); Console.WriteLine(cartNum);
} } public class Supplier
{
public static long GetCartId() => 1000_2000_3000_4000;
}
客户端调用并输出:1000200030004000
Client client = new Client(); client.PrintCartNum();
关联
关联是一种has a 的关系,用导航性箭头(即实线+箭头)由源对象(order)那个指向目标对象(OrderItem),表示Order的一个属性是orderItem对象。在具体的实现时往往表示为类的属性
关联也可以不带箭头表示双向关联

聚合
聚合是uml中一种模糊的关联,其不精确地暗示了整体-部分关系(和许多普通关联一样)
为什么还定义这一术语呢?参考uml创始人之一的话:“虽然并没有给聚合赋予太多的语义,但是每个人都认为这是必要的。可以将其视为建模的安慰剂。”因此,听从uml创始者的建议,不要费心去使用聚合。相反,在适当的时候要使用组合。
组合
组合也称为组合聚合,这是一种很强的整体-部分聚合关系,并且在某些模型中具有效用。总是暗示“拥有-部分”的某系变体。使用实心菱形箭头表示组合。

组合关系有一下几层含义:1)在某一时刻,部分的实例只能属于一个组成实例。
2)部分必须总是属于组成;3)组成要负责创建和删除其部分,既可以自己创建/删除部分,可以与其他对象协作来创建/删除部分。总之剑在人在,剑毁人亡。


UML图中类之间的关系的更多相关文章
- UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现
UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现 类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 2) 在系统中, ...
- UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现(转)
UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现 类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 2) 在系统 ...
- 【转】UML图中类之间的关系
原文:http://blog.csdn.net/hguisu/article/details/7609483 类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相 ...
- UML 图中类之间的关系:依赖,泛化,关联,聚合,组合,实现
http://www.uml.org.cn/oobject/201211231.asp 1. 关联 一个类作为另外一个类的变量:在UML类图中,用实线连接有关联关系的对象所对应的类 2.聚合 表示整体 ...
- 关于UML方法学图中类之间的关系:依赖,泛化,关联
类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 2) 在系统中,每个类具有一定的职责,职责指的是类所担任的任务,即类要完成什 ...
- UML学习——类之间的关系
参考:UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现 空心菱形为聚合关系:部分与整体,部分可有可无.部分可以单独存在(车子和引擎,引擎可以单独存在) 实心菱形为组合关系:部分与整体,但是部 ...
- UML中类之间的关系
UML中类之间的关系分为以下几种:依赖.关联.泛化.聚合.组合. 依赖是指一个类使用了另一个类,它是一种使用关系,描述了一个事物的规格说明的变化可能会影响到使用它的另一个事物(反之不一定).最常见的依 ...
- uml图的五种关系 标签: uml 2016-12-18 21:47 221人阅读 评论(25) 收藏
统一建模语言 Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所 ...
- UML用例图之间的关系
在画用例图的时候,理清用例之间的关系是重点.用例的关系有泛化(generalization).扩展(extend)和包含(include).其中include和extend最易混淆.下面我们结合实例彻 ...
随机推荐
- UI设计--大象无形
UI设计,大象无形 UI设计,如同优雅的艺术品一样,优秀的UI设计也可以大象无形,大象无形的意思是有意化无意.大象化无形!就是不要显刻意,不要过分的主张,要兼容百态.无形态无框架才能容纳一切形体! ...
- LCD 常用的客观效果指标和测试方法
1.DPI--精密度: 评分标准 DPI 评分 DPI<200 50 200≤DPI<250 60 250≤DPI<300 70 300≤DPI<350 80 350≤DPI& ...
- Hibernate3 Criteria对象详解
1.序言 Hibernate框架是目前JavaEE软件开发的企业主流框架,学习Hibernate必然要掌握ORM(对象关系映射Object/Relation Mapping)的概念思想, Hibern ...
- Android学习之Animation(二)
接着上次的View Animation动画,这次是Frame Animation.具体点来讲就是在Frame层面上进行变化的动画效果的设置.说白了就是定时更换"背景"图.来实现不同 ...
- UNIX环境高级编程——epoll函数使用详解
epoll - I/O event notification facility 在linux的网络编程中,很长的时间都在使用select来做事件触发.在linux新的内核中,有了一种替换它的机制,就是 ...
- Cocos2D中图片加-hd后缀的说明
你可能注意到实际上游戏中的sprite都有2张图片,它都对应该精灵,并包含在资源包中(resource pack): player.png(27x40 pixels)和player-hd.png(do ...
- 【UI 设计】PhotoShop基础工具 -- 移动工具
还是学点美工的东西吧, 业余爱好 比学编程还难 PS版本 : PhotoShop CS6 1. 移动工具 (1) 工具栏和属性栏 工具栏 和 属性栏 : 左侧的是工具栏, 每选中一个工具, 在菜单 ...
- Chipmunk Rigid Bodies:cpBody
Chipmunk刚体支持3种不同的类型: Dynamic(动态),Static(静态)以及Kinematic(混合态)刚体.它们拥有不同的行为和性能特征. 动态刚体是默认的刚体类型.它们可以对碰撞做出 ...
- 【shell脚本练习】判断用户存在和用户类型
题目 写一个脚本 1. 传递一个参数给脚本,此参数为用户名: 2. 如果用户存在,则执行如下任务 * 如果用户的id号小于500,显示其为管理员或系统用户: * 否则,显示其为普通用户: 3. 如果用 ...
- UVa - 1616 - Caravan Robbers
二分找到最大长度,最后输出的时候转化成分数,比较有技巧性. AC代码: #include <iostream> #include <cstdio> #include <c ...