《大象UML》看书笔记2:
《大象UML》看书笔记2
抽象角度:
在为现实世界建模的时候,首先要搞清楚有多少参与者,每个参与者的目标是什么,参与者的目标就是我们需要的抽象角度。
什么是模:
确定了抽象角度就是确定了目标,接下来就是要找到满足这一目标的事物,我需要利用面向过程的方法找到:
1、贡献于场景目标的"物",
2、这些"物"如何贡献于场景
抽象角度确定的目标需要由特定的场景来完成,场景(事件)=静态的事物(物)+特定的条件(规则)+特定的动作(参与者的驱动)
用例驱动:
要解决问题就要归纳出所有的抽象角度(就是用例),为这些用例描述出可能出像的场景,描述出所有的场景,就实现了所有的用例,问题就解决了。
抽象层次:
抽象层次越高,具体信息越少,概括能力越强,信息量越大,结果越肯定,概括能力越弱。
抽象层次越高,被封装的信息就越多,信息量就小,就越容易理解和处理。
但是当信息量太小的时候,有不足以我们处理问题,因此我们要适当的选择抽象层次。
抽象有两种方法,自顶向下,自下向上
前者从最抽象的部分开始,概念少,信息量小,让你的思路更清晰,然后局部具体化,直到编码的工作。
后者一开始就要处理大量的底层信息,不利于我们的对事物的认识。
而我们就要直到什么时候选择什么样的抽象层次,以及共需要多少层,如果用UML建模的话,抽象层次就直接放映了用例的粒度。
视图 和 视角:
拿一辆车打比方,车的重量、外观、性能 ,这每一个属性就对应一个试图,每一个试图当中会有不同的视角,用以展示从不同角度看到的信息。
观察者只关心自己感兴趣的信息,因此在展示信息的时候,选择适当的视角并展示给实弹的观察者很重要。
对象分析方法:
1、一切都是对象:一切有名字的东西都是对象,我们要用下述的方法来分析它,就算是某个东西叫做某某业务流程,我们也要将他看作对象
2、对象都是独立的:对象是天然独立的,只是在某个特定的场景下,他们的某一个特定的实例才会联系在一起,而每一个场景中的这个实力都只是这个对象的一个侧面,要深入了解该对象,我们就需要对该对象在不同场景的多个实例进行分析,以获得其多个侧面,然后将反映多个侧面的这些实例进行抽象,得到这个对象的一般性。
3、在任何时候,分析过程都应该将对象视为一个不可分割的原子,不论这个对象多大,在与其他对象交互的时候都是一个整体。
我们可以将对象看作是一个鸡蛋,不能将其打破,我们将我们对该对对象所有的认识都附加到其边界上,在实现该对象之前,不能窥探其内部,
这被称作面向借口编程。
4、对象是可抽象的:对象在一个场景中的实例就是对象的一个面,我们可以将这个面抽象成一个接口(???不理解),对象参与的场景越多,那么它具有的面越广,
么它就越有抽象价值。
5、对象具有层次性:抽象层次高,描述越粗略,适应能力强,抽象层次低,信息更详细,但是适应能力差。我们可以设定多个抽象层次来减少工作量。从需求到设计,我们已经分出了几个抽象层次,但是在我要说的是在其中一个阶段,比如需求阶段,仍然可以分为几个抽象层次。
《大象UML》看书笔记2:的更多相关文章
- UML看书笔记1:主体思想
对象设计需要解决的三大问题: 1.把“现实世界”映射到“对象世界” 2.从“对象世界”描述“现实世界” 3.验证“对象世界”是否反映了“现实世界” 现实世界与我们的对象世 ...
- JavaScript看书笔记01
JavaScript看书笔记... ------------------- JavaScript允许var定义语句出现在函数内部的任意位置.JS中使用Var来显示的给变量声明 JavaScript是一 ...
- spring笔记----看书笔记
上周末看了一章以前javaee轻量级的书spring部分,简单做了一些笔记 // ApplicationContext ac=new ClassPathXmlApplicationContext(&q ...
- 数据结构看书笔记(二)--算法(Algorithm)简介
算法:是解决问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作. 算法的特性:算法具有五个特性:输入.输出.有穷性.确定性.可行性 输入输出:算法具有零个或多个输入:至 ...
- 精通javascript(看书笔记)
变量的类型检查 //检测类型 var str = "Hello World"; if (typeof str=="string") {//使用typeof来判断 ...
- 《深入理解 JVM 虚拟机》 --- 看书笔记
1.JVM 内存溢出 1.堆溢出:堆要不断的创建对象,如果避免了垃圾回收来清除这些对象,就会产生JVM内存溢出.一般手段是通过内存映像分析工具对Dump出来的堆转储快照进行分析,分清楚到底是内存泄露还 ...
- python早期看书笔记
- 设计模式学习起点 UML类图笔记
UML类图笔记 大学开设的软件设计课程一般都会学习UML类图,大部分关于设计模式的描述都是使用的UML类图,可以说类图的表示是学习设计模式的起点.UML定义类之间的关系主要有六种:泛化关系.实现关系. ...
- 到底怎么样才叫看书?——Tony Zhao's
到底怎么样才叫看书?——上篇 目录: 一.引入 二.经历了就能理解 三.读书要分级 四.只读经典 五.别吝惜你动笔的那点时间 一.引入 看到这个题目的时候你可能会感到有点好笑:“这还用问,看书就是把书 ...
随机推荐
- 配置分割Tomcat日志
安装cronolog 官网下载:http://cronolog.org/usage.html ./configuremake;make install 或者 yum install cronolog ...
- Qt Installer Framework的学习
Qt Installer Framework是Qt默认包的发布框架.它很方便,使用静态编译Qt制作而成.并且使用了压缩率很高的7z对组件进行压缩.之所以有这些好处,我才觉得值得花一点儿精力研究一下这个 ...
- Linux 中将用户添加到组的指令
在 Linux 操作系统下,如何添加一个新用户到一个特定的组中?如何同时将用户添加到多个组中?又如何将一个已存在的用户移动到某个组或者给他增加一个组?对于不常用 Linux 的人来讲,记忆 Linux ...
- Mybatis 的Log4j日志输出问题 - 以及有关日志的所有问题
使用Mybatis的时候,有些时候能输出(主要是指sql,参数,结果)日志.有些时候就不能. 无法输出日志的时候,无论怎么配置log4j,不管是properties的还是xml的,都不起作用. 有些时 ...
- HDU 2227 Find the nondecreasing subsequences (线段树)
Find the nondecreasing subsequences Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/3 ...
- IT第十天 - String和StringBuffer的比较、编程设计技巧整理、本周总结 ★★★
IT第十天 上午 String 1.String在进行多次的+扩展时,会严重的降低处理效率,因为String长度是不可变的,在进行+运算改变字符串时,会自动创建很多临时字符串,并不是在原字符串上追加, ...
- Linux 终端部分重要快捷键
tab 自动补全文件名,目录名或命令名ctrl+c 强行终止当前程序Ctrl+d 键盘输入结束或退出终端 Ctrl+s 暂定当前程序,暂停后按下任意键恢复运行 Ctrl+z 将当前程序放到后台运行 ...
- 大Q品牌故事_大Q官网_腾讯旗下买卖宝公司倾力打造
大Q品牌故事_大Q官网_腾讯旗下买卖宝公司倾力打造 走在大路上的改变者,有态度的互联网手机品牌
- CSS块元素与内联元素(转)
为什么<a><span>这种标签定义width,height等CSS属性时会发现完全不生效? 因为它们不是容器,它们是内联元素,不是块元素 CSS 块元素与内联元素 关键字: ...
- Android:源码环境下移植第三方的apk内置到ROM(System Image)中
1. 首先在vendor目录下新建一个the3rdapk的目录,将需要内置的apk丢进去,目录名自己随意定. 2. 在 build/target/product/common.mk最后面,在$(cal ...