面向对象技术基础篇_第1页
面向对象技术基础篇_第2页
面向对象技术基础篇_第3页
面向对象技术基础篇_第4页
面向对象技术基础篇_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

面向对象技术基础篇第一页,共五十一页,编辑于2023年,星期二课程特点面向对象是一种全新的思考方式该课程以概念为基础,为主线注重建模和视图提供统一建模语言UML2第二页,共五十一页,编辑于2023年,星期二课程简介面向对象技术概述面向对象的软件开发

面向对象的设计

需求与用况技术面向对象的分析

面向对象的编程

面向对象的测试UML建模统一建模语言UML3第三页,共五十一页,编辑于2023年,星期二深入理解面向对象的概念;掌握面向对象的建模过程;掌握建模语言UML;设计健壮的、可扩展的、可复用的、可维护的软件系统。课程目的4第四页,共五十一页,编辑于2023年,星期二1.单词背诵系统2.企业人事管理系统3.教学管理系统4.基于图像的试卷识别系统5.网上售书平台6.公寓管理系统7.桌面搜索引擎8.学生成绩综合分析系统实践作业

分析和设计下列问题之一,并写出文档。

5第五页,共五十一页,编辑于2023年,星期二9.城市停车管理系统10.超市销售管理系统11.医药超市管理系统12.幼儿预防管理系统13.教学网站学生管理系统14.高校智能排课管理系统15.基于搜索引擎的网络图片爬虫系统16.自选(先提交老师审题!)实践作业6第六页,共五十一页,编辑于2023年,星期二正文内容:

1.需求分析—文字描述

(1)功能性需求—关于系统做什么的描述;

(2)非功能性需求—关于系统约束的描述;(性能、可靠性、环境等)

(3)

用例的文字描述#用例名称;#用例的简要说明:该用例的作用;

如,买车票用例供客户浏览客户航班信息、查询和用信用卡买票面向对象文档内容7第七页,共五十一页,编辑于2023年,星期二

#前提条件:用例开始前必须满足的条件,可能是另一个己执行的用例,或用户具有运行当前使用用例权限;

#主流事件和其他事件流:从用户角度关注做什么,事件流描述执行用例;#事后条件(也可缺省):用例结束后执行的动作。

如,一个用例结束后,必须运行另一个用例。

2.

需求分析建模

(1)领域模型—可用活动图描述

(2)定义系统的外部行为usecase图

参与者、用例、边界、参与者与用例通信

面向对象文档内容8第八页,共五十一页,编辑于2023年,星期二3.建立包图,用用例进行分组4.建立初始类图:确定属性和关联,常规操作

5.建立动态模型:确定类中的复杂操作

6.建立完整的类图

7.建立组件和展开图——面向对象的设计

8.进行数据存储设计

9.进行人机交互设计

10.写出伪码11.结论12.参考文献

(打印,装订好,学期末提交)

面向对象文档内容9第九页,共五十一页,编辑于2023年,星期二第一部分:基础篇10第十页,共五十一页,编辑于2023年,星期二什么是面向对象面向对象方法的形成面向对象方法的概念面向对象软件开发特点面向对象软件开发模型第1章面向对象技术概述11第十一页,共五十一页,编辑于2023年,星期二1.1什么是面向对象从程序设计方法的角度看,面向对象是一种新的程序设计范型(Paradigm),其基本思想是使用对象、类、继承、封装、聚合、关联、消息、多态性等基本概念来进行程序设计。自20世纪80年代以来,面向对象方法已深入到计算机软件领域的几乎所有分支。它不仅是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系,用什么观点来研究问题并进行问题求解,以及如何进行系统构造的软件方法学。从这个意义上讲:面向对象方法是一种运用对象、类、继承、封装、聚合、关联、消息、多态性等概念来构造系统的软件开发方法。12第十二页,共五十一页,编辑于2023年,星期二面向对象方法的基本思想:一、从现实世界中客观存在的事物出发来构造系统强调直接以问题域(现实世界)中的事物为中心来思考问题、认识问题,并根据这些事物的本质特征,把它们抽象为系统中的对象,作为系统的基本构成单位。这可以使系统直接映射问题域,保持问题域中事物及其相互关系的本来面貌。二、充分运用人类日常的思维方法强调运用人类在日常的逻辑思维中经常采用的思想方法与原则,例如抽象、分类、继承、聚合、封装、关联等等。这使得软件开发者能更有效地思考问题,并以其他人也能看得懂的方式把自己的认识表达出来。13第十三页,共五十一页,编辑于2023年,星期二用类和对象作为系统的基本构成单位。对象对应问题域中的事物,其属性和操作刻画了事物的静态特征和动态特征,它们之间的继承关系、聚合关系、关联和消息如实地表达了问题域中事物之间实际存在的各种关系。因此,无论系统的构成成分,还是通过这些成分之间的关系而体现的系统结构,都可直接地映射问题域。面向对象方法的主要特点:14第十四页,共五十一页,编辑于2023年,星期二1.2面向对象方法的形成软件开发:对事物的认识和描述,从认识论看面向对象方法的形成。15第十五页,共五十一页,编辑于2023年,星期二1.2.1传统软件开发方法的问题模型阶段性

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

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

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

图1-1经典问题“1”

17第十七页,共五十一页,编辑于2023年,星期二两个经典问题:问题“2”

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

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

18第十八页,共五十一页,编辑于2023年,星期二面向对象的程序设计语言面向对象的设计面向对象的分析

面向对象的发展过程1.2.2面向对象方法的由来解决问题的过程图1-3面向对象方法的发展19第十九页,共五十一页,编辑于2023年,星期二

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.2面向对象方法的由来20第二十页,共五十一页,编辑于2023年,星期二Objective-C(Cox1986,CoxandNovobilski1991)。

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

(

1980,贝尔实验室的BjarneStrousrup)

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

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

在SunWorld95年会上公布。Java=C++-复杂性和奇异性+安全性和可移植性。211.2.2面向对象方法的由来第二十一页,共五十一页,编辑于2023年,星期二1.3面向对象方法的概念面向对象概念的提出:

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

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

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

22第二十二页,共五十一页,编辑于2023年,星期二问题空间的对象:现实世界中任何实际存在的事物都是对象(

是对实体概念的一种描述)。物理实体软件实体概念实体1.3.1对象(Object)图1-4对象23第二十三页,共五十一页,编辑于2023年,星期二对象是一个具有封装了的数据结构和操作的实体,这个实体有一个标识它的名字,对外通过相应的接口,提供相应的服务。计算机程序中的对象是具有三个特征的实体:标识、状态、行为。方法空间的对象:

是对某个事物的抽象描述。Object::=(OID,DS,OS,MI)1.3.1对象(Object)24第二十四页,共五十一页,编辑于2023年,星期二对象特征

(对象的属性和行为)

属性

Atribute

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

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

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

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

26第二十六页,共五十一页,编辑于2023年,星期二

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

x:inty:int

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

ClassPoint{

intnx;//点的x坐标

intny;//点的y坐标

intnColor;//颜色值

voidmove(intx,inty);//

将当前点移到×、y处

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

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

intsetX();

intsetY();

}

Pointmypoint;//点类的一个对象

291.3.2类(Class)第二十九页,共五十一页,编辑于2023年,星期二类是一个支持继承的抽象数据类型;(4)类的作用类是创建(实例化)对象的模板,类是对对象的抽象;

类类似一张表,表内描述了数据和操作的封装体。类是一个命名空间,为类的泛化声明建立作用域;301.3.2类(Class)第三十页,共五十一页,编辑于2023年,星期二表示两个类之间是“isa”

,“islike”或“iskindof”关系。1.3.3继承(Inheritance)superclasssubclass继承使两个以上的类共享相同的属性和/或相同方法。继承提高了复用性。继承的各个类可形成层次结构。继承集中的属性,只能声明一次。操作可以被多次声明,只要声明相同。31第三十一页,共五十一页,编辑于2023年,星期二1.3.4消息(Message)消息包括的信息消息的发出者消息的接收者

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

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

对象完成它指定的操作。32第三十二页,共五十一页,编辑于2023年,星期二为不同的目的建立不同层次上的抽象,并将不同层次上的同一概念的两种元素联系起来的依赖关系,一个元素比另一个元素更详细。1.3.5抽象(Abstraction)

抽象是确定一个事物的本质特征的行为,使这个事物与其他事物区分开。抽象是自底向上的对几组事物观察,找出事物的共性,把具有共性的事物划分成一类。33第三十三页,共五十一页,编辑于2023年,星期二抽象类abstractclass

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

34第三十四页,共五十一页,编辑于2023年,星期二具体类

letterBody:StringCursor:IntegerGetNextSentence():StringRestCursor()EncryptedLetterEncoding:CodeKeygetNextSentence():String图1-5具体超类产生模糊性1.3.5抽象(Abstraction)

35第三十五页,共五十一页,编辑于2023年,星期二抽象类

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

36第三十六页,共五十一页,编辑于2023年,星期二1.3.6封装(Encapsulation)将数据(属性)和方法(服务)结合成一个独立的系统单位。隐藏了对象的内部细节:信息隐蔽(informationhiding)有一个清晰的边界有确定的接口(即协议)受保护的内部实现封装性的条件

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

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

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

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

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

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

Shape

LineTriangleSquareRectangleDraw()Shape*aShape;

Line*aLine;

aLine=newLine;

aShape=oLine;

aShape->draw();//

调用的是类Line的方法。为外界调用提供统一的接口,使对图形扩充成为可能。42第四十二页,共五十一页,编辑于2023年,星期二1.3.8永久对象(Persistentobject)就是对象的生存期可以超越程序的执行时间而长期存在的对象43第四十三页,共五十一页,编辑于2023年,星期二1.4面向对象软件开发特点1.4.1面向对象与面向过程方法的区别1.4.2面向对象与面向过程分析与设计的区别1.4.3面向对象与面向过程程序的区别44第四十四页,共五十一页,编辑于2023年,星期二1.4.1面向对象与面向过程方法的区别45

(1)

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

题。

(2)

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

对应。

面向对象方法是以对象(事物)代表求解问题的中心环节,是按解决问题的方式去思考问题。

面向对象的方法,是现实的问题空间与软件系统的解空间的近似和直接模拟,使人们对复杂系统的认识过程和程序的实现过程尽可能一致。

第四十五页,共五十一页,编辑于2023年,星期二

(3)

面向过程方法以函数过程和数据结构为中心建模,用计算机的术语描述问题。

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

温馨提示

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

评论

0/150

提交评论