1
00:00:01,400 --> 00:00:02,790
今天,我们来看
2
00:00:04,440 --> 00:00:06,190
分析模式的第2章
3
00:00:06,960 --> 00:00:09,820
一个图上面的一些小问题
4
00:00:13,130 --> 00:00:15,320
第2章的图2.4
5
00:00:16,500 --> 00:00:22,190
带有层级关系的一个组织超类型
6
00:00:24,980 --> 00:00:28,730
我把要讲的点标了号在这里
7
00:00:28,860 --> 00:00:33,840
1234,我们来看第一个
8
00:00:34,360 --> 00:00:38,240
第一个就是说组织的名称问题
9
00:00:38,490 --> 00:00:39,970
我们来看,它这里说
10
00:00:41,270 --> 00:00:45,450
一个Aroma咖啡机分成这个这个
11
00:00:46,920 --> 00:00:48,510
我们来看这几个
12
00:00:50,070 --> 00:00:51,140
Operating unit
13
00:00:52,340 --> 00:00:54,820
这是经营单位的意思
14
00:00:55,190 --> 00:00:58,500
就是说,它具有独立的
15
00:00:58,510 --> 00:01:00,770
会计核算能力的一个组织
1
00:00:00,880 --> 00:00:02,740
下一个,division
2
00:00:04,140 --> 00:00:05,380
这个的话和
3
00:00:05,670 --> 00:00:06,820
department不是
4
00:00:06,830 --> 00:00:08,220
一个东西
5
00:00:08,790 --> 00:00:10,870
division说的是分部或者事业部
6
00:00:10,880 --> 00:00:12,850
它是一个很大的单位
1
00:00:00,770 --> 00:00:04,600
Division一般是分离出去的
2
00:00:04,610 --> 00:00:06,410
它有独立的管理权
3
00:00:06,980 --> 00:00:10,020
而这个department,它是部门
4
00:00:10,030 --> 00:00:13,870
一个机构内部按照功能来分
5
00:00:13,880 --> 00:00:15,790
但是它们往往是一起合作的
6
00:00:17,140 --> 00:00:17,930
这个要小得多
7
00:00:20,450 --> 00:00:22,200
我们来看之前的翻译
8
00:00:22,210 --> 00:00:25,830
你看,2004中译本,这里翻译叫部门
9
00:00:25,960 --> 00:00:27,540
这个就不太对了
10
00:00:28,210 --> 00:00:32,480
像这个分公司,区域,还好
11
00:00:33,280 --> 00:00:34,390
也能说得过去
12
00:00:35,340 --> 00:00:39,580
2020中译本,这个就更合理一点
13
00:00:40,150 --> 00:00:42,690
分部或者事业部
14
00:00:43,790 --> 00:00:47,100
2024年,我们也叫分部了
15
00:00:51,540 --> 00:00:53,170
下一个名称就是这个
16
00:00:54,010 --> 00:00:55,370
Parent这个问题
17
00:00:56,720 --> 00:00:59,750
Parent这个我们平时翻译
18
00:00:59,760 --> 00:01:00,670
叫母公司
19
00:01:00,960 --> 00:01:02,110
不叫父公司
20
00:01:02,430 --> 00:01:05,010
我们说,母公司、子公司
21
00:01:06,510 --> 00:01:08,830
所以这里应该写母,不是写父
22
00:01:11,280 --> 00:01:13,900
我们来看,2004年,父节点
23
00:01:15,220 --> 00:01:17,650
节点这个是原文没有的
24
00:01:17,860 --> 00:01:19,950
原文只写了一个parent在那里
25
00:01:21,160 --> 00:01:24,330
母就可以了
26
00:01:28,130 --> 00:01:30,150
2020中译本,父节点
27
00:01:30,440 --> 00:01:34,000
我们这里,我们写母就可以了
28
00:01:34,170 --> 00:01:36,390
母、子这样
29
00:01:36,400 --> 00:01:38,350
到底你是公司还是集团
30
00:01:38,480 --> 00:01:41,130
还是事业部,这个再说了
31
00:01:41,140 --> 00:01:45,660
这是第二点
1
00:00:01,380 --> 00:00:03,850
这是第一点,名称的问题
2
00:00:04,020 --> 00:00:04,970
我们看第二点
3
00:00:06,580 --> 00:00:09,290
母组织跟子组织的多重性
4
00:00:09,300 --> 00:00:11,210
在原书里面颠倒了
5
00:00:12,990 --> 00:00:17,610
原书里面这个多重性意味着是零到多
6
00:00:18,940 --> 00:00:20,300
这个是0到1
7
00:00:21,520 --> 00:00:24,320
原书这样画的话
8
00:00:24,330 --> 00:00:25,000
意味着什么
9
00:00:25,780 --> 00:00:31,710
一个子公司对应多个母公司,这不对
10
00:00:31,720 --> 00:00:32,390
颠倒了
11
00:00:32,980 --> 00:00:35,730
应该是一个母公司下面有多个子公司
12
00:00:36,120 --> 00:00:37,880
一个子公司只有一个母公司
13
00:00:40,020 --> 00:00:40,860
颠倒过来了
14
00:00:42,810 --> 00:00:47,590
2004中译本没有改过来
15
00:00:48,100 --> 00:00:50,440
原书是错的,中译本也是错的
16
00:00:53,780 --> 00:00:56,910
2020中译本,也没改过来
17
00:00:59,790 --> 00:01:00,990
我们2024中译本
18
00:01:01,000 --> 00:01:05,580
我们这样来画,母是0..1
19
00:01:05,590 --> 00:01:07,370
子是0..*,这样来
1
00:00:00,380 --> 00:00:04,830
第三点就是关联上面它有一个约束
2
00:00:05,540 --> 00:00:06,580
hierarchy
3
00:00:07,100 --> 00:00:09,430
意思就是层级结构的意思
4
00:00:12,970 --> 00:00:16,490
在递归关联这里,有一个约束
5
00:00:16,980 --> 00:00:20,770
它用中括号来把它标出来
6
00:00:22,760 --> 00:00:26,240
2004中译本就照搬了
7
00:00:27,250 --> 00:00:28,280
这个照搬
8
00:00:28,290 --> 00:00:32,770
但是这个本身它可以翻译的
9
00:00:32,780 --> 00:00:34,730
因为它本身又不是一个
10
00:00:36,320 --> 00:00:37,590
某个语言里面的
11
00:00:37,600 --> 00:00:38,830
一个关键字什么的
12
00:00:38,840 --> 00:00:41,580
就是Fowler自己定义的
13
00:00:42,120 --> 00:00:44,990
可以翻译的,直接翻译中文,层级
1
00:00:00,810 --> 00:00:02,560
我们2024中译本
2
00:00:03,300 --> 00:00:07,040
这里翻译过来,层级
3
00:00:08,470 --> 00:00:09,300
这个写在哪里
4
00:00:09,510 --> 00:00:12,260
写在关联的属性框里面
5
00:00:13,140 --> 00:00:14,980
你双击关联,出来属性框
6
00:00:14,990 --> 00:00:16,530
然后写在哪里
7
00:00:16,540 --> 00:00:19,010
写在关联的约束里面
8
00:00:19,790 --> 00:00:21,630
约束就写层级就行了
9
00:00:21,640 --> 00:00:24,820
这个花括号是工具自己加进去的
10
00:00:24,910 --> 00:00:27,610
不需要你写花括号的
11
00:00:28,950 --> 00:00:30,930
这不是中括号了,改成花括号了
12
00:00:31,640 --> 00:00:35,990
因为在UML里面约束用花符号
13
00:00:36,000 --> 00:00:38,440
但实际上这个可以去掉了
14
00:00:38,450 --> 00:00:40,450
因为它属于意念
15
00:00:40,460 --> 00:00:43,210
你标个层级有什么意义
16
00:00:43,680 --> 00:00:43,990
17
00:00:44,000 --> 00:00:45,390
你告诉我层级
18
00:00:45,400 --> 00:00:47,830
但实际上这一对多本身就是层级
19
00:00:48,790 --> 00:00:52,170
你加上内容要有意义才可以,属于意念
20
00:00:52,180 --> 00:00:53,130
可以去掉
1
00:00:00,230 --> 00:00:03,000
第四个就是类型上的约束
2
00:00:04,820 --> 00:00:08,600
这上面标的,针对各个类型的约束
3
00:00:08,890 --> 00:00:11,440
当然这上面原来是用自然语言了
4
00:00:13,910 --> 00:00:17,650
2004中译本,自然语言
5
00:00:20,640 --> 00:00:22,170
2020中译本
6
00:00:22,180 --> 00:00:23,810
自然语言
7
00:00:24,700 --> 00:00:28,650
这次我们把它改成形式语言
8
00:00:28,740 --> 00:00:30,330
用OCL来表达
9
00:00:32,850 --> 00:00:39,020
你看这个,经营单位,母是空的
10
00:00:39,150 --> 00:00:41,220
没有母单位
11
00:00:41,430 --> 00:00:42,460
没有母组织
12
00:00:45,630 --> 00:00:46,740
这个约束必须为真
13
00:00:48,590 --> 00:00:50,600
地区
14
00:00:51,670 --> 00:00:56,370
原文是说父节点(原文无“节点”)必须是经营单位
15
00:00:56,620 --> 00:01:00,290
那么我们OCL表达
16
00:01:00,300 --> 00:01:04,580
就是母的类型是经营单位
17
00:01:05,790 --> 00:01:07,540
这个必须为真,下面一样
18
00:01:08,510 --> 00:01:11,270
就是说,这个值必须为真
19
00:01:12,970 --> 00:01:14,890
下面这几个应该还有什么
20
00:01:14,900 --> 00:01:17,270
这个不为空
21
00:01:17,280 --> 00:01:21,960
下面这个子单位
22
00:01:21,970 --> 00:01:24,030
它的上级单位不为空
23
00:01:24,830 --> 00:01:27,460
但是批量刷就没有必要了
24
00:01:27,470 --> 00:01:29,600
像这种批量刷的,没有必要