Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
wushizhenking
CS-Notes
提交
65858392
C
CS-Notes
项目概览
wushizhenking
/
CS-Notes
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
CS-Notes
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
65858392
编写于
3月 31, 2018
作者:
C
CyC2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
auto commit
上级
32c3a1b4
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
28 addition
and
124 deletion
+28
-124
notes/设计模式.md
notes/设计模式.md
+1
-1
notes/面向对象思想.md
notes/面向对象思想.md
+27
-123
pics/0acc722a-de55-4539-82ab-446238c8a242.png
pics/0acc722a-de55-4539-82ab-446238c8a242.png
+0
-0
pics/0e34263d-7287-4ffe-a716-37c53d1a2526.png
pics/0e34263d-7287-4ffe-a716-37c53d1a2526.png
+0
-0
pics/2017511e-22f0-4d74-873d-1261b71cf5a4.png
pics/2017511e-22f0-4d74-873d-1261b71cf5a4.png
+0
-0
pics/27cd6f0c-f581-45da-b8c9-fed026830560.png
pics/27cd6f0c-f581-45da-b8c9-fed026830560.png
+0
-0
pics/aa42f9c6-ad7a-48f4-8e8b-f3b6de3feaec.png
pics/aa42f9c6-ad7a-48f4-8e8b-f3b6de3feaec.png
+0
-0
pics/b418ca51-f005-4510-b7ad-f092eb6aeb24.png
pics/b418ca51-f005-4510-b7ad-f092eb6aeb24.png
+0
-0
pics/c7d4956c-9988-4a10-a704-28fdae7f3d28.png
pics/c7d4956c-9988-4a10-a704-28fdae7f3d28.png
+0
-0
未找到文件。
notes/设计模式.md
浏览文件 @
65858392
...
...
@@ -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>
抽象工厂模式创建的是对象家族,也就是很多对象而不是一个对象,并且这些对象是相关的,也就是说必须一起创建出来。而工厂模式只是用于创建一个对象,这和抽象工厂模式有很大不同。
...
...
notes/面向对象思想.md
浏览文件 @
65858392
...
...
@@ -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//2
9badd92-109f-4f29-abb9-9857f5973928
.png"
/>
</div><br>
<div
align=
"center"
>
<img
src=
"../pics//2
7cd6f0c-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>
# 参考资料
...
...
pics/0acc722a-de55-4539-82ab-446238c8a242.png
0 → 100644
浏览文件 @
65858392
60.0 KB
pics/0e34263d-7287-4ffe-a716-37c53d1a2526.png
0 → 100644
浏览文件 @
65858392
7.0 KB
pics/2017511e-22f0-4d74-873d-1261b71cf5a4.png
0 → 100644
浏览文件 @
65858392
5.0 KB
pics/27cd6f0c-f581-45da-b8c9-fed026830560.png
0 → 100644
浏览文件 @
65858392
8.0 KB
pics/aa42f9c6-ad7a-48f4-8e8b-f3b6de3feaec.png
0 → 100644
浏览文件 @
65858392
9.0 KB
pics/b418ca51-f005-4510-b7ad-f092eb6aeb24.png
0 → 100644
浏览文件 @
65858392
7.0 KB
pics/c7d4956c-9988-4a10-a704-28fdae7f3d28.png
0 → 100644
浏览文件 @
65858392
11.0 KB
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录