UML类图规则

UML类之间的关系

    UML类图中的关系分为四种:泛化、依赖、关联、实现,其中关联关系又可以细化为聚合和组合。

1. 泛化(Generalization)

      泛化是父类和子类之间的关系,子类继承父类的所有结构和行为。在子类中可以增加新的结构和行为,也可以覆写父类的行为。

2. 依赖(Generalization)

      依赖关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的事物,反之不成立。在你想显示一个事物使用另一个事物时使用。

    通常情况下,依赖关系体现在某个类的方法使用另一个类作为参数 。

下面的例子中class A 依赖与class B、C、D。

java 代码
  1.    public class A{  
  2.      public B getB(C c, D d){  
  3.         E e = new E();  
  4.        B b = new B(c, d, e);  
  5.     }  
  6.    }


3. 关联(Dependency)

      关联是一种结构化的关系,指一种对象和另一种对象有联系。给定有关联的两个类,可以从一个类的对象得到另一个类的对象。关联有两元关系和多元关系。两元关系是指一种一对一的关系,多元关系是一对多或多对一的关系。一般用实线连接有关联的同一个类或不同的两个类。当你想要表示结构化关系时使用关联。

       关联关系是通过类的成员变量 来实现的。



3.1 聚合(Aggregation)

      聚合是一种特殊的关联。它描述了“has a”关系,表示整体对象拥有部分对象。

      关联关系和聚合关系来语法上是没办法区分的,从语义 上才能更好的区分两者的区别。聚合是较强的关联关系,强调的是整体与部分 之间的关系。

      与关联关系一样,聚合关系也是通过类的成员变量 来实现的。


图 12: 一个聚合关联的例子

3.2 组合(Composition)

      组合是聚合的一种形式,它具有更强的拥有关系,强调整体与部分的生命周期 是一致的。整体负责部分的生命周期的管理。如果整体被销毁,部分也必须跟着一起被销毁,如果所有者被复制,部分也必须一起被复制。

      与关联关系一样,组合关系也是通过类的成员变量 来实现的。

图 13: 一个组合关系的例子

4. 实现(Realization)

      实现关系指定两个实体之间的一个合约。换言之,一个实体定义一个 合约 ,而另一个实体保证履行该 合约 。

图 10:Professor类和Student类实现Person接口的类图实例

关联和依赖的区别:

1、从类之间关系的强弱程度来分,关联表示类之间的很强的关系;依赖表示类之间的较弱的关系;

2、从类之间关系的时间角度来分,关联表示类之间的“持久”关系,这种关系一般表示一种重要的业务之间的关系,需要保存的,或者说需要“持久化”的,或者说需要保存到数据库中的。

       比如学生管理系统中的Student类和Class(班级)类,一个Student对象属于哪个Class是一个重要的业务关系,如果这种关系不保存,系统就无法管理。另外,依赖表示类之间的是一种“临时、短暂”关系,这种关系是不需要保存的,比如Student类和StuEditScreen(学生登录界面)类之间就是一种依赖关系,StuEditScreen类依赖Student类,依赖Student对象的信息来显示编辑学生信息。

3、设计类之间的关系是遵循的原则:首先判断类之间是否是一种“关联”关系,若不是再判断是否是“依赖关系”,一般情况下若不是关联,就是依赖关系

4、依赖一般情况下是以下几种情况之一

a、ClassA中某个方法的参数类型是ClassB;这种情况成为耦合;

b、ClassA中某个方法的参数类型是ClassB的一个属性;这种情况成为紧耦合;

c、ClassA中某个方法的实现实例化ClassB;

d、ClassA中某个方法的返回值的类型是ClassB;

如果出现了上述四种情况之一,两个类很有可能就是“依赖”关系。

5、依赖关系(Dependency):是类与类之间的连接,依赖总是单向的。依赖关系代表一个类依赖于另一个类的定义。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值