深入浅出面向对象分析与设计读书笔记一&吉他搜索案例&吉他特性锚点集中&委托&重用&业务阶段&需求列表&用例
案例:吉他搜索
Guitar Inventory GuitarSpec
需求变化:增加吉他弦数特性
原始程序需要的变化:
1.修改GuitarSpec,构造,成员,getter
2.修改Guitar,构造,因为改类直接接收吉他特性参数,构造吉对象。
3.修改Inventory,搜索方法,因为该类直接使用吉他特性来进行匹配。
另一种设计:
1.修改Guitar的构造器,让其接收GuitarSpec对象,而不是具体的吉他特性参数。
2.修改Inventory的搜索方法,其中委托GuitarSpec提供的matches()方法进行匹配。
另一种设计程序需要的变化:
1.在GuitarSpec中,增加弦数成员,修改构造,getter,matches()方法。
优点:吉他特性的变化的锚点被集中到了GuitarSpec中,虽然锚点的数量并没有改变,但是我们的程序因为锚点更集中,让我们找到所有的锚点更容易,程序更容易维护。
可以使用锚点这个词语:
增加吉他特性(如弦数)必须找到程序中所有吉他特性产生的锚点,进行改变。这是必要的操作。
原始程序吉他特性的锚点分布在了GuitarSpec,Guitar,Inventory中,当重新设计后,吉他特性的锚点被集中到了GuitarSpec中,范围更小了。锚点数量越多越分散我们的程序就越难以修改。锚点数量越少越集中我们的程序就越容易修改和维护。
第2个优点:吉他特性的比较功能被抽取了出来,更容易复用。
好的设计:
1.集中程序中吉他特性相关的锚点到GuitarSpec类中。锚点数量越少,越集中,找到全部锚点并进行修改的工作就越容易,即程序可维护。
2.抽取matches()方法,并将该方法移动到GuitarSpec类中,而在Inventory类的search方法中使用委托。本质上是1中的具体实现。这样让类间的职责与分工更加明确。matches()方法更易被重用。
伟大软件的三个步骤:
1.确认你的软件做客户要它做的事
2.运用基本的面向对象原则增加软件的灵活性
3.努力实现可维护可重用的设计
业务阶段:
需求:是一个业务目标
用例:是真实环境中用户使用系统实现一个业务目标的详细步骤。
用例焦点:客户的目标
用例关键:系统解决,用系统解决可能存在的妨碍用户实现业务目标的问题。
用例名词:
场景:用例的一个执行路径。(所有的执行路径都需要被测试)
可选路径:可选路径是可能发生的额外情况
分支路径:将会执行多条分支路径中的一个
一个用例三个部分:1.清楚的价值 2.起点与终点 3.外部启动者
需求和用例
1.创建需求列表:用户提出自己原始需求(简陋的,不全面的需求),客户要用系统做的事情。
2.用例:为每个特定的业务目标使用单独的用例,更好的理解这个业务目标。(预料事情会出错,即考虑用户使用系统实现业务目标时可能发生的问题,系统没有考虑到,但如果出现这种问题,会妨碍用户完成业务目标。)
3.改进需求列表:根据用例,用例帮助我们发现一些问题,因此我们需要改进原始的需求列表。
比对需求列表和用例的步骤,如果用例的某个步骤没有找到对应的需求,则我们需要增加新的需求到需求列表中。
4.变化发生,需求列表新增需求:
5.改进用例
6.改进需求列表
...
风险规避:
用例:为了完成一个特定的业务目标的一系列步骤的描述。这些步骤中系统应该做什么。
场景:用例的一个执行路径。(所有的执行路径都需要被测试)
可选路径:可选路径是可能发生的额外情况
分支路径:将会执行多条分支路径中的一个
用例把焦点放在完成一个特定目标上。
用例包含的是系统应该做什么而不是怎么做。
一个用例三个部分:1.清楚的价值 2.起点与终点 3.外部启动者
深入浅出面向对象分析与设计读书笔记一&吉他搜索案例&吉他特性锚点集中&委托&重用&业务阶段&需求列表&用例的更多相关文章
- 《UML和模式应用》读书笔记(一)面向对象分析和设计简单示例
在开始进行对象分析和设计之前,先通过“扔骰子”这个软件(游戏者扔两个骰子,如果总是是7,则赢,否则输),来简单分析下这个过程. 1:用例 需求分析,可能包括人们如何应用的场景或情节,这些都可以被编写成 ...
- UML和模式应用学习笔记-1(面向对象分析和设计)
UML和模式应用学习笔记-1(面向对象分析和设计) 而只是对情节的记录:此处的用例场景为:游戏者请求掷骰子.系统展示结果:如果骰子的总点数是7,则游戏者赢得游戏,否则为输 (2)定义领域模型:在领域模 ...
- 《JavaScript面向对象编程指南》读书笔记②
概述 <JavaScript面向对象编程指南>读书笔记① 这里只记录一下我看JavaScript面向对象编程指南记录下的一些东西.那些简单的知识我没有记录,我只记录几个容易遗漏的或者精彩的 ...
- 解析UML的面向对象分析与设计
经常听到有朋友抱怨,说学了UML不知该怎么用,或者画了UML却觉得没什么作用.其实,就UML本身来说,它只是一种交流工具,它作为一种标准化交流符号,在OOA&D过程中开发人员间甚至开发人员与客 ...
- Mysql实战45讲 04讲深入浅出索引(上)读书笔记 极客时间
极客时间 Mysql实战45讲 04讲深入浅出索引 极客时间(上)读书笔记 笔记体悟 1.索引的作用:提高数据查询效率2.常见索引模型:哈希表.有序数组.搜索树3.哈希表:键 - 值(key - v ...
- .NET应用架构设计—面向对象分析与设计四色原型模式(彩色建模、领域无关模型)(概念版)
阅读目录: 1.背景介绍 2.问自己,UML对你来说有意义吗?它帮助过你对系统进行分析.建模吗? 3.一直以来其实我们被一个缝隙隔开了,使我们对OOAD遥不可及 4.四色原型模式填补这个历史缝隙,让我 ...
- .net架构设计读书笔记--第三章 第9节 域模型实现(ImplementingDomain Model)
我们长时间争论什么方案是实现域业务领域层架构的最佳方法.最后,我们用一个在线商店案例来说明,其中忽略了许多之前遇到的一些场景.在线商店对很多人来说更容易理解. 一.在线商店项目简介 1. 用例 ...
- 面向对象分析与设计—OOD部分
第三部分 面向对象设计 3.1 面向对象设计(OOD)的定义? 在面向对象分析阶段,已经针对用户需求建立起用面向对象概念描述的系统分析模型.在设计阶段,要考虑为实现系统而采用的计算机设备.操作系统.网 ...
- 面向对象分析与设计—OOA部分
第二部分 面向对象分析 2.1 面向对象分析(OOA)的定义? OOA——面向对象的分析,就是运用面向对象方法进行系统分析,对问题域(问题所涉及的范围)和系统责任(所开发的系统应具备的职能)进行分析与 ...
随机推荐
- IOS AppStore介绍图的尺寸大小(还有一些自己被拒的分享...)
4s:640*960 5:640*1136 6:750*1334 6P:1242*2208 -------现在新版本的iTunes connect里只上传6P版本的大小就可以了,其他版本苹果会自动分辨 ...
- latex编译过程-关于嵌入所有字体
我们的初始目的是想在编译的过程中嵌入所有字体 参考 我们进行了设置,但是不起作用,后发现使用pdflatex编译时是不会调用 ps2pdf的 然后,我们就需要了解编译过程 1. 通常,我们使用texs ...
- hdu-5802 Windows 10(贪心)
题目链接: Windows 10 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- codevs 3049 舞蹈家怀特先生
题目描述 Description 怀特先生是一个大胖子.他很喜欢玩跳舞机(Dance Dance Revolution, DDR),甚至希望有一天人家会脚踏“舞蹈家怀特先生”.可惜现在他的动作根本不能 ...
- Hive操作笔记
hive库清表,删除数据 insert overwrite table lorry.bigdata select * from lorry.bigdata where 1=0 hive的simple模 ...
- ssh免密脚本
#!/bin/sh if [ "$1"x = ""x ]; then echo "usage:/opt/bin/auto-ssh.sh user se ...
- win7-64 mysql的安装
1.https://jingyan.baidu.com/article/597035521d5de28fc00740e6.html 2.net start mysql 无法启动的3534的错误的解决办 ...
- 在浏览器端用JS创建和下载文件
前端很多项目中,都有文件下载的需求,特别是JS生成文件内容,然后让浏览器执行下载操作(例如在线图片编辑.在线代码编辑.iPresst等). 但受限于浏览器,很多情况下我们都只能给出个链接,让用户点击打 ...
- 2-5 Flutter开发环境与Android开发环境设置详解(Windows)
第二个是国内服务器的网址 andoid stuido的一些使用的说明文档 https://developer.android.google.cn/studio/intro 安装Flutter Dart ...
- 9. 那些强悍的PHP一句话后门
强悍的PHP一句话后门 这类后门让网站.服务器管理员很是头疼,经常要换着方法进行各种检测,而很多新出现的编写技术,用普通的检测方法是没法发现并处理的.今天我们细数一些有意思的PHP一句话木马. 利用4 ...