uml系列(四)——类图

         类图是uml的核心。学习类图,总共须要掌握三个部分:类;类之间的关系;类图怎么画。

首先,类。老规矩,先来张图。

                           uml系列(四)——类图

         是什么:举个简单的样例:猫、狗、猪三个都是动物。这里面的“动物”就是类,表示的是动物类。

         在类图的表示中,类都包含一些什么呢?类图中的类都有下面部件:

                    1.名称,这是类的标识符,在同一个包内,类是不能重名的。

                     2.属性,比方说人类的属性就有:姓名、身高、年龄等等属性。在这里,有的属性可能不希望被每一个人都知道,比方说年龄。所以又将属性的可见性分公有、私有、受保护和包内公有类型。分别用“+”、“-”、“#”和“~”表示。

                     3.方法,属性描写叙述的是各种数据,而方法则是这些数据的处理方法。简单的说,属性是都有什么,而方法就是能够干什么。

                     4.职责和约束,这两个部件是可有可无的,主要是为了说明类是干什么的,用来消除二义性。     

         在类里面有个特殊的类,我们称之为抽象类,这样的类跟别的类不一样的地方是它不能实体化。比方说,猫类能够实体化出来猫,狗类能够实体化出来狗,可是动物类却不能实体化。那么就称动物类是抽象类。它的作用就是泛化出来子类,这点我们在类的关联里面再说。

          类之间的关系:还是老规矩,先来张图。

                         uml系列(四)——类图           

       关系有四种:关联、泛化、实现、依赖。

       关联,关联就是说类之间相互有关系,泛化、实现和依赖关系都能够写成关联的形式。这里我们重点说下关联里的一些特例。

                     1.关联类:在两个类之间具有多对多的关系式,有些属性就不easy确定放在哪,这时就要对他们之间的关联来建模,这就是关联类。比方:一个人能够增加多个社团,而一个社团又能够拥有多个人,这时,这个人在社团中的职务就须要专门弄一个角色的类来存储这个关联。那么角色类就是关联类。

                     2.聚合和组成:聚合和组成意思类似。简单的说,电脑的 各个部件组装成电脑,没有电脑,零件一样能够存在,这就是聚合。一张表格有非常多格子,没有了表格,格子也不能存在,我们就说是格子组成了表格。

                     3.或关联与反身关联:普通情况下,一个人,能够是男人,也能够是女人,可是不能既是男人又是女人,这就是或关联;自己与自己关联就是反身关联。

        泛化,子类继承父类就是泛化,如动物有这种属性:大小、颜色、重量。那么动物的子类比方说猫类在继承动物类的时候,就不用再去写这些属性了,直接从父类继承就能够了。这种类之间的继承就是泛化。

        泛化分为单重和多重,单重比較easy理解,比方猫类继承动物类。多重的意思就是一个子类有两个父类,比方说:一个水陆两栖车的类,它的父类就是汽车和轮船两种。这会造成二义性——汽车有个属性是:陆地行驶,而轮船有个属性是水中行驶。这就导致子类的属性不明白,须要又一次写这个属性。

        接下来就是实现关系在了解实现关系之前首先须要了解一个概念:接口。简单的说,人类有个能力是说话,可是,我们把这个功能写在别的类里面。通过一个类似于抽象类的东西去连接它们,就称之为接口。通过接口去实现某项功能就是实现关系。

        最后是依赖关系,依赖关系在之前的文章里已经说过,简而言之就是一个类在使用的时候,必须使用别的类的某些功能,这就是依赖关系。

         对类图有了个大概的了解后,那么类图怎么画呢?   

         还是先来一张图

                    uml系列(四)——类图

       类图的绘制首先须要发现都有哪些类,在找的时候有个技巧,看你的软件中都有哪些名词,这些名词都是类。然后看哪些是须要的类,选择后再看哪些类都有什么关系,然后给各个类限定关系。类图就能够開始画了。

        类图就先介绍到这里,下一个是对象图,欢迎观看。

                                                                                                                                                                                       

你可能感兴趣的:(UML)