UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现

来源:互联网 发布:淘宝卖家人工电话 编辑:程序博客网 时间:2024/05/24 06:30

一、依赖关系(Dependence):假设A类的变化引起了B类的变化,则说名B类依赖于A类。

  依赖关系(Dependency) 是一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系。大多数情况下,依       赖关系体现在某个类的方法使用另一个类的对象作为参数。 ?   在UML中,依赖关系用带箭头的虚线表示,由依赖的一方指向被依赖的一方。 
public class Driver{    public void drive(Car car)    {        car.move();    }    ……}public class Car{    public void move()    {        ......    }    ……}

依赖关系有如下三种情况:

1A类是B类中的(某中方法的)局部变量;

2A类是B类方法当中的一个参数;

3A类向B类发送消息,从而影响B类发生变化;


二、泛化关系(Generalization):ABC的父类,B,C具有公共类(父类)A,说明AB,C的一般化(概括,也称泛化)

 泛化关系(Generalization)也就是继承关系,也称为“is-a-kind-of”关系,泛化关系用于描述父类与子类之间的关系,父类又称作基类或超类,子类又称作派生类。在UML中,泛      化关系用带空心三角形的直线来表示。 ?  在代码实现时,使用面向对象的继承机制来实现泛化关系,如在Java语言中使用extends关键字、在C++/C#中使用冒号“:”来实现。  


public class Person {    protected String name;    protected int age;    public void move()     {        ……    }    public void say()    {        ……    }}public class Student extends Person {    private String studentNo;    public void study()     {        ……    }}

UML当中,对泛化关系有三个要求:

1、子类与父类应该完全一致,父类所具有的属性、操作,子类应该都有;

2、子类中除了与父类一致的信息以外,还包括额外的信息;

3、可以使用父类的实例的地方,也可以使用子类的实例;


三、关联关系(Association:类之间的联系,如客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单,再如篮球队员与球队之间的关联(下图所示)。


其中,关联两边的"employee"“employer”标示了两者之间的关系,而数字表示两者的关系的限制,是关联两者之间的多重性。通常有“*”(表示所有,不限),“1”(表示有且仅有一个),“0...”(表示0个或者多个),“01”(表示0个或者一个),“n...m”(表示nm个都可以),“m...*”(表示至少m个)。

?  关联关系(Association) 是类与类之间最常用的一种关系,它是一种结构化关系,用于表示一类对象与另一类对象之间有联系 ?  UML类图中,用实线连接有关联的对象所对应的类,在使用JavaC#C++等编程语言实现关联关系时,通常将一个类的对象作为另一个类的属性 ?  在使用类图表示关联关系时可以在关联线上标注角色名 
1)  双向关联: 默认情况下,关联是双向的。 

public class Customer{    private Product[] products;    ……}public class Product{    private Customer customer;    ……}

2 ) 单向关联:类的关联关系也可以是单向的,单向关联用带箭头的实线表示. 
public class Customer{    private Address address;    ……}public class Address{    ……}
  3) 自关联: 在系统中可能会存在一些类的属性对象类型为该类本身,这种特殊的关联关系称为自关联。
public class Node{    private Node subNode;    ……} 
 
4) 重数性关联: 重数性关联关系又称为多重性关联关系(Multiplicity),表示一个类的对象与另一个类的对象连接的个数。在UML中多重性关系可以直接在关联直线上增加一个数字表示与之对应的另一个类的对象的个数。

表示方式

多重性说明

1..1

表示另一个类的一个对象只与一个该类对象有关系

0..*

表示另一个类的一个对象与零个或多个该类对象有关系

1..*

表示另一个类的一个对象与一个或多个该类对象有关系

0..1

表示另一个类的一个对象没有或只与一个该类对象有关系

m..n

表示另一个类的一个对象与最少m、最多n个该类对象有关系 (m<=n)



public class Form{    private Button buttons[];    ……} public class Button{    …}



四、聚合关系(Aggregation:表示的是整体和部分的关系,整体与部分 可以分开.

 聚合关系(Aggregation) 表示一个整体与部分的关系。通常在定义一个整体类后,再去分析这个整体类的组成结构,从而找出一些成员类,该整体类和成员类之间就形成了聚合   关系。 在聚合关系中,成员类是整体类的一部分,即成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。UML中,聚合关系用带空心菱形的直线表示。  

public class Car{    private Engine engine;    public Car(Engine engine)   {        this.engine = engine;    }        public void setEngine(Engine engine)    {        this.engine = engine;    }    ……}public class Engine{    ……}

如:电话机包括一个话筒

       电脑包括键盘、显示器,一台电脑可以和多个键盘、多个显示器搭配,确定键盘和显示器是可以和主机分开的,主机可以选择其他的键盘、显示器组成电脑;



五、组合关系(Composition:也是整体与部分的关系,但是整体与部分不可以分开.

  组合关系(Composition)也表示类之间整体和部分的关系,但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在,部分对象与整体对象之    间具有同生共死的关系。 ?  在组合关系中,成员类是整体类的一部分,而且整体类可以控制成员类的生命周期,即成员类的存在依赖于整体类。UML中,组合关系用带实心菱形的直线表示。 

public class Head{    private Mouth mouth;    public Head()    {mouth = new Mouth();    }    ……}public class Mouth{    ……}

如:公司和部门,部门是部分,公司是整体,公司A的财务部不可能和公司B的财务部对换,就是说,公司A不能和自己的财务部分开; 人与人的心脏.



六、实现关系(Implementation):是用来规定接口和实线接口的类或者构建结构的关系,接口是操作的集合,而这些操作就用于规定类或者构建的一种服务。

 接口之间也可以有与类之间关系类似的继承关系和依赖关系,但是接口和类之间还存在一种实现关系(Realization),在这种关系中,类实现了接口,类中的操作实现了接口中所     声明的操作。UML中,类与接口之间的实现关系用带空心三角形的虚线来表示。 

public interface Vehicle {    public void move();}public class Ship implements Vehicle{    public void move()     {    ……    }}public class Car implements Vehicle{    public void move()     {    ……    }}



来自:http://www.linuxso.com/architecture/32371.html
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 荣耀4c一直亮屏怎么办 华为手机返回键失灵怎么办 荣耀6p死机了怎么办 荣耀6主板烧坏了怎么办 虚拟运营商倒闭了号怎么办 买到二次放号怎么办 新运动鞋鞋穿着有点紧怎么办 一件代发被买家退货后怎么办? 洗了翻毛的鞋子怎么办 猫眼竹芋泡根了怎么办 双线花叶子卷了怎么办 华为云收藏满了怎么办 小米6云空间满了怎么办 华为云存储已满怎么办 苹果云备份空间不足怎么办 oppor9指纹与密码忘记怎么办 oppo显示密码格式不对怎么办 oppo云服务密码忘了怎么办 小米云内存满了怎么办 id储存空间满了怎么办 苹果手机邮箱服务器连接失败怎么办 苹果查看id闪退怎么办 域名卖出去后涉及赌博怎么办 发票认证后对方作废了怎么办 手机在屋里没信号怎么办 百度云上传文件和谐怎么办 收货地址写错了怎么办 阿里巴巴国际版出现加密令牌怎么办 淘宝寄货到转运仓拒收怎么办 淘宝已发货买家申请退货怎么办 买家给了一个差评不接电话怎么办 卖家单号填错了怎么办 拼多多虚假发货买家怎么办 买家退款后又收到货怎么办 买家确认收货已超时怎么办 淘宝买家不确认收货怎么办 买家快递单号填错怎么办 买家不确认收货不评价怎么办 淘宝不给改地址怎么办 淘宝快递发货后申请退款怎么办 摄影公司收钱后跑了怎么办