UML中类之间的关系
UML中类之间的关系分为以下几种:依赖、关联、泛化、聚合、组合。
依赖是指一个类使用了另一个类,它是一种使用关系,描述了一个事物的规格说明的变化可能会影响到使用它的另一个事物(反之不一定)。最常见的依赖关系是一个类内部中使用到了另一个类的定义。在UML中表示为一条指向被依赖事物的虚线。
依赖可以采取多种方式来实现,如以下代码
internal class DependReturnType
{
}
internal class DependParameter
{
}
internal class DependVarible
{
}
class Depend
{
public DependReturnType Test(DependParameter param)
{
DependVarible var = new DependVarible();
return new DependReturnType();
}
}
Depend类依赖于DependReturnType类、DependParameter类和DependVarible类,这就表明依赖的关系可以通过返回值、方法参数或者内部定义变量的形式来实现。
当类之间在概念上有连接关系时,类之间的连接称之为关联,关联是一种结构关系,说明一个事物的对象与另一个事物的对象相联系。给定一个连接两各类的关联,可以从一个类的对象导航到另一个类的对象。 一般把关联画为连接相同或者不同的类一条实线。关联可以有方向,即导航。一般不作说明的时候,导航是双向的,不需要在线上标出箭头。大部分情况下导航是单向的,可以加一个箭头表示。
关联一般采取全局变量的方式来实现,如以下代码
internal class Employee
{
public void DoWork()
{
}
}
class Association
{
private Employee myEmployee;
public Employee MyEmployee
{
get
{
return myEmployee;
}
set
{
myEmployee = value;
}
}
public void DoSomething()
{
myEmployee.DoWork();
}
}
Association类关联Employee类。
依赖和关联都是一个类中使用了另一个类,那它们有什么区别呢?
依赖和关联都是两个或多个相对独立的类之间的关系。当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系;当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。依赖关系表现在局部变量,方法的参数,以及对静态方法的调用;关联关系是使用实例变量来实现。
泛化就是面向对象中的继承。它表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系。一般化的关系是从子类指向父类的,与继承或实现的方法相反。
代码如下
internal class Father
{
}
internal class Child : Father
{
}
class Generalization
{
public void Test()
{
Father father = new Child();
}
}
当对象A被加入到对象B中,成为对象B的组成部分时,对象B和对象A之间为聚合关系。聚合是关联关系的一种,是较强的关联关系,强调的是整体与部分之间的关系。
与关联关系一样,聚合关系也是通过实例变量来实现这样关系的。关联关系和聚合关系来语法上是没办法区分的,从语义上才能更好的区分两者的区别。
聚合用带一个空心菱形(整体的一端)的实线表示。
聚合与关联的区别:关联关系所涉及的两个对象是处在同一个层次上的。比如人和自行车就是一种关联关系,而不是聚合关系,因为人不是由自行车组成的。
组合是一种特殊的聚合关系,它是一种强类型的聚合,组合中的部分不能脱离整体而独立存在。例如Windows的窗口和窗口上的菜单就是组合关系。组合中的整体和部分的生命周期一致,即部分必须在组合创建的同时或者之后创建,在组合销毁之前或者同时销毁,部分的生命周期不会超出组合的生命周期。
组合是用带实心菱形(整体的一端)的实线来表示。
组合与聚合的区别:
- 生命周期的实现上,组成需要负责其部分的创建和销毁,聚合不需要
- 组合中的一个对象在同一时刻只能属于一个组成对象,而聚合的一个部分对象可以被多个整体对象聚合,例如一个学生可以在多个学校就读,而一个菜单在同一时刻只能是某个窗口内的对象。
UML中类之间的关系的更多相关文章
- UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现
UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现 类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 2) 在系统中, ...
- UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现(转)
UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现 类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 2) 在系统 ...
- UML中类之间的几种关系
类之间可能存在以下几种关系:关联(association).依赖(dependency).聚合(Aggregation,也有的称聚集).组合(Composition).泛化(generalizatio ...
- 浅谈UML中类之间的五种关系及其在代码中的表现形式
本文转载:http://www.cnblogs.com/DebugLZQ/archive/2013/05/13/3066715.html 什么是类? 将某类东西归纳在一起,可以成为一个类. 类有很多种 ...
- [UML] UML中类之间的几种关系
类之间可能存在以下几种关系:关联(association).依赖(dependency).聚合(Aggregation,也有的称聚集).组合(Composition).泛化(generalizatio ...
- 【转】UML图中类之间的关系
原文:http://blog.csdn.net/hguisu/article/details/7609483 类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相 ...
- 关于UML方法学图中类之间的关系:依赖,泛化,关联
类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 2) 在系统中,每个类具有一定的职责,职责指的是类所担任的任务,即类要完成什 ...
- UML 图中类之间的关系:依赖,泛化,关联,聚合,组合,实现
http://www.uml.org.cn/oobject/201211231.asp 1. 关联 一个类作为另外一个类的变量:在UML类图中,用实线连接有关联关系的对象所对应的类 2.聚合 表示整体 ...
- UML类之间的关系
原文:http://www.cnblogs.com/me115/p/4092632.html 下面详细介绍这六种关系: 类之间的关系 泛化关系(generalization) 类的继承结构表现在UML ...
随机推荐
- base64加解密字符串
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOExceptio ...
- How to force immediate stop of threads in Jmeter servers如何在jmeter执行完,立即停止jmeter
https://stackoverflow.com/questions/38900315/how-to-force-immediate-stop-of-threads-in-jmeter-server ...
- python比较大小
1.python的比较总是检查复合对象的所有部分,直到可以得出结果为止. 2.会自动遍历嵌套的所有数据结构,有多深走多深,首次发现的差值将决定比较的结果 3.== :操作符测试值的相等性 4.is : ...
- 旧瓶新酒之ngx_lua & fail2ban实现主动诱捕
服务器承担着业务运行及数据存储的重要作用,因此极易成为攻击者的首要目标.如何对业务服务器的安全进行防护,及时找出针对系统的攻击,并阻断攻击,最大程度地降低主机系统安全的风险程度,是企业安全从业人员面临 ...
- Sockets Tutorial
Sockets Tutorial This is a simple tutorial on using sockets for interprocess communication. The clie ...
- HDU 5402 Travelling Salesman Problem (构造)(好题)
大致题意:n*m的非负数矩阵,从(1,1) 仅仅能向四面走,一直走到(n,m)为终点.路径的权就是数的和.输出一条权值最大的路径方案 思路:因为这是非负数,要是有负数就是神题了,要是n,m中有一个是奇 ...
- bootstrap模态框出现或者消失的回调函数
当某一模态框出现的时候就触发函数: $(".modal").on('show.bs.modal',function(){ if(vueObj){...}else{//如果vue对象 ...
- 系统的BIOS与系统安装
今天偶尔看到个介绍电脑BIOS的与各种本子安装系统的介绍:(记录一下) 网络地址:http://blog.sina.com.cn/s/blog_4a1faae60102dyek.html
- MySQL中文參考手冊
非常好的中文手冊: 链接:http://www.sdau.edu.cn/support/mysq_doc/manual_toc.html
- ionic/cordova 真机调试
android下简单,连接手机后,直接: myProjectPath>ionic run android ios下比较麻烦点,要先装ios-deploy: sudo npm install - ...