【面向对象方法学引论】
3种模型
1.对象模型
类的三个主要信息:
类名(唯一标识类信息)
成员变量
成员方法
表示关系的符号
1.1关联
(1)普通关联
(2)关联的角色
是一种自关联
(3)限定关联
比如一个目录下有很多文件名而一个文件名只对应一个文件
(4)关联类
1.2泛化
1.3聚集和组合
1.4依赖和细化
2.动态模型
3.功能模型##—-表明变化系统的功能
用例图,数据流图
本质上说,用计算机解决客观世界的问题,是借助于某种程序设计语言的规定,对计算机中的实体施加某种处理,并用处理结果去映射解。
软件系统本质上是信息处理系统。
面向对象方法是一种一数据或信息为主线,把数据和处理相结合的方法。
面向对象的4个要点
1.客观世界是对象组成的
2.将对象抽象成类
3.按照导出类和基类的关系,把对象类组成一个层次结构系统
4.对象之间通过传递消息联系
OO = objects + classes + inheritance + communication with message
原因:【自己思考】数据与处理是分离不开的,面向对象将数据和处理封装在一起,与传统面向结构化设计而言,它不是等待外界对它的私有数据进行处理,而是通过消息机制要求对象自身主动处理自己对象。
【面向对象的设计OOA】
收取与和整理用户需求建立问题域精确模型的过程
3个子模型:对象模型,动态模型、功能模型
5个层次
主题层
类与对象层
结构层
属性层
服务层
5个层次对应这面向对象分析的5项主要活动:找出类和对象、
识别结构、识别主题、定义属性、定义方法
1.需求陈述包括:问题范围、功能需求、性能需求、应用环境、假设条件等。
需求陈述阐明“做什么”,描述用户需求而不是解决问题办法。
2.确定类与对象
非正式分析方法:以自然语言书写的需求陈述为依据,找名词(类与对象的候选者)、形容词(确定属性的线索)、动词(方法的候选者)
筛选出正确的类和对象
(1)冗余 (2)无关
(3)笼统 (4)属性
(5)操作 (6)实现
3.确定关联
需求陈述中描述性动词或者动词词组通常表示关联关系。
方法
1.提取动词短语得到管理
2.关联---描述问题域的静态结构
(1)已经删去的类和对象不管
(2)瞬时时间不管
(3)三元关联可以分解二元关联或用 词组描述成限定关联
(4)派生关联
3.完善
(1)正名
(2)分解
(3)补充
(4)标明重数
面向对象分析要做的几件事
1.需求陈述
2.画出系统的数据模型(对象和类)
精细化、逐步求精
3.建立动态模型
1).编写脚本
2)提取时间,确定出发每个时间的动作对象和接受事件的目标对象
3.排列时间发生的次序
4)画出状态图
【注】动态模型(时序图)和状态图有时候只需要画一个就行。
4.建立功能模型
表明系统中数据之间依赖关系,以及有关的数据处理功能(ipo图/表),由一组数据流图组成。
操作步骤
4.1画出基本系统模型图(顶层图)
4.2画出功能级数据流图(1层图)
4.3描述处理框功能
5.定义方法
逐步精化,反复迭代
【面向对象的设计OOD】
设计则是要吧分析阶段得到的需求装变成符合成本
和质量要求的、抽象的系统实现方案
OOA----->OOD
设计准则:
1)模块化
2)抽象
在设计模式中学到的面向接口编程而不要面向实现编程
3)信息隐藏
4)低耦合
耦合值一个软件结构内不同模块之间互联的紧密程度
面向对象方法学中:对象是最基本模块
5)高内聚
内聚衡量一个模块内各个元素彼此结合的紧密程度
6)可重用
面向对象设计模型
同样遵循OOA时的5个层次:主题层、类与对象层、结构层、属性层、服务层(方法)
人机交互部分 问题与部分 任务管理部分 数据管理部分
子系统的交互方式
1)C/S : 客户端是主动的、其他子系统是完成服务工作返回结果是被动的
2) p2p : 是一种对等的,每个子系统都可能调用其他子系统
组织系统的两种方案
1)层次组织
2)块状组织
设计系统的拓扑图---星型、树型、管道形