前言
前面已经说过了面向过程的软件设计方法,这次就说一说面向对象的软件设计方法。
正文
概念
面向对象
面向对象=对象+类+继承+通信
一个软件系统是使用这4个概念设计和实现的,那么这个软件系统是面向对象的。
对象
对象是没想对象开发模式的基本成分。每个对象可以有它本身的一组属性和它可以执行的一组操作来定义。
属性可以通过执行对象的操作来改变。
消息
消息是对象间的联系(主动对象和被动对象)
消息是一个对象与另一个对象的通信单元。
类
类是一组具有相同的数据结构和相同的操作的对象的集合。
类的定义包括椅子数据属性和在数据上的一组合法操作。
继承
继承是使用已经存在的定义作为基础建立新定义的技术。
开发过程
应用生存期
论域分析
论域分析开发问题论域的问题
建立大致的系统实现环境。
应用分析
根据特定应用的需要进行论域分析
细化在论域分析阶段开发出来的信息,把注意力集中在当前要解决的问题上。
类生存期
类的实现
通过变量的声明,操作界面的实现以及支持界面操作的函数的实现,可实现一个类的预期行为和状态。
类的测试
若类的定义提供的界面比较狭窄,穷举测试可以实现。
类的测试在最抽象的层次开始,沿继承关系继续向下进行。
已经测试过得部分不需要重新测试。
求精和维护
这个是一个软件生存期中最花费时间的部分。
传统的维护活动是针对应用的,而求精过程是针对类的,针对把类集成在一起的结构。
分析(OOA)
面向对象设计,重点是五层次和四组成部分。
OOA的两个任务
说明面对的应用问题,最终成为软件系统基本过程的对象,还有系统所必须遵从的、由应用环境所决定的规则和约束。
明确的规定构成系统的对象如何协同合作、完成指定的功能。
五层次模型
这五个层次是分析过程中的层析,每个层次的工作都为系统的规格说明在增加了一个组成部分。
类与对象
表示待开发的基本结构快,这一层是整个OOA模型的基初,问题在于如何建立现实世界中的事物。
属性
对象的属性和实例链接共同组成了OOA模型的属性层。
服务
对象的服务,加上对象实例之间的消息通信,共同组成了OOA模型的服务层,消息链接用有向箭头表示。
结构
负责捕捉特定应用域中的结构关系。
一种类型,描述出了该系统的整体结构。
另一种类型,称为一般—特殊结构,表明了类的继承性。
主题
具体操作
识别类和对象
第一个层次主要是识别类和对象
类和对象是对与应用有关的概念的抽象,这一层工作是整个分析模型的基础。
选择类和对象的原则
目标系统必须记住类和对象的某些事情。
类和对象应当提供某些服务或处理,
多属性。
所有属性对于类中所有实例都有意义。
标识结构
典型的结构有两种:
一般化—特殊化结构;整体—部分结构
标识一般化—特殊化结构的方法和策略:
对于每一类和对象,将他看做是一个一般化的类,对他的所有特殊情况,考虑以下问题:
它是否在问题论域中?
是否在系统职责捏?
继承性是否存在?
是否能都符合选择类和对象的标准?
标识整体化—部分化结构的方法和策略:
总体——部分关联
包容——内含关联
收集——成员关联