《Thinking in UML》读书笔记 2:建模基础
对于学习UML首先要了解几个重要的概念:建模 用例驱动 抽象层次 视图 对象分析方法
建模
就是以一种抽象的方法去描述现实中的事物,将事物概念化,并用逻辑将这些概念组织起来。
站在不同的抽象角度去看待事物会得到不同的结果,例如筷子和勺子如果站在用的角度去看的话,它们都是通过手来使用的,但如果站在形状的角度上看,它们就很不同了。
放在面向对象分析里去的首要目标不是要弄清楚业务是如何一步一步完成的,而是要弄清楚有多少业务的参与者,每个参与者的目标是什么,因为这些参与者的目标就是我们建模的抽象角度。
当我们有了抽象角度以后就可以根据它去模拟场景。
用例驱动
要解决问题领域就要归纳出所有必要的抽象角度(用例),为这些用例描述出可能的特定场景,并找到实现这些场景的事物,规则和行为。所以实现用例就解决问题领域了,这就是用例驱动。
抽象层次
首先得明白一个道理:抽象层次越高,具体信息越少,但概括能力越强。例如站在汽车的抽象层次得到的信息是相对比较少的,但你很容易理解汽车这个概念,但如果把抽象层次放到汽车中的各个部件,引擎等部件上,信息量当然会很多,但理解上不如汽车来的容易接受。
但抽象层次如果过高,信息量过于少的话,往往实施起来又会有困难,所以选择一个恰当的抽象层次是非常重要的。
抽象有两种方法:1 自顶向下 2 自底向上
自顶向下让人们从头开始认识一个事物。例如汽车发动机的原理,大家都能明白,但如果向下抽象到热力学,我们就很难理解了,自顶向下也适用于人们从头开始认识一个事物的。
自底向上的方法适用于在实践中改进和提高对原来事物的认识。
视图
视图用于组织UML元素,表达出模型某一方面的含义。
在整个软件的生命周期中,每一个观察者对于软件所观察的角度都是不同的,例如对于一辆汽车,有的人关心他的外形,有的人关心他的性能。所以需要不同的视图去展现软件的不同的方面,UML里面定义的视图有用例图,对象图,类图,包图,活动图等不同的视图。
对象分析方法
一切都是对象 :
在面向对象的眼里,一切有名字的东西都是对象,包括叫某某名字的业务流程。
对象都是独立的:
对象是天然独立的,只有当某一特殊场景下,对象和对象法会发生联系。
我们常常是通过某一个场景去分析一个对象,但由于对象时离散的,他不因为某一个场景而存在,所以我们在场景中看到的对象只是对象映射到该场景中的一个侧面。若要深入了解对象,我们常常要分析很多个对象的实例所参与的场景,已获得对向的多个侧面,再通过归纳整理这些对象的多个实例抽象出对象的一般特性。
对象都具有原子性:
在分析过程中,应该将对象看成一个不可再分的原子,不应该试图去窥探对象内部的结构,应该吧对象的认识都附加到对象的边界上,这就是面向接口编程的思想。
对象都是可抽象的:
当对象参与到某一个场景中时就会展现对象其中的某一面,于是就可以把对象的这一面已接口的形式抽象出来。对象参与的场景越多,他越具有抽象的价值。
对象都有层次性:
对象都有抽象层次,层次越高,其描述越粗略但适应能力越广,反之也是。所以根据问题领域的复杂程度设定多个抽象层次,有助于减少分析的难度和工作量。
今天读了第二章后,由于这里都是介绍一些概念性的东西,所以理解起来比较困难,感觉这些知识点都是很离散的,在日后的学习中应该都能找到他们。