UML类图
2018-01-12 本文已影响6人
倾倒的吞天壶
笔记
定义
public class Person {
private String name = zhangsan;
private int age = 23;
public String getName() {
// TODO: implement
return name;
}
public int getAge() {
// TODO: implement
return age;
}
/** @param name
public void setName(String name) {
// TODO: implement
this.name=name;
}
/** @param age
public void setAge(int age) {
// TODO: implement
this.age=age;
}
}
image.png
- 类名
顾名思义就是类的名字,对应于Java类中的类名,如果该类是抽象类的话,在类名右下角会有一个(Abstract)表示. - 属性名
可见性 名称:类型 [ = 默认值 ]
在Java类中可见性分为三类, 分别是private,public 和protected,在类图中分别用符号-、+和#表示. - 方法
可见性 名称(参数列表) [ : 返回类型]
类之间的关系
- 继承
- 实现
- 依赖
可以简单的理解, 就是一个类A使用到了另一个类B, 而这种使用关系是具有偶然性的, 临时性的, 非常弱的, 但是B类的变化会影响到A, 在代码层面, 为类B作为参数被类A在某个method方法中使用.
- 关联
他体现的是两个类, 或者类与接口之间语义级别的一种强依赖关系, 比如我和我的朋友; 这种关系比依赖更强, 不存在依赖关系的偶然性, 关系也不是临时性的, 一般是长期性的, 而且双方的关系一般是平等的, 关联可以是单向, 双向的; 表现在代码层面, 为被关联类B以类属性的形式出现在关联类A中, 也可能是关联类A引用了一个类型为被关联类B的全局变量.
- 聚合
聚合是关联关系的一种特例, 他体现的是整体与部分, 拥有的关系, 即has-a的关系, 此时整体与部分之间是可分离的, 他们可以具有各自的生命周期, 部分可以属于多个整体对象, 也可以为多个整体对象共享; 比如计算机与CPU, 公司与员工的关系等; 表现在代码层面, 和关联关系是一致的, 只能从语义级别来区分;
- 组合
组合也是关联关系的一种特例, 他体现的是一种contains-a的关系, 这种关系比聚合更强, 也称为强聚合; 他同样体现整体与部分间的关系, 但此时整体与部分是不可分的, 整体的生命周期结束也就意味着部分的生命周期结束; 比如你和你的大脑; 表现在代码层面, 和关联关系是一致的, 只能从语义级别来区分.
对于继承, 实现这两种关系没多少疑问, 他们体现的是一种类与类, 或者类与接口间的纵向关系; 其他的四者关系则体现的是类与类, 或者类与接口间的引用, 横向关系, 是比较难区分的, 有很多事物间的关系要想准备定位是很难的, 前面也提到, 这几种关系都是语义级别的, 所以从代码层面并不能完全区分各种关;
但总的来说, 后几种关系所表现的强弱程度依次为: 组合>聚合>关联>依赖.
参考文件
http://blog.csdn.net/xiehuimx/article/details/53427452
https://www.cnblogs.com/olvo/archive/2012/05/03/2481014.html