第一章 面向对象编程

24
第第第第第第 第第第第第第第 C ++

Upload: jillian-navarro

Post on 30-Dec-2015

117 views

Category:

Documents


9 download

DESCRIPTION

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

TRANSCRIPT

Page 1: 第一章 面向对象编程

第一章 面向对象编程

面向对象技术与 C++

Page 2: 第一章 面向对象编程

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

对象 = 数据 + 功能

什么是对象技术

Page 3: 第一章 面向对象编程

FileMgr

MacroEditor

MathUtilitie

s

TextEditor Print

UtilitiesFormatEditor

MenusString

Utilities

Spread sheet Word Processor

Reusable-Component Repository

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

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

Page 4: 第一章 面向对象编程

现实世界

Laser Printer External Drive

Computer

对象图

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

Page 5: 第一章 面向对象编程

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

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

Page 6: 第一章 面向对象编程

对象技术的优势

Existing Software Reengineered Software

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

Page 7: 第一章 面向对象编程

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

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

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

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

C 是面向过程的语言。

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

Page 8: 第一章 面向对象编程

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

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

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

Page 9: 第一章 面向对象编程

例:制造汽车的任务

Main()

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

Page 10: 第一章 面向对象编程

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

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

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

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

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

Page 11: 第一章 面向对象编程

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

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

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

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

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

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

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

Page 12: 第一章 面向对象编程

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

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

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

heritance );

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

Page 13: 第一章 面向对象编程

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

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

Page 14: 第一章 面向对象编程

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

自然实体

概念实体

软件实体

化学过程

什么是对象

连接显示

Page 15: 第一章 面向对象编程

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

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

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

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

务(即公有操作)。

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

Page 16: 第一章 面向对象编程

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

目的:解决模拟问题

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

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

Page 17: 第一章 面向对象编程

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

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

班机 747

结构班机号日期

分配的班机起点终点状态

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

Page 18: 第一章 面向对象编程

类的示例Class

Employee

Structur

e

Name

Address

Position

Salary

Start

Date

End

Date

Behavior

Hire

Fire

Promote

Increase

Salary

Retire

Page 19: 第一章 面向对象编程

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

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

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

类是生成对象的模板

班机

Flight 187

Flight 121

Flight 747

Page 20: 第一章 面向对象编程

类和对象的关系

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

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

建和删除

Page 21: 第一章 面向对象编程

variables

methods

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

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

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

Varible(field), procerdure(method,constructor)

Page 22: 第一章 面向对象编程

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

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

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

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

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

例: Circle MyCircle;

MyCircle . Show ( GREEN );

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

Page 23: 第一章 面向对象编程

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

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

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

Page 24: 第一章 面向对象编程

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

has a is a belongs to