您的位置:首页 > 其它

UML中几种关系理解

2012-08-20 12:15 267 查看
UML中的关系有依赖、关联(聚合,组合)、泛化(也叫继承)、实现。
一、依赖

依赖关系图Animal--->Water意思就是Use a 用到使用的意思,两个类的代码中不体现.

public class Animal

{ public Animal() { } }

public class Water() 

{ public Water() }

但是在代码中不体现,怎么反映他们之间的依赖关系呢? 

具体的有三种 

1、water是公共的类,animal可以调用 

2、water是animal的一个方法中的变量

 public class Animal

{ public Animal() { }

  public void GroupUp()

  { Water water1=null;}

}

3、water是animal函数的参数返回值

public class Animal

{ public Animal() { }

  public Water GroupUp(Water water)

  { return null;}

}

在设计模式中依赖的具体举例 

  1: //策略模式的现金收费工厂类依赖正常收费子类收费子类

  2: 

  3:     //收费抽象类

  4:     abstract class CashSuper

  5:     {

  6:         public abstract double acceptCash(double money);

  7: 

  8:     }

  9:     //正常收费子类

 10:     class NormalSuper : CashSuper

 11:     {

 12:         public override double acceptCash(double money)

 13:         {

 14:             return money;

 15:         }

 16:     }

 17:     //现金收费工厂类

 18:     class CashFactory

 19:     {

 20:         public static CashSuper createCashAccept(string type)

 21:         {

 22:             CashSuper cs = null;

 23:             if (type =="正常收费")

 24:                 cs=new NormalSuper() ;

 25:             return cs;

 26:         }

 27:     }
二、关联

        关联体现的是两个类、或者类与接口之间语义级别的一种强依赖关系。对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。表示类与类之间的联接,有双向关联和单向关联,双向关联有两个箭头或者没有箭头,单向关联有一个箭头,表示关联的方向。

在程序中相当于把已经实例化的对象A做为另一对象B方法的参数传递引用。

Water—>Climate

相对于依赖关系,关联关系在代码中有所体现.上图中的关联关系在代码中体现为

public class Climate

{ public Climate(){} }

public class Water

{ public Water() { }

  public Climate m_Climate;

}

关联又分为组合和聚合;聚合和组合都是整体与部分的关系;组合是强聚合关系;描述部分与整体的生命周期是一致的即同生同死。例如关闭了窗口,窗口内的按钮也没了。
聚合

聚合即分散的聚集到一起。体现的是整体与部分、拥有的关系,即has-a的关系。它是关联关系的一种,是强的关联关系。聚合是整体和个体的关系。聚合关系也是通过实例变量实现的。例如汽车、发动机、轮胎,一个汽车对象由一个发动机对象四个轮胎对象组成。
组合

组合是一种很强烈的关联,必须在被组合对象生成的时候,组合对象也就必须生成了。组合为几个独立部分组成的整体。体现的是一种contains-a的关系。

public class a{

   Collection bs = null;

   public a(){

      bs  = new Collection();

      bs.add(new b());

   }

}

public class b{

}

        聚合就像将不同的水果放到一个玻璃果盘里,玻璃果盘摔坏,并不影响水果。组合就像是人由手、脚、头等组成一体,人活着手脚就活着,人死掉了,手脚也就跟着。
几种关系所表现的强弱程度依次为:组合>聚合>关联>依赖
三、泛化(继承)

        指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系。表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的

实现关系。一般化的关系是从子类指向父类的,与继承或实现的方法相反。

表现为 父类 父类实例=new 子类();

4.举例

class Animal{};

class Tigger : public Animal{};

class Dog : public Animal{};

Animal pAnimal = new Dog();
四、实现
指的是一个class类实现interface接口(可以是多个)的功能;实现是类与接口之间最常见的关系。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息