对象是包含现实世界物体特征的抽象实体,它反映了系统为之保存信息和(或)与它交互的能力
对象
现实生活中的对象 指就是客观世界的实体。
类可以看成是对象的抽象,代表了此类对象所具有的共有属性和行为。
复杂的对象可以由简单的对象组成。
在研究对象时主要考虑对象的属性和行为,有些不同的对象会呈现相同或相似的属性和行为,如轿车、卡车、面包车。
通常将属性及行为相同或相似的对象归为一类。
类可以看成是对象的抽象,代表了此类对象所具有的共有属性和行为。
面向对象 = 对象 + 类 + 继承 + 消息通信
如果一个系统是使用这样 4 个概念设计和实现的,则可认为这个系统是面向对象的
可以将程序中的对象分为 5 类:
物理对象(Physical Objects)
角色(Roles)
事件(Events)
交互(Interactions)
规格说明
类
可以将现实生活中的对象经过抽象,映射为程序中的对象。
对象在程序中是通过一种抽象数据类型来描述的,这种抽象数据类型称为类(Class)。
封装
面向对象的封装特性与其抽象特性密切相关。
封装是一种信息隐蔽技术,就是利用抽象数据类型将数据和基于数据的操作封装在一起。
用户只能看到对象的封装界面信息,对象的内部细节对用户是隐蔽的
清楚的边界,所有对象的内部信息被限定在这个边界内
接口,即对象向外界提供的方法,外界可以通过这些方法与对象进行交互
受保护的内部实现,即软件对象功能的实现细节,实现细节不能从类外访问
继承
继承是一种联结类的层次模型,为类的重用提供了方便,它提供了明确表述不同类之间共性的方法
我们将公共类称为
超类(superclass)
父类(father class)
基类(base class)
祖先(ancestor)
从公共类继承的类称为
子类(subclasses)
后代(deslendane)
导出类(derived class)
多态
根据为请求提供服务的对象不同可以得到不同的行为,这种现象称为多态
在运行时对类进行实例化,并调用与实例化对象相应的方法,称为动态绑定、后期绑定或运行时绑定。
相应地,如果方法的调用是在编译时确定的,则称为是静态绑定、前期绑定或编译时绑定
通过在子类中覆盖父类的方法实现多态
消息通信
消息是一个对象与另一个对象的通信单元,是要求某个对象执行类中定义的某个操作的规格说明
发送给一个对象的消息定义了一个方法名和一个参数表(可能是空的),并指定某一个对象
一个对象接收到消息,则调用消息中指定的方法,并将形式参数与参数表中相应的值结合起来
1.方法的唯一性即方法是对软件开发过程所有阶段进行综合考虑而得到的
2.从生存期的一个阶段到下一个阶段的高度连续性 即生存期后一阶段的成果只是在前一阶段成果的补充和修改
3.将面向对象分析(OOA)、面向对象设计(OOD) 和 面向对象程序设计(OOP) 集成到生存期的相应阶段
Rumbaugh 和他的同事提出的对象模型化技术(OMT) 用于分析、系统设计和对象级设计。分析活动建立三个模型
最容易学习的 OOA 方法
(1):使用“要找什么”准则标识对象
(2) 定义对象之间的一般化/特殊化结构(又称为分类结构)
(3) 定义对象之间的整体/部分结构(又称为组合结构)
(4) 标识主题
(5) 定义对象的属性及对象之间的实例连接
(6) 定义服务及对象之间的消息连接
包括微开发过程 和 宏开发过程
强调使用用例——用以描述用户和产品或系统间如何交互的场景