惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
小众软件
小众软件
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
酷 壳 – CoolShell
酷 壳 – CoolShell
Apple Machine Learning Research
Apple Machine Learning Research
月光博客
月光博客
人人都是产品经理
人人都是产品经理
大猫的无限游戏
大猫的无限游戏
V
V2EX
阮一峰的网络日志
阮一峰的网络日志
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - Franky
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
Hugging Face - Blog
Hugging Face - Blog
Jina AI
Jina AI
博客园 - 聂微东
S
SegmentFault 最新的问题
量子位
宝玉的分享
宝玉的分享
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园_首页

博客园 - Demon521

博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 流浪歌手弹唱震撼心灵(很震撼心灵!) 爱,永远禁不起等待 好男人找不到女朋友的根源 男女交往必知15个真理 上海地铁车费没有必要大于6元 CLR探索系列:Windbg+SOS剖析揭示域世界 (转) CLR探索系列:Windbg+SOS动态调试分析托管代码 (转) Windbg寻找Managed Founction参数值 (转) WinDbg+SOS:Web服务器High CPU Hang(100%)实例分析 (转) 使用WinDbg+SOS及WinDbg Script寻找内存中DataTable第M行N列的值 (转) Windbg在Managed App中设置函数断点的几种方法 (转) 线程之间的通讯---SynchronizationContext (转) 世界顶级精英们的人生哲学! 各类搜索网站 快速找到并输入连接数据源的字符串 最最常用的DOS Command 最常用的Windows快捷键
UML中依赖/泛化/关联/实现/聚合/组合的C#实现 [转]
Demon521 · 2009-01-12 · via 博客园 - Demon521

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