第一章 面向对象编程

Post on 30-Dec-2015

117 Views

Category:

Documents

9 Downloads

Preview:

Click to see full reader

DESCRIPTION

面向对象技术与 C ++. 第一章 面向对象编程. 什么是对象技术. 基于对象概念的软件开发方法 对象包含有数据及处理数据的功能函数 在分析、设计和实现的整个过程中只使用一个概念对象的开发方法 能够解决软件危机中大多数问题的方法. 对象 = 数据 + 功能. 对象技术的优势. 稳定 : 数据和功能都打包在一起,从而改善软件的再重用性. 软件重用 能提高质量,减少由于编制新的系统代码而产生的成本. Spread sheet. Word Processor. Text Editor. Macro Editor. Math Utilities. - PowerPoint PPT Presentation

TRANSCRIPT

第一章 面向对象编程

面向对象技术与 C++

基于对象概念的软件开发方法 对象包含有数据及处理数据的功能函数 在分析、设计和实现的整个过程中只使用一个概念对象的开发方法 能够解决软件危机中大多数问题的方法

对象 = 数据 + 功能

什么是对象技术

FileMgr

MacroEditor

MathUtilitie

s

TextEditor Print

UtilitiesFormatEditor

MenusString

Utilities

Spread sheet Word Processor

Reusable-Component Repository

对象技术的优势 稳定 : 数据和功能都打包在一起,从而改善软件的再重用性

软件重用能提高质量,减少由于编制新的系统代码而产生的成本

现实世界

Laser Printer External Drive

Computer

对象图

对象技术的优势 面向对象的模型更加贴切地反映了现实世界 更加准确地描述公共数据和过程 易于理解,尤其对于使用者

对象技术的优势 面向对象的方法支持大规模开发 可以严格定义各个组件之间的交互

减少内部的依赖关系 减少集成的问题 支持并行开发

对象技术的优势

Existing Software Reengineered Software

对系统的一部分进行再工程,保护前期软件应用的投资

1.1 程序设计的不同编程风格

程序的目的:用于数学计算主要工作:设计求解问题的过程

程序由模块构成。 传统的程序设计方法其程序设计工作主要围绕设计解题过程来进行,把程序看作是工作在数据上的一系列过程(函数 )的集合。程序的定律是:

程序 =算法 +数据结构 这种方法称为面向过程的程序设计,语言称为过程性语言。

C 是面向过程的语言。

一、面向过程的结构化编程风格

设计思路 自顶向下、逐步求精。采用模块分解与功能抽象,自顶向下、分而治之。

程序结构: 按功能划分为若干个基本模块,形成一个树状结构。 各模块间的关系尽可能简单,功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成。

其模块化实现的具体方法是使用子程序。

例:制造汽车的任务

Main()

Buildc(…) Builde(…)Buildd(…)Assemble(…) inspect(…)

缺点:可重用性差、数据安全性差、难以开发图形界面的应用

把数据和处理数据的过程分离为相互独立的实体。 当数据结构改变时,所有相关的处理过程都要进行相应的修改。

每一种相对于老问题的新方法都要带来额外的开销。 图形用户界面的应用,很难用过程来描述和实现,开发和维护都很困难。

优点:有效地将一个较复杂的程序系统设计任务分解成许多

易于控制和处理的子任务,便于开发和维护。直观、有条理。

二、面向对象 (OOP) 的编程风格

面向对象方法把程序看作是互相协作而又彼此独立的对象的集合。对象间通过发送消息而相互作用。

程序的定律是: 对象 =(算法 +数据结构)

程序 =(对象 +对象 +……)

面向对象的方法学可以用下列方程式概括: OO=Objects+Classes+Inheritance+Communication With messages

方法学是指一组启发式过程,以减少程序设计问题的复杂性。

面向对象方法具有下述 4个要点:

面向对象的软件系统是由对象( Object )组成的;

把所有对象都划分成各种对象类(简称为类, Class ), 每个对象类都定义了一组数据和方法;

按照子类(派生类)与父类(基类)的关系,把若干个对象类组成一个层次结构的系统,这种现象称为继承( In

heritance );

对象彼此之间仅能通过传递消息( message )互相联系。

面向对象 对象技术围绕对象的概念来建立 一个对象包含了数据和使用这些数据的所有功能 对象之间通过消息通信

一个对象通过向另一个对象发送消息激活某一 个功能

一个对象代表了一个现实的或虚构的实体

自然实体

概念实体

软件实体

化学过程

什么是对象

连接显示

•在概念级上,对象是正被建模的系统中的实际的实体;

•从物理实现形式上,对象是封装了数据结构及可以是

在这些数据结构上的操作(方法)的封装体,这个封装

体有可以唯一地标识它的名字,而且向外界提供一组服

务(即公有操作)。

对象 =特性(属性) + 行为

对象 类 Simula-67是第一个 OOP语言。

目的:解决模拟问题

例:银行出纳业务包括部门、顾客、业务、货币的单位等大量的“对象”。

由此提出“类”:在程序执行期间除了状态之外其他方面都一样的对象归在一起,构成对象的“类”。

什么是类( Class)是 OOP中构成模块的基本单元

类是一组具有相同结构和行为的对象的集合 共同的结构通过属性表现出来 (i.e. 数据 ) 共同的行为通过操作表现出来 (i.e. 功能 )

班机 747

结构班机号日期

分配的班机起点终点状态

行为装载设备起飞延迟取消终止

类的示例Class

Employee

Structur

e

Name

Address

Position

Salary

Start

Date

End

Date

Behavior

Hire

Fire

Promote

Increase

Salary

Retire

类是生成对象的模板 类的定义中包含有产生和删除对象的操作,属性显示在操作上方,操作的名字后跟有 ()

一个类定义了使用哪种数据表示法来描述属性 每一个实例都采用有属性值的数据表示法

一个类通过一系列操作来定义行为 这种操作能在每个实例中激活

类是生成对象的模板

班机

Flight 187

Flight 121

Flight 747

类和对象的关系

每一个对象都是某一个类的实例 每一个类在某一时刻都有零个或更多的实例 类是静态的 ; 它们的存在、语义和关系在程

序执行前就已经定义好了 对象是动态的 ; 它们在程序执行时可以被

建和删除

variables

methods

程序中的对象是类的一个实例,是一个软件单元,它由一组结构化的数据和在其上的一组操作构成。

类是可以实例化的抽象数据类型。

类定义的变量就是属于类的对象,即对象是类的实例化。

Varible(field), procerdure(method,constructor)

消息 (message) :消息是向对象发出的服务请求

目前在大部分面向对象的编程语言中,消息其实就是函数(或过程)调用。

在语法上,一条消息应包括消息名、入口参数和返回参数;

在语义上,一条消息应包括发送者、接收者和其它需传送的信息。

但是,函数调用只是实现消息的方式之一,上述理解只适合于顺序系统

例: Circle MyCircle;

MyCircle . Show ( GREEN );

//实例 MyCircle以绿色显示自己。

优点: 程序模块间的关系更为简单,程序模块的独立性、数据的安全性就有了良好的保障。

通过继承与多态性,可以大大提高程序的可重用性,使得软件的开发和维护都更为方便。

设计思路 以类的设计为基础,通过类的设计来完成对实体的建模。

关系的重要性 所有的系统都包含了大量的类和对象 对象通过与其它对象的协作完成系统的功能行为 协作通过关系来实现 几种重要的关系类型 :

has a is a belongs to

top related