Demon521

Troubleshooting. Good luck to me 2009! 人生中没有Ctrl+Z!
  博客园  :: 首页  :: 联系 :: 订阅 订阅  :: 管理

UML中依赖/泛化/关联/实现/聚合/组合的C#实现 [转]

Posted on 2009-01-12 14:25  Demon521  阅读(977)  评论(0编辑  收藏  举报

 

UML中依赖/泛化/关联/实现/聚合/组合的C#实现 [转]

    这几天要写点文档用到UML的类图,重新再次捡起以前的知识,多多少少有点总结,在这里记录下来,也算是以备后用吧。

    在这里推荐大家可以尝试着用用以下我推荐的二种UML工具:

  • Visual.UML.Developer.Edition.v5.1(感觉不错,功能强大,不过收费)
  • StarUML(开源免费,05年之后就没有再维护更新过,韩国人开发,符合亚洲人的习惯)

 

    在UML类图中,类与类之间的关系主要有以下几种:

  • 泛化(Generalization)

     所谓的泛化就是我们最常用的继承关系

image

   1:      public class Employee
   2:      {
   3:          
   4:      }
   5:      public class SaleEmployee:Employee
   6:      {
   7:          
   8:      }

  • 依赖(Dependency)

依赖关系是指一个类对别一个类的依赖,比如说Employee类中有一个方法叫做TakeMoney(Bank bank)这个方法,在这个方法的参数中用到了Bank这个类,那么这个时候可以说Employee类依赖了Bank这个类,如果Bank这个类发生了变化那么会对Employee这个类造成影响。

   1:      public class Employee
   2:      {
   3:          public long TakeMoney(Bank bank)
   4:          {
   5:              return long.MaxValue;
   6:          }
   7:      }

Snap2

 

  • 关联(Association)

      关联关系有点边界模糊和依赖有点像,但又完全不像。关联是指一个类用到了另外的一个类,但不依赖。还是用代码来表达比较贴切

   1:      public class Shcool
   2:      {
   3:          public Student stu;
   4:      }
   5:      public class Student
   6:      {
   7:          
   8:      }

Snap3

 

  • 聚合(aggregation)

        聚合是一种单向关系,聚合与关联的区别在于聚合的两个类之间的关系在概念层次上不是一个级别的,一般来说聚合中的类关系总是一个类比别一个类要高级一些,而关联基本上是平级的

   1:      public class Car
   2:      {
   3:          public Engine engine;
   4:          public Wheel wheel;
   5:      }
   6:      public class Engine
   7:      {
   8:          
   9:      }
  10:      public class Wheel
  11:      {
  12:          
  13:      }

 

Snap4

  • 合成(Composition)

合成是一种特殊的聚合形式,它是提类与类之间的联系是非常密切的,少了那一个也不行。

Snap5

  • 实现(Realization)

简单的说就是接口

Snap6