auto commit

This commit is contained in:
CyC2018 2018-03-31 09:49:58 +08:00
parent 32c3a1b4da
commit 65858392ce
9 changed files with 28 additions and 124 deletions

View File

@ -266,7 +266,7 @@ public class ConcreteFactory2 extends Factory {
## 类图
<div align="center"> <img src="../pics//4885d0bc-1441-460f-bd75-a2088aa7f2d4.png"/> </div><br>
<div align="center"> <img src="../pics//0acc722a-de55-4539-82ab-446238c8a242.png"/> </div><br>
抽象工厂模式创建的是对象家族,也就是很多对象而不是一个对象,并且这些对象是相关的,也就是说必须一起创建出来。而工厂模式只是用于创建一个对象,这和抽象工厂模式有很大不同。

View File

@ -6,9 +6,13 @@
* [封装](#封装)
* [继承](#继承)
* [多态](#多态)
* [三、UML](#三uml)
* [类图](#类图)
* [时序图](#时序图)
* [三、类图](#三类图)
* [泛化关系 (Generalization)](#泛化关系-generalization)
* [实现关系 (Realization)](#实现关系-realization)
* [聚合关系 (Aggregation)](#聚合关系-aggregation)
* [组合关系 (Composition)](#组合关系-composition)
* [关联关系 (Association)](#关联关系-association)
* [依赖关系 (Dependency)](#依赖关系-dependency)
* [参考资料](#参考资料)
<!-- GFM-TOC -->
@ -196,147 +200,47 @@ public class Music {
}
```
# 三、UML
# 三、类图
## 类图
## 泛化关系 (Generalization)
### 1. 继承相关
用来描述继承关系,在 Java 中使用 extends 关键字。
继承有两种形式 : 泛化Generalize和实现Realize表现为 IS-A 关系。
<div align="center"> <img src="../pics//b418ca51-f005-4510-b7ad-f092eb6aeb24.png"/> </div><br>
#### 泛化关系 (Generalize)
## 实现关系 (Realization)
从具体类中继承
用来实现一个接口,在 Java 中使用 implement 关键字
<div align="center"> <img src="../pics//29badd92-109f-4f29-abb9-9857f5973928.png"/> </div><br>
<div align="center"> <img src="../pics//27cd6f0c-f581-45da-b8c9-fed026830560.png"/> </div><br>
#### 实现关系 (Realize)
## 聚合关系 (Aggregation)
从抽象类或者接口中继承
表示整体由部分组成,但是整体和部分不是强依赖的,整体不存在了部分还是会存在
<div align="center"> <img src="../pics//4b16e1d3-3a60-472c-9756-2f31b1c48abe.png"/> </div><br>
<div align="center"> <img src="../pics//aa42f9c6-ad7a-48f4-8e8b-f3b6de3feaec.png"/> </div><br>
### 2. 整体和部分
#### 聚合关系 (Aggregation)
表示整体由部分组成,但是整体和部分不是强依赖的,整体不存在了部分还是会存在。以下表示 B 由 A 组成:
<div align="center"> <img src="../pics//34259bb8-ca3a-4872-8771-9e946782d9c3.png"/> </div><br>
#### 组合关系 (Composition)
## 组合关系 (Composition)
和聚合不同,组合中整体和部分是强依赖的,整体不存在了部分也不存在了。比如公司和部门,公司没了部门就不存在了。但是公司和员工就属于聚合关系了,因为公司没了员工还在。
<div align="center"> <img src="../pics//7dda050d-ac35-4f47-9f51-18f18ed6fa9a.png"/> </div><br>
<div align="center"> <img src="../pics//0e34263d-7287-4ffe-a716-37c53d1a2526.png"/> </div><br>
### 3. 相互联系
#### 关联关系 (Association)
## 关联关系 (Association)
表示不同类对象之间有关联,这是一种静态关系,与运行过程的状态无关,在最开始就可以确定。因此也可以用 1 对 1、多对 1、多对多这种关联关系来表示。比如学生和学校就是一种关联关系一个学校可以有很多学生但是一个学生只属于一个学校因此这是一种多对一的关系在运行开始之前就可以确定。
<div align="center"> <img src="../pics//4ccd294c-d6b2-421b-839e-d88336ff5fb7.png"/> </div><br>
<div align="center"> <img src="../pics//2017511e-22f0-4d74-873d-1261b71cf5a4.png"/> </div><br>
#### 依赖关系 (Dependency)
## 依赖关系 (Dependency)
和关联关系不同的是,依赖关系是在运行过程中起作用的。依赖通常作为类的构造器或者方法的参数传入。双向依赖是一种不好的设计。
和关联关系不同的是,依赖关系是在运行过程中起作用的。A 类和 B 类是依赖关系主要有三种形式:
<div align="center"> <img src="../pics//47ca2614-509f-476e-98fc-50ec9f9d43c0.png"/> </div><br>
1. A 类是 B 类中的(某中方法的)局部变量;
2. A 类是 B 类方法当中的一个参数;
3. A 类向 B 类发送消息,从而影响 B 类发生变化;
## 时序图
### 1. 定义
时序图描述了对象之间传递消息的时间顺序,它用来表示用例的行为顺序。它的主要作用是通过对象间的交互来描述用例(注意是对象),从而寻找类的操作。
### 2. 赤壁之战时序图
从虚线从上往下表示时间的推进。
<div align="center"> <img src="../pics//80c5aff8-fc46-4810-aeaa-215b5c60a003.png"/> </div><br>
可见,通过时序图可以知道每个类具有以下操作:
```java
publc class 刘备 {
public void 应战 ();
}
publc class 孔明 {
public void 拟定策略 ();
public void 联合孙权 ();
private void 借东风火攻 ();
}
public class 关羽 {
public void 防守荊州 ();
}
public class 张飞 {
public void 防守荆州前线 ();
}
public class 孙权 {
public void 领兵相助 ();
}
```
### 3. 活动图、时序图之间的关系
活动图示从用户的角度来描述用例;
时序图是从计算机的角度(对象间的交互)描述用例。
### 4. 类图与时序图的关系
类图描述系统的静态结构,时序图描述系统的动态行为。
### 5. 时序图的组成
#### 对象
有三种表现形式
<div align="center"> <img src="../pics//25b8adad-2ef6-4f30-9012-c306b4e49897.png"/> </div><br>
在画图时,应该遵循以下原则:
1. 把交互频繁的对象尽可能地靠拢。
2. 把初始化整个交互活动的对象(有时是一个参与者)放置在最左边。
#### 生命线
生命线从对象的创建开始到对象销毁时终止
<div align="center"> <img src="../pics//b7b0eac6-e7ea-4fb6-8bfb-95fec6f235e2.png"/> </div><br>
#### 消息
对象之间的交互式通过发送消息来实现的。
消息有 4 种类型:
1\. 简单消息,不区分同步异步。
<div align="center"> <img src="../pics//a13b62da-0fa8-4224-a615-4cadacc08871.png"/> </div><br>
2\. 同步消息,发送消息之后需要暂停活动来等待回应。
<div align="center"> <img src="../pics//33821037-dc40-4266-901c-e5b38e618426.png"/> </div><br>
3\. 异步消息,发送消息之后不需要等待。
<div align="center"> <img src="../pics//dec6c6cc-1b5f-44ed-b8fd-464fcf849dac.png"/> </div><br>
4\. 返回消息,可选。
#### 激活
生命线上的方框表示激活状态,其它时间处于休眠状态。
<div align="center"> <img src="../pics//6ab5de9b-1c1e-4118-b2c3-fb6c7ed7de6f.png"/> </div><br>
<div align="center"> <img src="../pics//c7d4956c-9988-4a10-a704-28fdae7f3d28.png"/> </div><br>
# 参考资料

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB