zoukankan      html  css  js  c++  java
  • uml系列(四)——类图

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

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

                               

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

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

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

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

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

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

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

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

                                        

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

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

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

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

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

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

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

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

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

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

             还是先来一张图

                        

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

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

                                                                                                                                                                                           

  • 相关阅读:
    1. Dubbo原理解析-Dubbo内核实现之SPI简单介绍 (转)
    经典算法问题的java实现 (二)
    经典算法问题的java实现 (一)
    Bitmap的秘密
    Java Networking: UDP DatagramSocket (翻译)
    Java字节码浅析(二)
    Sql server 浅谈用户定义表类型
    Jquery 动态生成表单 并将表单数据 批量通过Ajax插入到数据库
    ASP.NET获取上传图片的大小
    ASP.Net大文件上传组件详解
  • 原文地址:https://www.cnblogs.com/zhangyuhang3/p/6900964.html
Copyright © 2011-2022 走看看