面向对象方法学概述优秀课件
面向对象方法学概述
❖ 面向对象思想最初起源于20世纪60年代 末的simula67语言。面向对象方法的基 本要点首次在simula语言中得到了表达 和实现。
❖ 80年代,位于美国加州的Xerox研究中心 推出smalltalk语言及其程序设计环境, 使得面向对象程序设计方法得到比较完 善的实现,掀起了面向对象研究的高潮。
80年代的面向对象程序设计就象70年代的 结构化程序设计一样,每个人都喜欢用它, 每个软件开发商都开发他们的软件支持它, 每个管理员都要付出代价应用它,每个程序 员都要以不同的方式实践它,但是没有人能 清楚地讲清楚它。
第二节 基本概念
面向对象=对象+类+继承+通信 ❖ 如果一个软件系统是使用这样四个概念
❖ 80年代中后期,面向对象的软件设计和 程序设计方法已发展成为一种成熟有效 的软件开发方法。相比而言,面向对象 的分析技术发展得比较滞后。
第一节 概述
1.1 传统方法学 ❖ 传统方法学存在的问题
生产率提高的幅度远远不能满足需要 软件重用程度很低 软件仍然很难维护 软件往往不能真正满足用户需要
❖ 出现问题的原因
❖ 具体的多形行为主要表现在以下方面:
1)运算符重载 同一个运算符可作用于多种数 据类型上;
2)函数名重载 相同的函数名可作用于不同的 对象类上,并产生不同的行为效果;
❖ 通过封装可以将对象的定义与对象的实 现分开。这样,无论是对象功能的完善 扩充,还是对象实现的修改,影响仅限 于该对象内部,保证了面向对象软件的 可构造性和易维护性。
❖ 通过继承可以表达类与类之间的联系, 大大减少了重复定义,同时也使系统的 结构更加清晰、易于理解和维护。
❖ 早在1982年,Rentsch就曾预言
*封闭性 对象的封闭性是指对象具有信息隐蔽的 能力。
*通信性 对象能够接收其它对象发来的消息,也 能向其它对象发送消息。通信性反映了不同对 象间的联系。
上述特点分别刻画了对象不同方面的性质,自治 性反映了对象独立计算的能力,封闭性和通信 性说明对象是一个既封闭又开放的相对独立体。
2.2 类(class)
2.5 服务(method,即操作、方法)
❖ 为了完成某一任务,一个对象所提供的 并体现其责任的操作称为服务。属于同 一类的所有对象共享相同的服务。
2.6 继承(inheritance)
❖ 类之间的继承关系是现实世界中遗传关系的直 接模拟,它表示类之间的内在联系以及对属性 和操作的共享。即子类可以沿用父类(被继承 类)的某些特征。当然,子类也具有自己独有 的属性和操作。
设计和实现的,则可以认为这个软件系 统是面向对象的。
2.1 对象(object)
❖ 一般说来,在系统分析和系统构造中, 对象是对客观世界事物的一种抽象,是 由数据(属性)及在其上的操作(行为)所组 成的封装体。
❖ 可以用一个公式表示为:
对象=属性+操作
对象具有如下主要特点:
*自治性 对于给定的输入,经过状态转换,对象 能产生输出。
❖ 类是一组具有相同数据结构和相同操作 的对象的集合。
❖ 类的定义包括一组数据属性和在数据上 的一组合法操作,可以用一个公式表示 为:
类=(组)数据属性+(组)数据操作
类名 属性 操作
ห้องสมุดไป่ตู้
circle
(x0,y0) r color
Display ……
2.3 属性(attribute)
❖ 每一对象的属性是一些有着确定值的, 用于描述对象状态信息的数据。
僵化的瀑布模型 *某些类型的系统需求是模糊的
*项目参与者之间存在通信鸿沟 *预先定义的需求可能是过时的
结构化技术的缺点
*用这种技术开发出的软件,其稳定性、可修改性 和可重用性都比较差。
*结构化分析、设计技术的本质是功能分析。从代 表目标系统整体功能的单个处理着手,自顶向下不 断把复杂的处理分解为子处理,层层分解下去,直 至仅剩下若干个容易实现的子处理为止。
❖ 功能与数据分离的软件设计结构与人类的现实 世界环境很不一样,和人的自然思维也就很不 一致,因此对现实世界的认识与编程之间存在 着一道很深的理解上的鸿沟。
❖ 系统是围绕着如何实现一定的行为来进行的, 当系统行为易变,需要常常修改时,修改极为 困难。
❖ 在系统中模块之间的控制作用有重要影响时, 也就是说,实际的控制发生的根源来自分散的 各个模块之中时,由于在“好的模块结构”中 的模块间的控制作用只能通过上下之间的调用 关系来进行,造成信息传递路径过长,效率低, 易受干扰,甚至出错。
❖ 属性一般只能通过执行对象的操作来改 变。
2.4 消息(message)
❖ 消息就是用来请求对象执行某个处理或 回答某些信息的要求,是连接对象的纽 带。或者说,一个对象为实现其责任而 与其它对象的通信称为消息。
❖ 消息通常由三个部分组成:接收消息的 对象;消息选择符(也称为消息名); 零个或多个变元。
❖ 新类的定义可以是现存类所声明的数据、定义 与新类所增加的声明的组合。在组合过程中, 新类复用现存类的定义,而不要求修改现存类。
❖ 继承的优点:
是软件开发中复用概念的核心 便于模块修改
简化模块
2.7 多形(polymorphism)与动态连接 (dynamic binding)
❖ 多形的本质是一个消息可以与不同的实 例结合,而且这些实例属于不同类。
❖ 自顶向下功能分解的分析方法极大地限制了软 件的可重用性。
1.2 面向对象方法学
❖ “面向对象”(Object-Oriented)是针对“面向 过程”一词提出的,是从本质上区别于传统的 结构化方法的一种新方法,新思路。
❖ OO技术的基本原理是:按照问题域的基本事 物实现自然分割,按人们通常的思维方式建立 问题域的模型,设计尽可能直接自然表现问题 求解的软件系统。
❖ 为此,OO技术引入了对象(object)概念来表现 事物,用消息(message)传递建立事物间的联 系。用类(class)和继承(inheritance)作为适应 人们一般思维方式的描述模型。用方法 (method)表示作用在对象上的各种操作。
❖ 建立在对象、消息、类、继承和方法等 概念基础上的面向对象软件的基本特征 是对象的封装性和继承性。