面向对象的概念讲述课件_第1页
面向对象的概念讲述课件_第2页
面向对象的概念讲述课件_第3页
面向对象的概念讲述课件_第4页
面向对象的概念讲述课件_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1面向对象技术2课程特点面向对象是一种全新的思考方式该课程以概念为基础,为主线注重建模和视图提供统一建模语言UML深入理解面向对象的概念;掌握面向对象的建模过程;掌握建模语言UML;设计健壮的、可扩展的、可复用的、可维护的软件系统。3课程目的4

面向对象的概念

面向对象的软件开发模型第1章面向对象的概念5理解并掌握如下概念类和对象对象和实例对象和变量实例变量与类变量方法与操作抽象类和抽象方法两种方法的本质区别面向对象的软件开发模型61.1

传统软件开发方法的问题模型阶段性

模型的顺序性以功能为主的方法,功能易变

模块的封装性、可重用性差,接口易变没有很好解决软件开发中的两个经典问题大峡谷北端大峡谷南端数据模型处理模型科罗拉多河传统方法,数据和功能各自描述系统的一部分,两种模型表示角度不同,若合起来,对一致性、精确性难以验证。

OO的对象模型解决了此问题。两个经典问题:问题“1”

图1-1经典问题“1”

7两个经典问题:问题“2”

分析模型设计模型大峡谷北端科罗拉多河大峡谷南端传统方法,分析和设计两个阶段描述工具不同,需要转换,重新建立模型,向程序员解释编程要求。

OO方法的设计是对OOA的扩展。图1-2经典问题“2”

89面向对象的程序设计语言面向对象的设计面向对象的分析

面向对象的发展过程1.2面向对象方法的由来解决问题的过程图1-3面向对象方法的发展10

Simula(DahlandNygaad)—模拟现实世界对象的行为。

60年代末,挪威奥斯陆大学和挪威计算中心研制的创建了第一个OO系统。

Ada

(G.Booch)—具有对象的特征,是一个基于对象的语言。

70年代,G.Booch在研究Ada软件开发中,提出了OO思想,创建了Ada的程序包。Smalltalk(美国XeroxParc研究中心A.Key研制)72年,推出Smalltalk72---有对象的概念;76年,推出Smalltalk76---有类的概念;

81年,推出Smalltalk80和环境---全面体现了OO程序设计语言的特征。1.2面向对象方法的由来Objective-C(Cox1986,CoxandNovobilski1991)。

支持多态、信息隐敝。C++

(

1980,贝尔实验室的Bjarne

Strousrup)

支持抽象、继承、自动引用、动态绑定、操作符重载等,但维护困难。Eiffel(Myeer1990)

有断言,解决正确性、健壮性、可移植性、效率等。Java(Sun公司JamesGosling1990)

在SunWorld95年会上公布。Java=C++-复杂性和奇异性+安全性和可移植性。111.2面向对象方法的由来1.3面向对象与面向过程的软件开发区别1.3.1方法的区别1.3.2分析与设计的区别1.3.3程序的区别121.3.1方法的区别13

(1)

面向过程方法是开发人员按计算机的结构去思考问

题。

(2)

面向过程方法是开发人员在问题空间和解空间进行

对应。

面向对象方法是以对象(事物)代表求解问题的中

心环节,是按解决问题的方式去思考问题。

面向对象的方法,是现实的问题空间与软件系统的

解空间的近似和直接模拟,使人们对复杂系统的认

识过程和程序的实现过程尽可能一致。

14

(3)

面向过程方法以函数过程和数据结构为中心建模,用

计算机的术语描述问题。

面向对象的方法是对求解问题本身建模,用问题本

身的术语描述问题。

1.3.1方法的区别15函数和过程举例:某所大学信息系统的设计数据图1-4结构化方法结构化的方法:将定义数据库的布局和程序的设计来访问这些数据。

数据库中存有关于学生、教授、教室以及课程的信息。程序可以让用户登记学生的选课情况,分派教授授课,安排授课教室等。程序可以访问并更新数据库。

16对象对象对象对象图1-5面向对象方法面向对象的方法:

学生、教授、教室和课程等被当成对象来考虑。定义一组能进行交互的类(类,class是相似对象的一种通用表示)。

这样的类将包括功能(程序)和数据的抽象。举例:某所大学信息系统的设计171.3.2分析与设计的区别图书馆信息系统CatalogLibrarianBookLibrarySystemRecordLoansAddResourcesReportFines图1-6

按对象概念分解图1-7

按功能或过程分解面向对象分析与设计面向过程的分析与设计

分而治之分析和设计的采用一致的概念、原则、表示法1.3.3程序的区别面向对象的程序=对象+消息

存款取款图1-9

面向对象的储蓄处理事务银行账户对象数据和施加在其上的操作分离;代码按过程组织的,每个过程操作不同类型的数据。

外部消息利息结算利息结算存款取款账户余额账户余额图1-8

面向过程的储蓄处理事务

在面向对象中,是在数据抽象内来组

织过程即代码是按类组织的,每个类

包含对该类实例进行操作的过程。面向过程的程序=数据结构十算法18191.4面向对象的范型1.4.1喷泉模型1.4.2OO软件开发生命周期1.4.1喷泉模型

(fountainmodel)20调试验收入库概括聚集编码设计分析图1-10喷泉模型1990年,B.Hendersonseller和J.M.Eduarols在其“面向对象系统生存期”一文提出的OO开发的七点框架,并以Bailin提出的实体数据流图或信息流图作底层工具,而构思的面向对象生存期的喷泉模型。无隙性:各阶段无明显界限复用:支持分析和设计结果的自然复用;概括、聚集对客观世界对象的模型化。

21系统分析系统设计写程序问题定义系统测试系统维护1.4.2OO软件开发生命周期图1-11OO软件开发生命周期221.5面向对象的概念面向对象概念的提出:

使描述问题的问题空间和解决问题的方法空间一致(概念上、处理行为上一致)

按问题领域的基本事物实现自然分割按人们思维方式建立问题域模型演绎思维(从一般到特殊)

归纳思维(从特殊到一般)为此,必须建立直接表现组成问题域的事物,及这些事物间相互联系的概念,建立适应人们一般思维方式的描述范式。Coad和Yourdon给出了面向对象的定义:面向对象=对象+类+继承+通信

23问题空间的对象:现实世界中任何实际存在的事物都是对象(

是对实体概念的一种描述)。物理实体软件实体概念实体1.5.1对象(Object)24

对象是一个具有封装了的数据结构和操作的实体,这

个实体有一个标识它的名字,对外通过相应的接口,

提供相应的服务。计算机程序中的对象是具有三个特

征的实体:标识、状态、行为。方法空间的对象:

是对某个事物的抽象描述。Object::=(OID,DS,OS,MI)1.5.1对象(Object)25对象特征

(对象的属性和行为)

属性

Atribute

描述对象“静态”(结构)特征的一个数据项;属性是对象知道的事情;描述对象的当前状态。

操作Operation描述对象“动态”(行为)特征的一个操作序列;操作是调用对象执行的转换或查询的规格说明;有可能改变对象的状态;操作是方法的抽象说明。说明对象在什么条件下是可行的。方法Method对象完成的事情。是操作的实现或执行操作的函数或过程。是实现类的行为的过程抽象。规格思考:

属性完全相同的两个事物,是否是同一个对象?举例。

两个教师姓名和职称都相同,但它们却是两个不同的对象。所有的对象都是独立的实体,都有其唯一的标识。对象之间的区别是由它们固有的存在性所决定的,而与它们的特征是否相同无关。

2627

类是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述。1.5.2类(Class)(1)类的定义Class::=(ID,ATT,OPE,ITF,INH)其中ID类名,ATT属性集,OPE操作集,ITF接口消息集,INH类的继承性集。(2)类和对象类可以是对象,但对象不是类;类是对象的抽象描述;对象是类的实例;实例:Instance具有身份和值的独立实体概念层的类RectangleheightwidthgetArearesizeRectangleheight:intwidth:intgetArea():intresize(int,int)Rectangleheightwidth对象实例p:Rectangleheight=10width=20q:Rectangleheight=15width=25(3)类的描述几种情况说明层的类实现层的类281.5.2类(Class)例如绘图中的点类:

x:inty:int

move()getX()getY()setX()setY()Point用Java定义点类:

ClassPoint{

int

nx;//点的x坐标

int

ny;//点的y坐标

int

nColor;//颜色值

voidmove(int

x,inty);//

将当前点移到×、y处

int

getX();//获当前点X坐标

int

getY();//获当前点Y坐标

int

setX();

int

setY();

}

Pointmypoint;//点类的一个对象

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

类类似一张表,表内描述了数据和操作的封装体。类是一个命名空间,为类的泛化声明建立作用域;301.5.2类(Class)31表示两个类之间是

“isa”

,“islike”或“iskindof”关系。1.5.3

继承(Inheritance)superclasssubclass继承使两个以上的类共享相同的属性和/或相同方法。继承提高了复用性。继承的各个类可形成层次结构。继承集中的属性,只能声明一次。操作可以被多次声明,只要声明相同。321.5.4消息(Message)消息包括的信息消息的发出者消息的接收者

要求的服务输入的信息输出(回答)的信息协议对象间通信要遵守条件

消息是一个对象向另一个对象发出的服务请求(操作的请求、执行方法的请求),要求系统的某个

对象完成它指定的操作。33为不同的目的建立不同层次上的抽象,并将不同层次上的同一概念的两种元素联系起来的依赖关系,一个元素比另一个元素更详细。1.5.5

抽象(Abstraction)

抽象是确定一个事物的本质特征的行为,使这个事物与其他事物区分开。抽象是自底向上的对几组事物观察,找出事物的共性,把具有共性的事物划分成一类。34抽象类abstractclass

抽象类是不能被直接实例化的类,即它没有直接的实例。对象是对问题域中某些事物的抽象;类是对对象的一个抽象;1.5.5

抽象(Abstraction)

35具体类

letterBody:StringCursor:IntegerGetNextSentence():StringRestCursor()EncryptedLetterEncoding:CodeKeygetNextSentence():String图1-12具体超类产生模糊性1.5.5

抽象(Abstraction)

36抽象类

图1-13抽象超类避免模糊性Letter<<abstract>>Body:StringCursor:IntegergetNextSentence():StringRestCursor()EncryptedLetterEncoding:CodeKeygetNextSentence():StringNonEncryptedLettergetNextSentence():String1.5.5

抽象(Abstraction)

371.5.6

封装(Encapsulation)

将数据(属性)和方法(服务)结合成一个独立的系统单位。隐藏了对象的内部细节:信息隐蔽(informationhiding)有一个清晰的边界有确定的接口(即协议)受保护的内部实现封装性的条件

售报亭报刊名称报刊定价销售总额(钱租)报刊零售款货清点图1-14售报亭对象38封装的意义表达事物的静态特征和动态特征(是事物不可分割的两个侧面)。封装性使我们只要注意该对象对外呈现什么行为(做什么),而不关心内部的实现细节(怎么做)。可以避免外部入侵,提高软件的可维护性、可修改性。描述系统中的功能是如何划分的。391.5.7多态性(Polymorphism)在面向对象中,多态性使得同一个属性或服务在一般类及其各个特殊类中具有不同的语义。说明多态性表示了对象属于多个类的能力。

抽象操作是多态的,抽象操作可以在不同的类中按不同方式执行。

多态性增加了OO的灵活性,减少冗余信息,提高可重用性,可扩展性。在OO语言中,多态性的实现与下列概念有关:同样的操作可用于一个类型及其子类型。在子类中,对继承类的属性或服务进行重新定义。——动态绑定

(dynamicbinding)程序在运行时,根据对象接受的消息,动态地确定要连到哪一段代码上。程序设计中,运行期决定对象和分配存储能力为动态绑定。

——参数多态(parametric)参数多态是指一个可参数化的类模板中包含的操作所涉及的类型必须用类型参数实例化。40——包含多态

(inclusion)多态性显著提高了软件的可重用性和可扩充性。用户可以发送一个通用的消息,而实现时的细节则由接收对象自行决定,这样同一消息可以调用不同的方法,增加了系统的灵活性。经理Pay()推销员Pay()技工Pay()销售部经理Pay()雇员Pay()41包含多态(inclusion)Shape类图1-15画图系统中类的继承关系各种图形具有共同的属性和操作:颜色、线型、旋转、移动。但在不同图形中对Draw的描绘虽然不同,外界都可以采用以下方式调用:

Shape

LineTriangleSquareRectangleDra

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论