📄 《c++编程思想》-- 第1章 笔记(5).txt
字号:
作者:rick1126
email: rickzhang@sina.com
日期:7/15/2001 9:31:34 AM
1.5 其他方法
1.5.1 Booch 方法
最早的, 最基本和最广泛被引用的一个方法. 焦点是在OOP的泪, 方法和继承和单独性能上.
【在抽象的特定层上确定类和对象】
. 使用自然语言声明问题和解, 并且确定关键特性.
【确定它们的语义】
. 在相应的抽象层上定义类, 如果计划建立一个类, 我们应当确定类的相应观众或者使用者
. 应当具备主题属性和客体属性应对不同层次的使用者
【确定它们之间的关系】
. 定义一个类如何与其他类互相作用.
. 强每一个类的信息制作表格: 使用类, 责任和协作( Class, Responsibility, Collaboration, CRC )卡片
责任 - 发送和接收的消息
协作 - 引用关系
. 必要性: 如果不能在一个卡片上明确表述类的所有内容就表示这个类过于复杂, 这个和我们之前提到的简单化原则是不适合的
. 要求卡片内部不涉及主要技术改革的解决方法, 对于每一个人都是可用的
【实现类】
【反复设计】
1.5.2 责任驱动的设计 ( RDD )
也是使用CRC卡片, 重点在于责任的授权, 而不是外观.
使用Booch方法, 雇员 - 银行雇员 - 银行经理 ==> 这里遵循责任, 协作关系的角度
使用RDD方法, 经理 - 金融经理 - 银行经理 ==> 着重在责任, 即从职务角度不加区分
【内容】
. 数据和状态
每一个类的数据变量和状态变量的描述
. 数据池和数据源
哪一个类产生数据, 哪一个类处理数据 ( 生产者 - 消费者 )
. 观察者或者观点
观点和观察者类, 用以隔离硬件依赖. 观点是逻辑产物, 观察者则是产生观点的主体.
. 辅助工具或者帮助器
辅助工具或者帮助类, 类似虚函数表和处理方法构成一个帮助类
1.5.3 对象建模技术 ( OMT )
【对于Booch和RDD的发展】
. Boonch方法强调类的功能表现, 简单地定义它们作为自然语言的轮廓
. RDD强调类的责任表现
. OMT使用详细绘制图表的方法, 不仅描述类, 而且还描述系统的各种状态
【OMT的描述】
. 对象模型 "什么" ==> 对象图表, 类似Booch和RDD的对象模型, 对象通过责任相互关联
. 动态模型 "何时" ==> 状态图表, 描写了系统与时间有关的状态, 不同状态通过转变相关联
. 功能模型 "如何" ==> 数据流程表, 跟踪数据流, 在程序的最低层行, 实际的工作时通过使用过程完成的, 因此程序的低层行为最好通过画数据流理解
〖个人理解〗
其实前面的几种方法都是在对象之间的关系上面侧重不同. Booch使用CRC卡片, 形象化的给出了对象的描述. 比较完善了给出了对象的几个侧重点 -- 类, 责任( 处理和发送的消息 ), 协作( 相互关系 ). Booch 着重在于类的功能表现, RDD则关键注重责任即使用者的角度, OMT重视各个类型之间的关系; 所以焦点就是各个类的继承关系的不同. 举例如下 -- 有一个银行系统
在Booch看来, 分类继承层次为: 一般职员 - 银行职员 - 银行经理; 继承准则就是各自的"外观" -- 即阶层不同
在RDD看来, 分类继承则为: 一般职员 - 银行职员; 经理 - 金融经理 - 银行经理; 继承准则在于"责任" -- 处理的消息的逐步特殊化
对于OMT还需要给出各种图表, 自然这和我先前谈到的自然语言应该不是矛盾的, 是应该在各个部门达成共识以后的一些辅助性的图标, 修改的时候应当还是基于自然语言的语义描述角度.
其实牵强的对于上述方法进行比较我想也是不公平的, 因为出现的时间不同嘛, 关键时继承原则应该统一.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -