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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

还是先来一张图

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

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

uml系列(四)——类图的更多相关文章

  1. UML简单介绍—类图详解

    类图详解 阅读本文前请先阅读:UML简单介绍—类图这么看就懂了 1.泛化关系 一个动物类: /** * 动物类 */ public class Animal { public String name; ...

  2. GOF 的23种JAVA常用设计模式总结 02 UML中的类图与类图之间的关系

    统一建模语言UML 统一建模语言(Unified Modeling Language,UML)是用来设计软件蓝图的可视化建模语言,1997 年被国际对象管理组织(OMG)采纳为面向对象的建模语言的国际 ...

  3. 3.UML中的类图及类图之间的关系

    统一建模语言简介 统一建模语言(Unified Modeling Language,UML)是用来设计软件蓝图的可视化建模语言,1997 年被国际对象管理组织(OMG)采纳为面向对象的建模语言的国际标 ...

  4. UML中的类图及类图之间的关系

    统一建模语言简介 统一建模语言(Unified Modeling Language,UML)是用来设计软件蓝图的可视化建模语言,1997 年被国际对象管理组织(OMG)采纳为面向对象的建模语言的国际标 ...

  5. UML基础系列:类图

    类图描述系统中类的静态结构,它不仅定义系统中的类,描述类之间的联系,如关联.依赖.聚合等,还包括类的内部结构(类的属性和操作).类图描述的是静态关系,在系统的整个生命周期中都是有效的.对象图是类图的实 ...

  6. vs2013\2015UML系列之-类图

    1.UML简介Unified Modeling Language (UML)又称统一建模语言或标准建模语言. 简单说就是以图形方式表现模型,根据不同模型进行分类,在UML 2.0中有13种图,以下是他 ...

  7. UML精粹3 - 类图,序列图,CRC

    类图Class diagram 类图描述系统中的对象类型,以及它们之间的各种静态关系.类图也展示类的性质和操作,以及应用于对象连接方式的约束.UML中的特性feature,涵盖了性质property和 ...

  8. 软件工程 #02# Entity Relationship Diagram VS. 用 UML 中的类图表示 E-R 图

    不同的老师叫我们画 E-R 图居然是不一样的,于是我仔细研究了一番.. 通常所说的 E-R 图(外文全称 Entity Relationship Diagram,简称 ERD)长这个样子: 而有时候它 ...

  9. UML静态视图——类图、对象图、包图

    绘画类的最重要的图是抽象类.让我们回顾一下类的基本内容. 一.分类 1.类的概念: 面向对象编程的类是一个基本概念.类是具有相同特性的.办法.集合语义和一组对象的关系. 2.类分类: 实体类:保存要放 ...

  10. UML简单介绍—类图这么看就懂了

    如何看懂类图 1.类图简介 描述类的内部结构和类与类之间的关系,是一种静态结构图. 在UML类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Realization),关 ...

随机推荐

  1. C++ Primer 学习笔记_43_STL实践与分析(17)--再谈迭代器【中】

    STL实践与分析 --再谈迭代器[中] 二.iostream迭代[续] 3.ostream_iterator对象和ostream_iterator对象的使用 能够使用ostream_iterator对 ...

  2. Linux内核分析(七)----并发与竞态

    原文:Linux内核分析(七)----并发与竞态 Linux内核分析(七) 这两天家里的事好多,我们今天继续接着上一次的内容学习,上次我们完善了字符设备控制方法,并深入分析了系统调用的实质,今天我们主 ...

  3. JAVA深入研究——Method的Invoke方法(转)

    在写代码的时候,发现Method可以调用子类的对象,但子类即使是改写了的Method,方法名一样,去调用父类的对象也会报错,虽然这是很符合多态的现象,也符合java的动态绑定规范,但还是想弄懂java ...

  4. Javascript中的深拷贝和浅拷贝

    var obj = { a:1, arr: [1,2] }; var obj1 = obj; //浅复制 var obj2 = deepCopy(obj); //深复制 javascript中创建对象 ...

  5. 设计模式 - 迭代模式(iterator pattern) Java 迭代器(Iterator) 详细解释

    迭代模式(iterator pattern) Java 迭代器(Iterator) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy 參考迭代器模式(ite ...

  6. windows平台下载android源代码

    最近观看<android核心分析>,所以很多细节都没有详细看代码很难理解.请记住,印象不深.感觉是最好再一起去的源代码,返回下载android源代码,遇到了许多问题,最后开始下载.合并流程 ...

  7. JavaScript中的分号插入机制

    原文:JavaScript中的分号插入机制 仅在}之前.一个或多个换行之后和程序输入的结尾被插入 也就是说你只能在一行.一个代码块和一段程序结束的地方省略分号. 也就是说你可以写如下代码 functi ...

  8. unity与ios交替

    unity和ios的相互作用是更简单的.直接出口xcodeproject,这个大家都知道如何操作,如果需要二次开发ios码成unity,事实上,整合非常easy找到出口xcodeproject内iPh ...

  9. SRM 587 Div II L3:ThreeColorabilityEasyy

    题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=12699 这道题目是第一次在比赛的时候做出来的,开始还想用bru ...

  10. lucene两个分页操作

    基于lucene两个分页: lucene3.5查询方式(每次查询所有记录,然后取当中部分记录.这样的方式用的最多),lucene官方的解释:因为我们的速度足够快. 处理海量数据时.内存easy内存溢出 ...