UML图形 X 类之间的关系 X 实现代码

聚合:“雁群”是对“大雁”的聚合[1]。

  1. class DaYan
  2. {
  3.     //......
  4. };
  5. class YanQun
  6. {
  7.     vector<DaYan> v_DaYan;
  8. public:
  9.     void fly()
  10.     {
  11.         for_each(v_DaYan.begin(),v_DaYan.end(),fly);
  12.     }
  13. };

在《大话设计模式》里面,有一个UML类图图示样例,包括了UML基本图示法,结合这幅图理解类之间的关系,在实现代码的时候,也会有参考的价值:

动物类

它依赖于氧气类、水类,所以用一个虚线实心箭头指向这两个类(----->)。

因为动物类的方法:新陈代谢(in o2,in water),是以两个类对象为参数的。我们可以将“依赖关系”理解为“A使用B作为函数参数的关系”;同样,如果在编码的时候,我们需要将B类作为A类的函数参数,那么,A对B就是依赖关系![2]

翅膀类

翅膀肯定是属于鸟的一部分;

鸟类

它继承自动物类,所以用一个实线空心箭头指向动物类;

鸟和翅膀是“合成(组合)关系”:用一个实心菱形,加上一条实线,再加上一个实心箭头,从鸟类指向翅膀类(我倒没见到组合关系的代码例子呢);

大雁类

继承自鸟类;

大雁实现接口“飞行”:用一条虚线加一个空心箭头,指向飞行接口;

雁群类

它和大雁类是聚合关系,用一个空心菱形,加上一条实线,再加上一个实心箭头,指向大雁类。本类提供“v形飞行”方法。在代码编写中,大雁类的对象,往往作为雁群类的成员[3];

企鹅类
继承自鸟类;

气候类

显然,企鹅下蛋是需要合适的气候的;企鹅类于气候类是关联关系:用一条实线加一个实心箭头,指向气候类;

 

[1]关于聚合关系以及for_each的使用方法举例:

http://www.cppblog.com/huyi/archive/2006/12/22/16736.html 

[2] 我习惯于用后一种方式思考问题,然后再画出UML图形。

[3] 对象体现聚合。

[4] 参考资料:http://www.dezai.cn/article_show.asp?ArticleID=23624 UML中类之间的关系及其Java代码例子。

 

你可能感兴趣的:(java,设计模式,each,UML,图形)