《大象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. CSS 初始化 代码

    腾讯QQ官网 样式初始化 ;} body{font:12px"宋体","Arial Narrow",HELVETICA;background:#fff;-web ...

  2. Python之路Day13

    day13主要内容:JavaScript.DOM.jQuery 武Sir blog:http://www.cnblogs.com/wupeiqi/articles/5369773.html JavaS ...

  3. poj 2480 Longge's problem

    /** 大意: 计算f(n) = ∑ gcd(i, N) 1<=i <=N. 思路: gcd(i,x*y) = gcd(i,x) * gcd(i, y ) 所以gcd 为积性函数 又因为积 ...

  4. graph isomorphism 开源算法库VFlib, Nauty

    VFlib 开源算法库网站:http://www.cs.sunysb.edu/~algorith/implement/vflib/implement.shtml Nauty 开源算法库网站:http: ...

  5. nginx配置ssl加密(单双向认证、部分https)

    nginx配置ssl加密(单双向认证.部分https) nginx下配置ssl本来是很简单的,无论是去认证中心买SSL安全证书还是自签署证书,但最近公司OA的一个需求,得以有个机会实际折腾一番.一开始 ...

  6. spring 框架整合 笔记4

    struts hibernate spring 先贴出框架整合需要的maven <project xmlns="http://maven.apache.org/POM/4.0.0&qu ...

  7. java学习之线程的操作方法

    package com.gh.thread; /** * 线程实现的两种方法 * 1.继承thread类 * 2.实现Runnable接口 * @author ganhang * */ public ...

  8. 解惑:NFC手机怎样轻松读取银行卡信息?

    自支付宝钱包8.0推出了NFC新功能,仅仅要将支持NFC功能的手机靠近公交卡.银行卡等带有芯片的IC卡上,可迅速读取卡内剩余金额.卡的信息,还能够给卡进行充值,很贴心有用. 可是非常多网友表示担忧,要 ...

  9. jsp小商城

    一个小商城,当然,没淘宝那么厉害,只是那时学完j2ee后,发现java原来也可以做网站,学了数据库,servlet,jsp,当时是很惊喜的,可以直接做个这样的东西.而放到今天,学了更多之后,发现可以用 ...

  10. 误mlogc.c:32:23: error: curl/curl.h: No such file or directory

    出现以下错误: mlogc.c:32:23: error: curl/curl.h: No such file or directory mlogc.c:1091: error: expected ' ...