UML类图主要由类和关系组成.
类就使用一个方框来表示, 把方框分成几层, 来表示不同的信息,如下图所示:
当然, 类图也不一定每一次都长这样, 比如你只分析各个类之间的关系时, 甚至可以只给出类名; 如果是一个接口的话, 可以不给出属性, 只留下类名和方法.
下面来说一下这几个部分分别怎么写
类名没什么好说的, 就是起个名, 写上, 完活
属性的格式为:
访问权限 属性名 : 类型=默认值
如:
+name:String // 公有的name属性, 字符串类型 -age:int=0 // 私有的age属性, int类型, 初始值为0
方法的定义和属性差不多, 不过加上了参数, 格式为:
访问权限 方法名(参数列表): 返回值
其中参数列表的定义为 "类型 名字", 多个之间用逗号隔开, 其它和属性一样, 不再赘述, 举例:
+getName(String name):void
终于到重头戏了, 类之间的关系表示, 通常来说, 两个类之间主要有以下几种关系:
基本上继承和实现都没什么异议, 主要就是再后面四个, 很多时候分不清, 这四种的强弱关系为: 组合>聚合>关联>依赖
下面来看一下再UML中如何表示这几种关系:
如图, 张三和王五都继承自人类
如图, 张三和王五都实现了接口人类
依赖是一种很弱的关系, 通常是类A在运行期间用到类B, 通常在程序中是用过构造函数, 方法参数将类B传给类A的, 表示如下:
如图, 程序员在工作时需要电脑
关联区别于依赖, 是关联关系是不变的, 比如张三和张三家, 是一成不变的内容, 表示如下:
如图, 张三关联了他的家, 这种是单向关联, 也有时是双向关联, 则两头都没有箭头
聚合是一种特殊的关联, 反映的是整体与局部的关系, 区别于关联, 聚合没有双向聚合(因为是整体与局部嘛), 与组合不同, 聚合关系中的部分可以独立存在, 表示如下:
如图, 蚂蚁离开了蚂蚁窝, 还是蚂蚁
组合也是一种特殊的关联, 反映的是整体与局部的关系, 区别与聚合, 组合关系中的部分不能脱离全体独立存在,比如张三和张三的头, 表示如下:
以上就是UML中最最基础的各部分, 以后再看UML图就不至于一脸懵逼了..