博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

针对UML的一次很肤浅的学习

Posted on 2011-05-13 14:49  菠萝  阅读(1840)  评论(12编辑  收藏  举报
/*
     工作有一段时间,在公司中也经常看到这样那样的UML文档。而我--一个半路出家的程序员,面对编程世界很多东西都感到是那么的神奇(因为陌生)。当然 UML也不例外....
     今天利用工作空余时间,学习一下UML到底是怎回事。 以为也曾看过一些UML的资料,但是你们的描述过于书面我没怎么理解,今天我是咬起牙来学习的(书到用时方恨少)。

    UML据说很强大,功能很丰富。但对于UML我现有的认识是:用图像来表达设计思路或程序设计结构。换一种说明:用图形来表达或者沟通自己的想法。
   说道UML就不得不提到泛化、继承、组合之类的,今天我的笔记也主要讲解这方面的东东。

    一、泛化 vs继承。正如网上若干资料中提到的一样,他们是从正反两个方向描述东东。所以在UML图形中,泛化和继承的表现形式是一样的。
          代码可以这样表示:
                      class A;//不要扔砖头砸我:这个类的定义写法是错误的
                      class  B:A;
        我们可以这样说:B继承了A  ;A是B的泛化。看图→
            

 


 

 

  二、依赖。一个类中的某些功能(方法)依赖于另一个类

          代码可以表示为:
              Class A;
               Class B
                     {
                       void Do()
                           {    //可能存在的B类处理代码
                                  B.Do();//调用B中的方法,来完成A类的功能
                                   //可能存在的B类处理代码

                            }
                     }

      从上面的代码很容易就能看出,B依赖于A。我的疑问:有没有这样的情况:A依赖于B,B依赖于A(我猜这种情况是成立的)
      看图→

 

    三、关联。 这个感觉容易和依赖混淆。先了解关联后,再来讲他们的却别:

           先用代码来表示:
                          class A;
                          class B
                              {
                                  A a1=new A1();
                                  a1.Do();//A类的方法,即 在B类中可以反问使用A的可访问元素
                                //或者,如下:
                                  privite A test_Property;//A作为B的一个属性
                              }

        区分依赖和关联:  依赖,一个类中的方法或功能必须依靠另一一个类的方法来完成,即一个类的变化会引起另一个类的变化
                                       关联, 一个类中,知道并可以使用另一个类的课访问元素,常见形式为一个类为属性的形式出现在另一类中

 
           其中,关联又分为单向关联和双向关联。双向就是相互知道彼此
    看图→
 
 

 

   四、聚合、组合。 首先要明了:聚合与组合是特殊的关联,不然等下你会疑惑怎么关联和聚合如此相似!
 
 然后再来看看聚合和组合聚合的例子→

基本聚合例子:公司和员工的关系,开 了一个新公司,但不一定要招员工,员 工可以单独存在.

组 合聚合例子:当人出生的时候,同 时人就有了心脏,心脏脱离了人就没有意义了.

 记忆口诀:(他们的区别主要在于一个是实心菱形,一个事空心菱形)。

                         聚在一起肯定有空隙,就像聚会时有空位一样,所有事空心 (有聚就有散,所以到头来都是一场‘空’)

                        为了将空白填满才组合在一起 ,所以组合是实心。

                   简单点:有聚有散,终为空;先组后和,才结‘实’

   看图(这张图是网上下载的,陈程《大话设计模式》中的图) →