倔强的土豆

这只是一个备份!源地址:http://blog.csdn.net/stubbornpotatoes
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

UML中的五种关系(依赖-关联-聚合-组合)

Posted on 2010-11-24 18:04  倔强的土豆  阅读(1740)  评论(1编辑  收藏  举报
一.MVC
        所谓MVC,翻译成中文无非是Model,View,Controller,也就是我们常说的用户界面层UI层(User Interface) 、业务逻辑层BLL( Business   Logic   Layer)、是数据访问层DAL(Data   Access   Layer),至于这样分的好处我就不必说了。

二.UML图
        1.用例图中的三种关系:包含(include)基本用例执行时,一定要执行包含用例;
                                                    扩展(Extend)基本用例执行时,扩展用例可执行也可以不执行;
                                                    泛化(Generalize)一个用例可以被特别列举为一个或多个子用力,这被称为用力泛化。
        2.类图的三个主要作用:对系统词汇进行建模,表示方式就是对单个类建模。
                                              对简单的协作进行建模,就是分析讨论各个类之间的关系。
                                              对逻辑数据库进行建模。
类和对象的关系:类是对象,对象是类。二者从不同的角度来识别,类是广义上的说法,对象是狭义的说法,比如中国人是个类,但对美国来说可以是个对象。
        3.状态图状态可以分为以下几个元素:名字(name)、入口/出口动作、内部装换、延迟事件,子状态(顺序子状态、并发子状态)。
三.UML图中的五种关系
        1.依赖  User a
        例如:动物依赖水
代码(water类省略):Public class Animal {

                           Public void Grownup() {                    

                                  Water water = null;

                            }

                    }

备注:Water类是 Animal类的某个方法中的变量,Animal类可以调用它。

注意:1  Water类的生命期,它是当Animal类的GrounUp方法被调用的时候,才被实例化

      2 持有Water类的是Animal的一个方法而不是Animal,这点是最重要的

                                       

                                        或者 

                   Public Animal {

                               Public Water Grownup(Water water) {

                               return null;

                          }

                  }

备注:Water类是作为Animal类中某个方法的参数或者返回值

注意: Water类被Animal类的一个方法持有。生命期随着方法的执行结束而结束

(也就是指源类方法持有了目标类)

      2.关联 Has a

       例如:water关联climate

       代码(climate类省略):Public class Water {

                                                                       public Climate m_Climate;

                                                                      public Water(){}

                                                       }

备注:Water类和Climate类单向关联,则Water类称为源类,Climate类称为目标类。源类了解目标类的所有的属性和方法,但目标类 并不了解源类的信息。(也就是指源类持有了目标类的成员变量)

双向关联则各自持有。


3.聚合和组合

例如:雁群和大雁(聚合) 大雁和翅膀(组合)

代码:Public class GooseGroup {

                                            public Goose goose;

                                            Public GooseGroup(Goose goose) {

                                             this.goose = goose;

                              }

                     }


            Public class Goose {

                            public Wings wings;

                            public Goose() {

                            wings = new Wings();

                         }

                  }


        备注:◎构造函数不同

                   聚合类的构造函数中包含了另一个类 作为参数

                    雁群类(GooseGroup)的构 造函数中要用到大雁(Goose)作为参数传递进来。大雁类(Goose)可以脱离雁群类而独立存在。

                  组合类的构造函数中包含了另一个类 的实例化。

                   表明大雁类在实例化之前,一定要先实 例化翅膀类(Wings),这两个类紧密的耦合在一起,同生共灭。翅膀类(Wings)是不可以脱离大雁类(Goose)而独立存在

 

        ◎信息的封装性不同

        在聚合关系中,客户端可以同时了解雁群类和大雁类,因为他们都是独立的

        在组合关系中,客户端只认识大雁类,根本就不知道翅膀类的存在,因为翅膀 类被严密的封装在大雁类中。


4.泛化 Is a

 例如:狗类继承动物类

 代码:略

  备注:泛化也称继承,子类将继承父类的所有属性和方法,访问权限根据访问修饰符确定。

四. .net
        1..net是微软的编程平台。它包括各种开发语言,以及在开发应用程序中所用的类,库和功能!
        2..net framework: 是由微软开发,一个致力于敏捷软体开发(Agile software development)、快速应用开发(Rapid application development)、平台无关性和网路透明化的软体开发平台。
.NET Framework 具有两个主要组件:公共语言运行时和 .NET Framework 类库。 
        3.BCL(Base Class Libraries )代表了.net框架的核心。不管人们开发何种应用程序,BCL总是作为构建其他所有功能的起点。
        4.CLR(Common Language Runtime) 和java虚拟机一样也是运行时环境,它负责资源管理(内存分配和垃圾收集),并保证应用和底层操作系统之间必要的分离。
五.访问权限修饰符
看图说话: