面向对象的概念
面向对象=对象+类+继承+通信
如果一个软件系统是使用这样4个概念设计和实现的,则我们认为这个软件系统是面向对象的
对象是面向对象开发模式的基本成分;
每个对象可用它本身的一组属性和它可以执行的一组操作来定义;
属性一般只能通过执行对象的操作来改变
操作又称为方法或服务,它描述了对象执行的功能,若通过消息传递,还可以为其它对象使用
类
类是一组具有相同数据结构和相同操作的对象的集合
类的定义包括一组数据属性和在数据上的一组合法操作
继承
继承是使用已存在的定义作为基础建立新定义的技术
类的定义可以是既存类声明的数据和新类所增加的声明的组合
消息
是一个对象与另一个对象的通信单元,是要求某个对象执行类中定义的某个操作的规格说明
面向对象方法的开发过程
面向对象方法改进了在生存期各个阶段之间的接口,因为在生存期各个阶段所开发出来的“部件”都是类;
在面向对象生存期的各个阶段对各个类的信息进行细化,类成为分析、设计和实现的基本单元
对象模型化技术OMT
对象模型化技术把分析时收集的信息构造在三类模型中,即对象模型、功能模型和动态模型
这个模型化的过程是一个迭代过程
对象模型
是三个模型中最关键的一个模型,它的作用是描述系统的静态结构,包括构成系统的类和对象,它们的属性和操作,及它们之间的关系。
在OMT中,类与类之间的关系叫做关联
聚合,代表整体与部分的关系,这是一种特殊形式的关联
限定,用以对关联的含义做某种约束
角色,用来说明关联的一端,由于多数关联具有两个端点,因而涉及到两个角色
动态模型
着重于系统的控制逻辑
它包括两个图,一个是状态图,一个是事件追踪图
状体图是一个状态和事件的网络,侧重于描述每一类对象的动态行为
在状态图中,状态是对某一时刻中属性特征的概况,而状态迁移表示这一类对象在何时对系统内外发生的那些事件作出何种响应
操作是一个伴随状态迁移的瞬时发生的行为,与触发事件一起表示在有关的状态迁移之上
动态模型由多个状态图组成,各个状态图并发执行,并可以独立地改变状态
事件
一个事件发生在某一时刻,每个事件都是单独发生的
我们建立事件类,并给每个事件一个名字,以指明共同结构和行为
事件从一个对象向另一个对象传送信息
事件追踪图
侧重于说明发生于系统执行过程中的一个特定场景,场景也叫做脚本,是完成系统某个功能的一个事件序列
状体图与事件追踪图的关系
状体图叙述一个对象的个体行为
事件追踪图则给出多个对象所表现出来的集体行为
功能模型
功能模型表明,通过计算,从输入数据能得到什么样的输出数据,不考虑参加计算的数据按什么时序执行
功能模型由多个数据流图组成,它们指明从外部输入,通过操作和内部存储,直到外部输出,这整个的数据流情况。
功能模型中所有的数据流图往往形成一个层次结构
在这个层次结构中,一个数据流图中的过程可以由下一层的数据流图做进一步的说明
1、对象-类层
表示待开发系统的基本构造块。这一层是整个OOA模型的基础。
2、属性层
对象的属性和实例联结共同组成了OOA模型的属性层
3、服务层
对象的服务,加上对象实例之间的消息通信,共同组成了OOA模型的服务层。
4、结构层
该层负责捕捉特定应用论域中的结构关系。结构层的一种类型,描绘出了该系统的整体结构;另一种类型称为一般--特殊结构或泛化--特化结构,泛化--特化结构表明了类的继承性。
5、主题层
OOA模型的结构庞大而复杂,可以将对象归类到各个主题中,把有关的对象用一个主题边框框起来。
识别类和对象
面向对象分析的第一层次主要是识别类和对象
类和对象是对与应用有关的概念的抽象
这一层工作是整个分析模型的基础
选择类和对象的原则:
目标系统必须记住类和对象的某些事情
类和对象应当提供某些服务或处理
多属性
所有属性对于类中所有实例都应有意义
标识结构
面向对象分析的下一步工作是标识结构,典型的结构有两种:
一般化--特殊化结构
整体--部分结构