《大象UML》看书笔记2

抽象角度:                                                       
在为现实世界建模的时候,首先要搞清楚有多少参与者,每个参与者的目标是什么,参与者的目标就是我们需要的抽象角度。

什么是模:                                                       
确定了抽象角度就是确定了目标,接下来就是要找到满足这一目标的事物,我需要利用面向过程的方法找到:

1、贡献于场景目标的"物",

2、这些"物"如何贡献于场景

抽象角度确定的目标需要由特定的场景来完成,场景(事件)=静态的事物(物)+特定的条件(规则)+特定的动作(参与者的驱动)

用例驱动:                                                       
要解决问题就要归纳出所有的抽象角度(就是用例),为这些用例描述出可能出像的场景,描述出所有的场景,就实现了所有的用例,问题就解决了。

抽象层次:                                                       
抽象层次越高,具体信息越少,概括能力越强,信息量越大,结果越肯定,概括能力越弱。

抽象层次越高,被封装的信息就越多,信息量就小,就越容易理解和处理。

但是当信息量太小的时候,有不足以我们处理问题,因此我们要适当的选择抽象层次。

抽象有两种方法,自顶向下,自下向上

前者从最抽象的部分开始,概念少,信息量小,让你的思路更清晰,然后局部具体化,直到编码的工作。

后者一开始就要处理大量的底层信息,不利于我们的对事物的认识。

而我们就要直到什么时候选择什么样的抽象层次,以及共需要多少层,如果用UML建模的话,抽象层次就直接放映了用例的粒度。

视图 和 视角:                                                  
拿一辆车打比方,车的重量、外观、性能 ,这每一个属性就对应一个试图,每一个试图当中会有不同的视角,用以展示从不同角度看到的信息。

观察者只关心自己感兴趣的信息,因此在展示信息的时候,选择适当的视角并展示给实弹的观察者很重要。

对象分析方法:                                                  
1、一切都是对象:一切有名字的东西都是对象,我们要用下述的方法来分析它,就算是某个东西叫做某某业务流程,我们也要将他看作对象

2、对象都是独立的:对象是天然独立的,只是在某个特定的场景下,他们的某一个特定的实例才会联系在一起,而每一个场景中的这个实力都只是这个对象的一个侧面,要深入了解该对象,我们就需要对该对象在不同场景的多个实例进行分析,以获得其多个侧面,然后将反映多个侧面的这些实例进行抽象,得到这个对象的一般性。

3、在任何时候,分析过程都应该将对象视为一个不可分割的原子,不论这个对象多大,在与其他对象交互的时候都是一个整体。
     我们可以将对象看作是一个鸡蛋,不能将其打破,我们将我们对该对对象所有的认识都附加到其边界上,在实现该对象之前,不能窥探其内部,
这被称作面向借口编程。

4、对象是可抽象的:对象在一个场景中的实例就是对象的一个面,我们可以将这个面抽象成一个接口(???不理解),对象参与的场景越多,那么它具有的面越广,
么它就越有抽象价值。

5、对象具有层次性:抽象层次高,描述越粗略,适应能力强,抽象层次低,信息更详细,但是适应能力差。我们可以设定多个抽象层次来减少工作量。从需求到设计,我们已经分出了几个抽象层次,但是在我要说的是在其中一个阶段,比如需求阶段,仍然可以分为几个抽象层次。

《大象UML》看书笔记2:的更多相关文章

  1. UML看书笔记1:主体思想

    对象设计需要解决的三大问题:      1.把“现实世界”映射到“对象世界”      2.从“对象世界”描述“现实世界”      3.验证“对象世界”是否反映了“现实世界” 现实世界与我们的对象世 ...

  2. JavaScript看书笔记01

    JavaScript看书笔记... ------------------- JavaScript允许var定义语句出现在函数内部的任意位置.JS中使用Var来显示的给变量声明 JavaScript是一 ...

  3. spring笔记----看书笔记

    上周末看了一章以前javaee轻量级的书spring部分,简单做了一些笔记 // ApplicationContext ac=new ClassPathXmlApplicationContext(&q ...

  4. 数据结构看书笔记(二)--算法(Algorithm)简介

    算法:是解决问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作. 算法的特性:算法具有五个特性:输入.输出.有穷性.确定性.可行性 输入输出:算法具有零个或多个输入:至 ...

  5. 精通javascript(看书笔记)

    变量的类型检查 //检测类型 var str = "Hello World"; if (typeof str=="string") {//使用typeof来判断 ...

  6. 《深入理解 JVM 虚拟机》 --- 看书笔记

    1.JVM 内存溢出 1.堆溢出:堆要不断的创建对象,如果避免了垃圾回收来清除这些对象,就会产生JVM内存溢出.一般手段是通过内存映像分析工具对Dump出来的堆转储快照进行分析,分清楚到底是内存泄露还 ...

  7. python早期看书笔记

  8. 设计模式学习起点 UML类图笔记

    UML类图笔记 大学开设的软件设计课程一般都会学习UML类图,大部分关于设计模式的描述都是使用的UML类图,可以说类图的表示是学习设计模式的起点.UML定义类之间的关系主要有六种:泛化关系.实现关系. ...

  9. 到底怎么样才叫看书?——Tony Zhao's

    到底怎么样才叫看书?——上篇 目录: 一.引入 二.经历了就能理解 三.读书要分级 四.只读经典 五.别吝惜你动笔的那点时间 一.引入 看到这个题目的时候你可能会感到有点好笑:“这还用问,看书就是把书 ...

随机推荐

  1. 使用wget -i下载多个文件

    使用wget -i下载多个文件 命令: wget -i filelist.txt 说明: 首先,保存一份下载链接文件 cat > filelist.txt url1 url2 url3 url4

  2. QT 程序自定义插件

    1,定义接口文件 /****************************************************************************************** ...

  3. this class is not key value coding-compliant for the key detailItem

    我出这个错误是因为,自己的一个视图没有给指定想用的viewController文件..及一个classController控制一个xib文件,忘给该视图指定控制器了.

  4. WebRTC–getUserMedia-filter

    示例说明:抓取MediaStream的一帧数据,并对该帧数据使用Css滤镜效果. 步骤: 1. 由getUserMedia方法获取一个可用的MediaStream 2. canvas方法drawIma ...

  5. hibernate的配置 1

    hibernate 是一种ORM框架,是ORM框架中一个典范 ORM叫做对象关系映射 是面向对象语言和关系型数据库之间的映射关系 所以只有在面向对象语言或者关系型数据库没用的时候ORM才会消失 ORM ...

  6. Codeforces AIM Tech Round (Div. 2)

    这是我第一次完整地参加codeforces的比赛! 成绩 news standings中第50. 我觉这个成绩不太好.我前半小时就过了前三题,但后面的两题不难,却乱搞了1.5h都没有什么结果,然后在等 ...

  7. HDU 4741 Save Labman No.004 2013 ACM/ICPC 杭州网络赛

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4741 题意:给你两条异面直线,然你求着两条直线的最短距离,并求出这条中垂线与两直线的交点. 需要注意的是 ...

  8. hibernate+spring的整合思路加实例(配图解)

    首先框架整合我感觉最难的是jar包的引入.因为不同框架的jar容易产生冲突.如果能排除这个因素我想说整合框架还是相对比较容易的. 我整合的框架的一个思想就是:各司其职.因为每个框架处理的事务或者是层次 ...

  9. cocos2d-x3.6 连连看连通画线

    我的博客:http://blog.csdn.net/dawn_moon 网上看到非常多人写的连连看,都没有画连线的实现.事实上要话连线挺简单的.cocos2d-x 提供了一个非常方便的绘图形的类.Dr ...

  10. ios常见加密解密方法

    在其他平台中经常会计算MD5值,在iOS平台中也提供了该方法,首先需要导入头文件 #import <CommonCrypto/CommonDigest.h> 方法CC_MD5可以获取MD5 ...