博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UML中的依赖,组合关系等+C#
阅读量:4577 次
发布时间:2019-06-08

本文共 1801 字,大约阅读时间需要 6 分钟。

 

具体的东西被抽象,然后加以概括,归类,我个人认为这是思维的一个升华,就像给一个东西下定义一样,如何才能用自己的话讲这个东西说明清楚,当然要有全面的认识,所以抽象不是没有根据的,而是建立在自己的认识之上。

面向对象开发的时候都会接触到依赖,关联等,不仅仅是面向对象开发,就在其他开发的时候也会遇到,比如在使用ArcGIS Engine开发的时候,那些OMD图,这些关系,其实自己已经很熟悉了,光给别人培训就讲解了好几次。

人的大脑对图片可能有一种天生的存在意识,比如看一篇很长的文字描述的时候,我们可能不知所云,但是如果用图的形式将这个内容勾勒出来,却容易被吸收,当然这个图也不是凭空想象,还是建立在自己的认识之上,是对文字的另外一种表达。相同的意思,有不同的表达方式,正式如此。

 

我喜欢模拟,当时在培训的时候,模拟了QI,模拟了接口回调等,但是对于UML中的几种关系,却迟迟未动,看来自己真懒,趁这个时间,我将别人写的“偷”过来,作为警示吧。内容见下面的博客。

 

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

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

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

 

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

  • 泛化(Generalization)

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

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:      }

 

  • 关联(Association)

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

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

 

  • 聚合(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:      }

 

  • 合成(Composition)

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

    • 实现(Realization)    
  •     

简单的说就是接口

 最后,推荐一个博客:

转载于:https://www.cnblogs.com/zuiyirenjian/archive/2013/04/26/3044878.html

你可能感兴趣的文章
Oracle数据泵详解
查看>>
(中等) HDU 4725 The Shortest Path in Nya Graph,Dijkstra+加点。
查看>>
sort-归并排序
查看>>
django 快速实现完整登录系统(cookie)
查看>>
.NET中的out和ref关键字
查看>>
Python之ftp服务器
查看>>
KMP预处理
查看>>
oracle的wm_concat函数实现行转列
查看>>
C语 三子棋小游戏
查看>>
[BZOJ 1861] 书架
查看>>
Unity NGUI 批量点击跳转场景
查看>>
送给毕业生的一个学习建议
查看>>
基于redis+lua实现高并发场景下的秒杀限流解决方案
查看>>
Oracle 块修改跟踪 (Block Change Tracking) 说明
查看>>
阿里云 Redis 服务遇到的问题
查看>>
Jwt Token 安全策略使用 ECDSA 椭圆曲线加密算法签名/验证
查看>>
Window2008通过web.config进行限制ip访问
查看>>
浅析门户网站体育赛事CDN加速解决方案
查看>>
启动/关闭xp_cmdshell
查看>>
[PY3]——内置数据结构(8)——解构与封装
查看>>