UML之关系

来源:互联网 发布:java正则替换 编辑:程序博客网 时间:2024/05/16 11:29

         UML的关系之前一直都不是整理地很清楚,直到把C#视频看完,又细细地研读了一番,将其和生活结合起来才梳理好其关系。我把UMl的图定义为六大类。如图:


         哺乳动物和马——继承

         其实提到继承这个字眼,前面我们已经不能熟地再熟了。今天就再将其摆一遍,我相信就是一个0基础的人也会明白的。

         暂且不说抽象、封装和多态的事,咱们置入话题。哺乳动物,我们都知道它是一个有生命的胎生的动物。马也是哺乳动物,因为它也是一个有生命的胎生的动物。动物有的东西它都有。但是它有自己独特特征。简单来说,马具有哺乳动物所具有的一切特征并且还有自己独特的特征,这就是我们所说的继承。

         知道了这些再去转换为我们的专业术语:继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。那么在这,马就是我们所说的子类,哺乳动物就是我们所说的父类。

          在UML关系中,继承这样来表示,图是最生动的表达:

    

         当然,我们所说的泛化关联,它其实也是一种继承。表示方法是一样的。

         机房收费系统中的例子:管理员继承于操作员,操作员又继承于一般用户。

          洗衣服-实现和依赖

          每家每户都有一台洗衣机,我们用洗衣机,只要转动按钮就可以了,换一种说法就是我们依赖于这个按钮。洗衣机洗衣服,我们不用搞懂它是利用什么原理把它洗干净的,只需要按下按钮就行了。换一种说法,就是洗衣机实现了按钮的转动才能洗。那么在这儿,依赖和实现就全出来了。

          转换为我们的专业术语:实现指的是一个class类实现interface接口(可以是多个)的功能。洗衣机按钮就是我们所说的接口,洗衣机即类。在UMl关系中为:


            依赖就是一个类A使用到了另一类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A。这不就是我们所说的人要用洗衣机,洗衣服的时候才会转动按钮,不洗的时候就不用动它吗!在UML关系中为:


            机房收费系统中的例子:实现:一般用户查询、修改密码

                                                    依赖:管理员要想让某个学生实现上下机,则管理员依赖于上下机的操作。

           我和朋友——关联

           每个人身边都多多少少有些朋友,那你和他们之间就是关联。

           用术语解释:关联体现的是两个类、或者类与接口语义级别的一种强依赖关系,就像上面说的,你和你的朋友有关联,这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时的,朋友不可能今天是明天就不是了,所以这种关系一般是长期性的,而且双方的关系一般是平等的、关联不但可以是单向的,也可以是双向的。再比如说公司雇佣员工,那员工也属于公司。这种关系表现表现在代码层面,也就是你怎么写这样的代码,就是被关联B以类属性的形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量。在UML关系中为:


          在机房收费系统中的例子:管理员和学生

          主机的构成——聚合

          刚带12期地学习了拆装机,那么我们知道机箱里有电源、主板、cpu、内存、硬盘、声卡、显卡、网卡、光驱、软驱等构成。那么这就是我们所说的聚合。

          用专业术语怎么说呢?聚合是关联关系的一种特例,他体现的是整体与部分、拥有的关系,此时整体与部分之间是可分离的,硬盘、主板当然都可以从机箱中拆出来。他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享表现。表现在代码层面,和关联关系是一致的,只能从语义级别来区分。在UML关系中表现为:


           机房收费系统中的例子:给机房收费系统中加一些小工具

           鸟和翅膀-组合

           鸟之所以能自由自由地飞翔就是因为它有一双翅膀,如果把翅膀给它去了,那没人管它,它就失去了生存的能力。翅膀是它的一部分,总不能像cpu一样从主板上拆下来吧。这就是我们所说的组合。

           转换为专业术语:组合也是关联关系的一种特例,它和聚合一样,体现的特使整体与部分的关系,但是这种关系更强,也称为强聚合;整体与部分不可分,整体的生命周期结束也就意味着部分的生命周期结束。表现在代码层面,同上。在UML关系中图为:


           机房收费系统中的例子:机房收费系统和各个功能窗体、数据库和各个表

           总结

           继承和实现这两种关系较为简单,容易区分,但是后四种关系都是语义级别的,从代码层面很难区分出来。但他们之间所表现的强弱程度依次为:组合>聚合>关联>依赖。 

           “三十而衰”在计算机行业中程序员到三十左右发展空间就到头了,没有很深的计算机基础功底,再加上三十往后身体机能和精力下降,发展遇到了瓶颈期,再难突破。所以学习计算机,基础必须打好,才会有上升空间。一口吃不成胖子,一步一个脚印地学习,当然,锻炼拥有一个强健的体魄也是必不可少的。


              

            



          

           

0 0