第五章 面向对象分析与设计(上)

 一、面向对象的基本概念

1.面向对象技术概述

面向对象
– 任何系统都是由能够完成一组相关任务的对象构成
– 如果对象依赖于一个不属于它负责的任务,那么就需要访问负责此任务的另一 个对象(调用其他对象的方法)
– 一个对象不能直接操作另一个对象内部的数据,它也不能使其它对象直接访问 自己的数据
– 所有的交流都必须通过方法调用

1.1结构化程序开发

 每一步骤都是带有预定输入和特定输出的一个过程;
§ 把这些步骤串联在一起可产生合理的稳定的贯通于整个程序的控制流, 最终产生一个简单的具有静态结构的体系结构;
§ 数据抽象、数据结构根据算法步骤的要求开发,它贯穿于过程,提供
过程所要求操作的信息;
§ 系统的状态是一组全局变量,这组全局变量保存状态的值,把它们从 一个过程传送到另一个过程。
§ 结构化软件=算法+数据结构
§ 结构化需求分析= 结构化语言+数据字典(DD)+数据流图(DFD)

问题:

结构化方法以功能分解和数据流为核心,但是...系统功能和数据表示 极有可能发生变化;

1.2面向对象软件开发

§ 在结构化程序开发模式中优先考虑的是过程抽象,在面向对象开发模式 中优先考虑的是实体(问题论域的对象);
§ 主要考虑对象的行为而不是必须执行的一系列动作

§ 面向对象分析(Object Oriented Analysis, OOA)
– 分析和理解问题域,找出描述问题域和系统责任所需的类及对象,分析它们
的内部构成和外部关系,建立OOA 模型。
§ 面向对象设计(Object Oriented Design, OOD)
– 将OOA 模型直接变成OOD 模型,并且补充与一些实现有关的部分,如人 机界面、数据存储、任务管理等。
§ 面向对象编程(Object Oriented Programming, OOP)
– 用一种面向对象的编程语言将OOD 模型中的各个成分编写成程序,由于从 OOA→OOD→OOP实现了无缝连接和平滑过渡,因此提高了开发工作的效 率和质量

2.面向对象的基本概念

面向对象=对象+类 +继承+消息

2.1对象(Object)

§ 对象(Object):具有责任的实体。用来描述客观事物的实体,是构成 系统的一个基本单位,由一组属性以及作用在这组属性的操作构成。
§ Object::=(OID, DS, OS, MI) (标识,数据结构,操作集,消息集)

§ 构成三要素:标识符(区别其他对象)、属性(状态)和操作(行为)。
        – 属性(Attribute):与对象关联的数据,描述对象静态特性;

        – 操作(Operation):与对象关联的程序,描述对象动态特性;

2.2类

§ 类(Class):具有相同属性和操作的一组对象的抽象,它为属于该类的全部对象提供了统一的抽象描述。
        – 类是概念定义,抽象了同类对象共同的属性和操作

        – 对象是类的一个实例
§ Class::=<ID, DS, OP, ITF, INH> (标识,数据结构描述,操作集合,外部接口,继承性描述)
§ “类”所代表的是一个抽象的概念或事物,现实世界中并不存在,而 “对象”是客观存在的。

(1)类的命名

 尽量采用代表真实世界的事物去命名。

(2)类的属性

§ 类的属性:描述对象“静态”(结构)特征的一个数据项;
§ 属性的“可见性”(Visibility)分类:

– 公有属性(public) +
– 私有属性(private) -
– 保护属性(protected) #
§ 属性的表达方式:
– 可见性 属性名:数据类型=初始值
(3)类的操作/方法/服务(Operation/Method/Service)

§ 类的操作:描述对象“动态”(行为)的特征的一个函数或过程;
§ 方法的“可见性”(Visibility)分类:

– 公有属性(public) +
– 私有属性(private) -
– 保护属性(protected) #
§ 方法的表达方式:
– 可见性 方法名(参数列表):返回值数据类型
– 例如:+ getNextSentence (int i) : string

(4)类的作用

§ 类是一个支持继承的抽象数据类型;
§ 类是创建(实例化)对象的模板,类是对对象的抽象;

§ 类是一个命名空间,为类的泛化声明建立作用域;

§ 类类似一张表,表内描述了数据和操作的封装体。

2.3消息(Message)

一个对象向其他对象发出的请求,一般包含消息接收 对象、接收对象所采用的方法、方法需要的参数、返回信息等;

2.4封装

把对象的属性和操作结合成一个独立的单元, 并尽可能对外界隐藏对象的内部实现细节

封装的作用:

– 数据的安全性:保护对象,避免用户误用。
– 模块的独立性:保护客户端(调用程序),其实现过程的改变不会影响到相应 客户端的改变。
– 易开发、易维护性:隐藏复杂性,降低了软件系统开发难度;各模块独立组 件修改方便,重用性好。

2.5泛化(Generalization)与继承(Inheritance)

§ 泛化(generalization)/继承(Inheritance) 关系是类元的一般描述和具 体描述之间的关系,具体描述建立在一般描述的基础之上,并对其进 行了扩展。

§ 继承(Inheritance):子类( Subclass)可自动拥有父类/超类(SuperClass)的全部属性和操作;

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值