提交 65858392 编写于 作者: C CyC2018

auto commit

上级 32c3a1b4
......@@ -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>
抽象工厂模式创建的是对象家族,也就是很多对象而不是一个对象,并且这些对象是相关的,也就是说必须一起创建出来。而工厂模式只是用于创建一个对象,这和抽象工厂模式有很大不同。
......
......@@ -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>
#### 依赖关系 (Dependency)
和关联关系不同的是,依赖关系是在运行过程中起作用的。依赖通常作为类的构造器或者方法的参数传入。双向依赖是一种不好的设计。
<div align="center"> <img src="../pics//47ca2614-509f-476e-98fc-50ec9f9d43c0.png"/> </div><br>
## 时序图
### 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>
<div align="center"> <img src="../pics//2017511e-22f0-4d74-873d-1261b71cf5a4.png"/> </div><br>
4\. 返回消息,可选。
## 依赖关系 (Dependency)
#### 激活
和关联关系不同的是,依赖关系是在运行过程中起作用的。A 类和 B 类是依赖关系主要有三种形式:
生命线上的方框表示激活状态,其它时间处于休眠状态。
1. A 类是 B 类中的(某中方法的)局部变量;
2. A 类是 B 类方法当中的一个参数;
3. A 类向 B 类发送消息,从而影响 B 类发生变化;
<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>
# 参考资料
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册