《面向对象技术基础篇课件.ppt》由会员分享,可在线阅读,更多相关《面向对象技术基础篇课件.ppt(51页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、面向对象技术基础面向对象技术基础篇篇第1页,此课件共51页哦课程特点课程特点面向对象是一种全新的思考方式面向对象是一种全新的思考方式该课程以概念为基础该课程以概念为基础,为主线为主线注重建模和视图注重建模和视图提供统一建模语言提供统一建模语言UML2第2页,此课件共51页哦课程简介课程简介面向对象技术概述面面向向对对象象的的软软件件开开发发 面向对象的设计 需求与用况技术面向对象的分析 面向对象的编程 面向对象的测试UML建建模模统一建模语言UML3第3页,此课件共51页哦l 深入理解面向对象的概念深入理解面向对象的概念;l 掌握面向对象的建模过程掌握面向对象的建模过程;l 掌握建模语言掌握建
2、模语言UML;l 设计健壮的、可扩展的、可复用的、设计健壮的、可扩展的、可复用的、可维护的软件系统。可维护的软件系统。课程目的课程目的4第4页,此课件共51页哦1.1.单词背诵系统单词背诵系统2.2.企业人事管理系统企业人事管理系统3.3.教学管理系统教学管理系统4.4.基于图像的试卷识别系统基于图像的试卷识别系统5.5.网上售书平台网上售书平台6.6.公寓管理系统公寓管理系统7.7.桌面搜索引擎桌面搜索引擎8.8.学生成绩综合分析系统学生成绩综合分析系统实践作业实践作业 分析和设计下列问题之一分析和设计下列问题之一,并写出文档并写出文档。5第5页,此课件共51页哦9.9.城市停车管理系统城市
3、停车管理系统10.10.超市销售管理系统超市销售管理系统11.11.医药超市管理系统医药超市管理系统12.12.幼儿预防管理系统幼儿预防管理系统13.13.教学网站学生管理系统教学网站学生管理系统14.14.高校智能排课管理系统高校智能排课管理系统15.15.基于搜索引擎的网络图片爬虫系统基于搜索引擎的网络图片爬虫系统16.16.自选(先提交老师审题!)自选(先提交老师审题!)实践作业实践作业6第6页,此课件共51页哦正文内容正文内容:1.需求分析需求分析文字描述文字描述 (1)功能性需求功能性需求关于系统做什么的描述;关于系统做什么的描述;(2)非功能性需求非功能性需求关于系统约束的描述;关
4、于系统约束的描述;(性能、可靠性、环境等性能、可靠性、环境等)(3)用例的文字描述用例的文字描述#用例名称;用例名称;#用例的简要说明:该用例的作用;用例的简要说明:该用例的作用;如如,买车票用例供客户浏览客户航班信息、查询买车票用例供客户浏览客户航班信息、查询 和用信用卡买票和用信用卡买票面向对象文档内容7第7页,此课件共51页哦#前提条件:前提条件:用例开始前必须满足的条件用例开始前必须满足的条件,可能是另一个可能是另一个 己执行的用例己执行的用例,或用户具有运行当前使用用例权限;或用户具有运行当前使用用例权限;#主流事件和其他事件流:主流事件和其他事件流:从用户角度关注做什么从用户角度关
5、注做什么,事件事件 流描述执行用例;流描述执行用例;#事后条件事后条件(也可缺省也可缺省):用例结束后执行的动作。用例结束后执行的动作。如如,一个用例结束后一个用例结束后,必须运行另一个用例。必须运行另一个用例。2.需求分析建模需求分析建模 (1)领域模型领域模型可用活动图描述可用活动图描述 (2)定义系统的外部行为定义系统的外部行为use case图图 参与者、用例、边界、参与者与用例通信参与者、用例、边界、参与者与用例通信 面向对象文档内容8第8页,此课件共51页哦 3.建立包图建立包图,用用例进行分组,用用例进行分组 4.建立初始建立初始类图类图:确定属性和关联:确定属性和关联,常规操作
6、常规操作 5.建立动态模型建立动态模型:确定类中的复杂操作:确定类中的复杂操作 6.建立完整的类图建立完整的类图 7.建立组件和展开图建立组件和展开图面向对象的设计面向对象的设计 8.进行数据存储设计进行数据存储设计 9.进行人机交互设计进行人机交互设计 10.写出伪码写出伪码 11.结论结论 12.参考文献参考文献 (打印,装订好,打印,装订好,学期末提交学期末提交)面向对象文档内容9第9页,此课件共51页哦第一部分:基础篇第一部分:基础篇10第10页,此课件共51页哦l 什么是面向对象什么是面向对象l 面向对象方法的形成面向对象方法的形成l 面向对象方法的概念面向对象方法的概念l 面向对象
7、软件开发特点面向对象软件开发特点l 面向对象软件开发模型面向对象软件开发模型第第1 1章章 面向对象技术概述面向对象技术概述11第11页,此课件共51页哦1.1 1.1 什么是面向对象什么是面向对象从从程程序序设设计计方方法法的的角角度度看看,面面向向对对象象是是一一种种新新的的程程序序设设计计范范型型(Paradigm)(Paradigm),其其基基本本思思想想是是使使用用对对象象、类类、继继承承、封封装装、聚聚合合、关关联联、消消息息、多多态态性性等等基基本本概概念念来来进行程序设计。进行程序设计。自自2020世纪世纪8080年代以来,面向对象方法已深入到计算机软件领域的几乎所有分支。它不
8、仅年代以来,面向对象方法已深入到计算机软件领域的几乎所有分支。它不仅是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系,用什么观点来研究问题并进行问题求解,以及如何进行系统构造的软件方法学。关系,用什么观点来研究问题并进行问题求解,以及如何进行系统构造的软件方法学。从从这这个个意意义义上上讲讲:面面向向对对象象方方法法是是一一种种运运用用对对象象、类类、继继承承、封封装装、聚聚合合、关关联联、消消息息、多多态态性性等等概概念念来来构构造造系系统统的的软软件件开开发发方法。方法。12第12页
9、,此课件共51页哦面向对象方法的基本思想:面向对象方法的基本思想:一、从现实世界中客观存在的事物出发来构造系统一、从现实世界中客观存在的事物出发来构造系统强强调调直直接接以以问问题题域域(现现实实世世界界)中中的的事事物物为为中中心心来来思思考考问问题题、认认识识问问题题,并并根根据据这这些些事事物物的的本本质质特特征征,把把它它们们抽抽象象为为系系统统中中的的对对象象,作作为为系系统统的的基基本本构构成成单单位位。这这可可以以使使系系统统直直接接映映射射问问题题域域,保保持持问问题题域域中中事事物物及及其其相相互互关关系系的本来面貌。的本来面貌。二、充分运用人类日常的思维方法二、充分运用人类
10、日常的思维方法强强调调运运用用人人类类在在日日常常的的逻逻辑辑思思维维中中经经常常采采用用的的思思想想方方法法与与原原则则,例例如如抽抽象象、分分类类、继继承承、聚聚合合、封封装装、关关联联等等等等。这这使使得得软软件件开开发发者者能能更更有有效效地地思思考考问问题题,并并以以其其他他人人也也能能看看得得懂懂的的方方式式把把自自己己的的认认识识表表达达出出来。来。13第13页,此课件共51页哦用用类类和和对对象象作作为为系系统统的的基基本本构构成成单单位位。对对象象对对应应问问题题域域中中的的事事物物,其其属属性性和和操操作作刻刻画画了了事事物物的的静静态态特特征征和和动动态态特特征征,它它们
11、们之之间间的的继继承承关关系系、聚聚合合关关系系、关关联联和和消消息息如实地表达了问题域中事物之间实际存在的各种关系。如实地表达了问题域中事物之间实际存在的各种关系。因因此此,无无论论系系统统的的构构成成成成分分,还还是是通通过过这这些些成成分分之之间间的关系而体现的系统结构,都可直接地映射问题域。的关系而体现的系统结构,都可直接地映射问题域。面向对象方法的主要特点:面向对象方法的主要特点:14第14页,此课件共51页哦1.2 1.2 面向对象方法的形成面向对象方法的形成软件开发:对事物的认识和描述,从认识论看面向软件开发:对事物的认识和描述,从认识论看面向对象方法的形成。对象方法的形成。15
12、第15页,此课件共51页哦1.2.1 1.2.1 传统软件开发方法的问题传统软件开发方法的问题模型阶段性模型阶段性 模型的顺序性模型的顺序性以功能为主的方法,功能易变以功能为主的方法,功能易变 模块的封装性、可重用性差模块的封装性、可重用性差,接口易变接口易变 没有很好解决软件开发中的两个经典问题没有很好解决软件开发中的两个经典问题16第16页,此课件共51页哦大峡谷大峡谷北端北端大峡谷大峡谷南端南端数据模型数据模型处理模型处理模型科罗拉科罗拉多河多河传统方法,传统方法,数据和功能各自描述系统的一部分,两种模型数据和功能各自描述系统的一部分,两种模型表示角度不同,若合起来,对一致性、精确性难以
13、验证。表示角度不同,若合起来,对一致性、精确性难以验证。OO的对象模型解决了此问题。的对象模型解决了此问题。两个经典问题两个经典问题:问题问题“1”1”图图1-1 1-1 经典问题经典问题“1”1”17第17页,此课件共51页哦两个经典问题两个经典问题:问题问题“2”2”分析模型分析模型设计模型设计模型大峡谷大峡谷北端北端科罗拉科罗拉多河多河大峡谷大峡谷南端南端传统方法,传统方法,分析和设计两个阶段描述工具不同,需要转换,重分析和设计两个阶段描述工具不同,需要转换,重新建立模型,向程序员解释编程要求。新建立模型,向程序员解释编程要求。OO方法的设计是对方法的设计是对OOA的扩展。的扩展。图图1
14、-2 1-2 经典问题经典问题“2”2”18第18页,此课件共51页哦面向对象的程序设计语言面向对象的程序设计语言面向对象的设计面向对象的设计 面向对象的分析面向对象的分析 面面向向对对象象的的发发展展过过程程1.2.2 1.2.2 面向对象方法的由来面向对象方法的由来解解决决问问题题的的过过程程图图1-3 1-3 面向对象方法的发展面向对象方法的发展19第19页,此课件共51页哦l Simula(Dahl and Nygaad)模拟现实世界对象的行为。模拟现实世界对象的行为。60年代末,挪威奥斯陆大学和挪威计算中心研制的创建了 第一个OO系统。l Ada(G.Booch)具有对象的特征,是一
15、个基于对象的语言。具有对象的特征,是一个基于对象的语言。70年代,G.Booch在研究Ada软件开发中,提出了OO思想,创建了Ada的程序包。l Smalltalk(美国美国Xerox Parc研究中心研究中心A.Key研制研制)72年,推出Smalltalk72-有对象的概念;76年,推出Smalltalk76-有类的概念;81年,推出Smalltalk80和环境-全面体现了OO程序设计语 言的特征。1.2.2 1.2.2 面向对象方法的由来面向对象方法的由来20第20页,此课件共51页哦l Objective-C(Cox 1986,Cox and Novobilski 1991)。支持多态
16、、信息隐敝。l C+(1980,贝尔实验室的,贝尔实验室的Bjarne Strousrup)支持抽象、继承、自动引用、动态绑定、操作符重载等,但维护困难。l Eiffel(Myeer 1990)有断言,解决正确性、健壮性、可移植性、效率等。l Java(Sun 公司公司 James Gosling 1990)在Sun World95年会上公布。Java=C+-复杂性和奇异性+安全性和可移植性。211.2.2 1.2.2 面向对象方法的由来面向对象方法的由来第21页,此课件共51页哦1.3 1.3 面向对象方法的概念面向对象方法的概念面向对象概念的提出面向对象概念的提出:使描述问题的问题空间和解
17、决问题的方法空间一致使描述问题的问题空间和解决问题的方法空间一致(概念上、处理行为上概念上、处理行为上一致一致)按问题领域的按问题领域的基本事物基本事物实现自然分割实现自然分割 按人们按人们思维方式思维方式建立问题域模型建立问题域模型 演绎思维演绎思维(从一般到特殊从一般到特殊)归纳思维归纳思维(从特殊到一般从特殊到一般)为此,必须建立直接表现为此,必须建立直接表现组成问题域的事物,及这些事物间相组成问题域的事物,及这些事物间相互联系的概念互联系的概念,建立适应人们一般思维方式的描述范式。,建立适应人们一般思维方式的描述范式。CoadCoad和和YourdonYourdon给出了面向对象的定义
18、:给出了面向对象的定义:面向对象面向对象=对象对象+类类+继承继承+通信通信 22第22页,此课件共51页哦问题空间的对象问题空间的对象:现实世界中任何实际存在的事物都是对现实世界中任何实际存在的事物都是对象象(是对实体概念的一种描述是对实体概念的一种描述)。物理实体物理实体软件实体软件实体概念实体概念实体1.3.1 1.3.1 对象对象(Object)图图1-4 1-4 对象对象23第23页,此课件共51页哦 对象是一个具有封装了的数据结构和操作的实体,这对象是一个具有封装了的数据结构和操作的实体,这 个实体有一个标识它的名字,对外通过相应的接口,个实体有一个标识它的名字,对外通过相应的接口
19、,提供相应的服务。计算机程序中的对象是具有三个特提供相应的服务。计算机程序中的对象是具有三个特 征的实体征的实体:标识、状态、行为。标识、状态、行为。方法空间方法空间的对象的对象:是对某个事物的抽象描述。是对某个事物的抽象描述。Object:=(OID,DS,OS,MI)1.3.1 1.3.1 对象对象(Object)24第24页,此课件共51页哦对象特征对象特征 (对象的属性和行为对象的属性和行为)属性属性 Atribute 描述对象描述对象“静态静态”(结构结构)特征的一个数据项;特征的一个数据项;属性是对象知道的事情;描述对象的当前状态。属性是对象知道的事情;描述对象的当前状态。操作操作
20、Operation描述对象描述对象“动态动态”(行为行为)特征的一个操作序列特征的一个操作序列;操作是调用对象执行的转换或查询的规格说明;操作是调用对象执行的转换或查询的规格说明;有可能改变对象的状态;有可能改变对象的状态;操作操作是方法的抽象说明。是方法的抽象说明。说明对象在什么条件下是可行的说明对象在什么条件下是可行的。方法方法Method对象完成的事情。是操作的实现或执行操作的函数对象完成的事情。是操作的实现或执行操作的函数或过程。是实现类的行为的过程抽象。或过程。是实现类的行为的过程抽象。规格规格25第25页,此课件共51页哦思考思考:l 属性完全相同的两个事物属性完全相同的两个事物,
21、是否是同一个对象是否是同一个对象?举例。举例。两个教师姓名和职称都相同两个教师姓名和职称都相同,但但它们却是两个不同的对象。它们却是两个不同的对象。l所有的对象都是独立的实体所有的对象都是独立的实体,都有其唯一的标识。对象都有其唯一的标识。对象 之间的区别是由它们之间的区别是由它们固有的存在性所决定的固有的存在性所决定的,而与它们而与它们 的特征是否相同无关。的特征是否相同无关。26第26页,此课件共51页哦 类是具有相同属性和服务的一组对象的集合,它为属于该类是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述。类的全部对象提供了统一的抽象描述。1.3.2 1.3
22、.2 类类(Class)(1)(1)类的定义类的定义Class:=(ID,ATT,OPE,ITF,INH)其中其中IDID类名,类名,ATTATT属属性集,性集,OPEOPE操作集,操作集,ITFITF接口消息集,接口消息集,INHINH类的继承性集。类的继承性集。(2)(2)类和对象类和对象类可以是对象,但对象不是类;类可以是对象,但对象不是类;类是对象的抽象描述类是对象的抽象描述;对象是类的实例;对象是类的实例;实例:实例:InstanceInstance具有身份和值的独立实体具有身份和值的独立实体27第27页,此课件共51页哦概念层的类概念层的类Rectangleheightwidthg
23、etArearesizeRectangleheight:intwidth:intgetArea():intresize(int,int)Rectangleheightwidth对象实例对象实例p:Rectangleheight=10 width=20q:Rectangleheight=15 width=25(3)(3)类的描述几种情况类的描述几种情况说明层的类说明层的类实现层的类实现层的类281.3.2 1.3.2 类类(Class)第28页,此课件共51页哦例如绘图中的点类:例如绘图中的点类:x:inty:int move()getX()getY()setX()setY()Point用用Ja
24、vaJava定义点类:定义点类:Class Point Class Point int nx;/int nx;/点的点的x x坐标坐标 int ny;/int ny;/点的点的y y坐标坐标 int nColor;/int nColor;/颜色值颜色值 void move(int x,int y);/void move(int x,int y);/将当前点移到将当前点移到、y y处处 int getX();/int getX();/获当前点获当前点X X坐标坐标 int getY();/int getY();/获当前点获当前点Y Y坐标坐标 int setX();int setX();int
25、setY();int setY();Point mypoint;/Point mypoint;/点类的一个对象点类的一个对象 291.3.2 1.3.2 类类(Class)第29页,此课件共51页哦l类是一个支持继承的抽象数据类型;类是一个支持继承的抽象数据类型;(4)(4)类的作用类的作用l类是创建类是创建(实例化实例化)对象的模板,类是对对象的抽象;对象的模板,类是对对象的抽象;l类类似一张表,表内描述了数据和操作的封装体。类类似一张表,表内描述了数据和操作的封装体。l类是一个命名空间类是一个命名空间,为类的泛化声明建立作用域;为类的泛化声明建立作用域;301.3.2 1.3.2 类类(C
26、lass)第30页,此课件共51页哦l表示两个类之间是表示两个类之间是 “is ais a”,“is likeis like”或或“is kind is kind ofof”关系。关系。1.3.3 1.3.3 继承继承(Inheritance)superclasssubclassl继承使两个以上的类共享相同的属性和继承使两个以上的类共享相同的属性和/或相同方法。或相同方法。l继承提高了复用性。继承提高了复用性。l继承的各个类可形成层次结构。继承的各个类可形成层次结构。l继承集中的继承集中的属性,只能声明一次属性,只能声明一次。操作可以被多次声明操作可以被多次声明,只,只要声明相同。要声明相同。
27、31第31页,此课件共51页哦1.3.4 1.3.4 消息消息(Message)消消息息包包括括的的信信息息消息的发出者消息的发出者消息的接收者消息的接收者 要求的服务要求的服务 输入的信息输入的信息 输出输出(回答回答)的信息的信息 协议对象间通信要遵守条件协议对象间通信要遵守条件 消息是一个对象向另一个对象发出的服务请求消息是一个对象向另一个对象发出的服务请求(操作的(操作的 请求、执行方法的请求),要求系统的某个请求、执行方法的请求),要求系统的某个 对象完成它对象完成它 指定的操作。指定的操作。32第32页,此课件共51页哦l为不同的目的建立不同层次上的抽象,为不同的目的建立不同层次上
28、的抽象,并将不同层次上的并将不同层次上的同一概念的两种元素联系起来的依赖关系,一个元素同一概念的两种元素联系起来的依赖关系,一个元素比另一个元素更详细。比另一个元素更详细。1.3.5 1.3.5 抽象抽象(Abstraction)l抽象是确定一个事物的本质特征的行为,使这个事物与其抽象是确定一个事物的本质特征的行为,使这个事物与其他事物区分开他事物区分开。l抽象是自底向上的对几组事物观察,找出事物的共性,把抽象是自底向上的对几组事物观察,找出事物的共性,把具有共性的事物划分成一类具有共性的事物划分成一类。33第33页,此课件共51页哦抽象类抽象类 abstract classabstract
29、class 抽象类是不能被直接实例化的类,即它没有直接的实例。抽象类是不能被直接实例化的类,即它没有直接的实例。对象是对问题域中某些事物的抽象;对象是对问题域中某些事物的抽象;类是对对象的一个抽象;类是对对象的一个抽象;1.3.5 1.3.5 抽象抽象(Abstraction)34第34页,此课件共51页哦具体类具体类 letterBody:StringCursor:IntegerGetNextSentence():StringRestCursor()EncryptedLetterEncoding:CodeKeygetNextSentence():String图图1-5 1-5 具体超类产生模
30、糊性具体超类产生模糊性1.3.5 1.3.5 抽象抽象(Abstraction)35第35页,此课件共51页哦抽象类抽象类 图图1-6 1-6 抽象超类避免模糊性抽象超类避免模糊性LetterBody:StringCursor:IntegergetNextSentence():StringRestCursor()EncryptedLetterEncoding:CodeKeygetNextSentence():StringNonEncryptedLettergetNextSentence():String1.3.5 1.3.5 抽象抽象(Abstraction)36第36页,此课件共51页哦1.
31、3.6 1.3.6 封装封装(Encapsulation)将数据将数据(属性属性)和方法和方法(服务服务)结合成一个独立的系统单位。结合成一个独立的系统单位。隐藏了对象的内部细节:信息隐蔽隐藏了对象的内部细节:信息隐蔽(information hiding)有一个清晰的边界有一个清晰的边界有确定的接口有确定的接口(即协议)(即协议)受保护的内部实现受保护的内部实现封装性的条件封装性的条件 售报亭售报亭报刊名称报刊名称报刊定价报刊定价销售总额销售总额(钱租钱租)报刊零售报刊零售款货清点款货清点图图1-7 1-7 售报亭对象售报亭对象37第37页,此课件共51页哦封装的意义封装的意义l表达事物的静
32、态特征和动态特征表达事物的静态特征和动态特征(是事物不可分割的两个侧面是事物不可分割的两个侧面)。l封装性使我们只要注意该对象对外呈现什么行为封装性使我们只要注意该对象对外呈现什么行为(做什做什么么),而不关心内部的实现细节,而不关心内部的实现细节 (怎么做怎么做)。可以避免外部入。可以避免外部入侵侵,提高软件的可维护性、可修改性。提高软件的可维护性、可修改性。l描述系统中的功能是如何划分的。描述系统中的功能是如何划分的。38第38页,此课件共51页哦1.3.7 1.3.7 多态性多态性(Polymorphism)在面向对象中在面向对象中,多态性使得同一个属性或服务在一般类及其多态性使得同一个
33、属性或服务在一般类及其各个特殊类中具有不同的语义。各个特殊类中具有不同的语义。说说明明 多态性表示了对象属于多个类的能力。多态性表示了对象属于多个类的能力。抽象操作是多态的抽象操作是多态的,抽象操作可以在不同的类中按不同方抽象操作可以在不同的类中按不同方式执行。式执行。多态性增加了多态性增加了OOOO的灵活性,减少冗余信息的灵活性,减少冗余信息,提高可重用性,提高可重用性,可扩展性。可扩展性。39第39页,此课件共51页哦在在OOOO语言中,多态性的实现与下列概念有关语言中,多态性的实现与下列概念有关:同样的操作可用于一个类型及其子类型。在子类中,对继承类的属性同样的操作可用于一个类型及其子类
34、型。在子类中,对继承类的属性或服务进行重新定义。或服务进行重新定义。动态绑定动态绑定(dynamic binding)程序在运行时,根据对象接受的消息,动态地确定要连到哪一段代码上。程序设计程序在运行时,根据对象接受的消息,动态地确定要连到哪一段代码上。程序设计中,运行期决定对象和分配存储能力为动态绑定。中,运行期决定对象和分配存储能力为动态绑定。参数参数多态多态(parametric)参数多态是指一个可参数化的类模板中包含的操作所涉及的类型必须参数多态是指一个可参数化的类模板中包含的操作所涉及的类型必须用类型参数实例化。用类型参数实例化。包含多态包含多态(inclusion)40第40页,此
35、课件共51页哦多态性显著提高了多态性显著提高了软件的可重用性和软件的可重用性和可扩充性。可扩充性。用户可以发送一个通用的消息,而实现时的细节则由接收对象自行决定,这样用户可以发送一个通用的消息,而实现时的细节则由接收对象自行决定,这样同一消息可以调用不同的方法,增加了系统的同一消息可以调用不同的方法,增加了系统的灵活性灵活性。经理经理Pay()推销员推销员Pay()技工技工Pay()销售部经理销售部经理Pay()雇员雇员Pay()41包含多态包含多态(inclusioninclusion)第41页,此课件共51页哦ShapeShape类类图图1-8 1-8 画图系统中类的继承关系画图系统中类的
36、继承关系 各种图形具有共同的属性和操作各种图形具有共同的属性和操作:颜色、线型、旋转、移动。但在不同颜色、线型、旋转、移动。但在不同图形中对图形中对Draw的描绘虽然不同的描绘虽然不同,外外界都可以采用以下方式调用界都可以采用以下方式调用:Shape LineTriangleSquare RectangleDraw()Shape*aShape;Line*aLine;aLine=new Line;aShape=oLine;aShape-draw();/调用的是类Line的方法。为外界调用提供统一的接口为外界调用提供统一的接口,使对图形扩充成为可能。使对图形扩充成为可能。42第42页,此课件共51
37、页哦1.3.8 1.3.8 永久对象永久对象(Persistent object)就是对象的生存期可以超越程序的执行时间而长就是对象的生存期可以超越程序的执行时间而长期存在的对象期存在的对象43第43页,此课件共51页哦1.4 1.4 面向对象软件开发特点面向对象软件开发特点1.4.1 1.4.1 面向对象与面向过程方法的区别面向对象与面向过程方法的区别1.4.2 1.4.2 面向对象与面向过程分析与设计的区别面向对象与面向过程分析与设计的区别1.4.3 1.4.3 面向对象与面向过程程序的区别面向对象与面向过程程序的区别44第44页,此课件共51页哦1.4.1 1.4.1 面向对象与面向过程
38、方法的区别面向对象与面向过程方法的区别45 (1)面向过程方法是开发人员按计算机的结构去思考问面向过程方法是开发人员按计算机的结构去思考问 题。题。(2)面向过程方法是开发人员在问题空间和解空间进行面向过程方法是开发人员在问题空间和解空间进行 对应。对应。面向对象方法是以对象面向对象方法是以对象(事物事物)代表求解问题的中代表求解问题的中 心环节心环节,是按解决问题的方式去思考问题。是按解决问题的方式去思考问题。面向对象的方法面向对象的方法,是现实的问题空间与软件系统的是现实的问题空间与软件系统的 解空间的近似和直接模拟解空间的近似和直接模拟,使人们对复杂系统的认使人们对复杂系统的认 识过程和
39、程序的实现过程尽可能一致。识过程和程序的实现过程尽可能一致。第45页,此课件共51页哦 (3)面向过程方法以函数过程和数据结构为中心建模面向过程方法以函数过程和数据结构为中心建模,用用 计算机的术语描述问题。计算机的术语描述问题。面向对象的方法是对求解问题本身建模面向对象的方法是对求解问题本身建模,用问题本用问题本 身的术语描述问题。身的术语描述问题。1.4.1 1.4.1 面向对象与面向过程方法的区别面向对象与面向过程方法的区别46第46页,此课件共51页哦函数和函数和过程过程举例举例:某所大学信息系统的设计某所大学信息系统的设计数据数据图图1-9 1-9 结构化方法结构化方法结构化的方法:
40、结构化的方法:将定义数据库的布局和程序的设计将定义数据库的布局和程序的设计来访问这些数据。来访问这些数据。数据库数据库中存有关于学生、教授、教中存有关于学生、教授、教室以及课程的信息。室以及课程的信息。程序程序可以让用户登记学生的选课情况,可以让用户登记学生的选课情况,分派教授授课,安排授课教室等。程分派教授授课,安排授课教室等。程序可以访问并更新数据库序可以访问并更新数据库。47第47页,此课件共51页哦对象对象对象对象对象对象对象对象图图1-10 1-10 面向对象方法面向对象方法面向对象的方法:面向对象的方法:学生、教授、教室和课程学生、教授、教室和课程等被当成等被当成对象来考虑。对象来
41、考虑。定义一组能进行交互的定义一组能进行交互的类类(类,(类,class是相似对象的一种通用表示)。是相似对象的一种通用表示)。这样的类将包括功能(程序)这样的类将包括功能(程序)和数据的抽象。和数据的抽象。举例举例:某所大学信息系统的设计某所大学信息系统的设计48第48页,此课件共51页哦1.4.2 1.4.2 面向对象与面向过程分析与设计的区别面向对象与面向过程分析与设计的区别图书馆信息系统图书馆信息系统CatalogLibrarianBookLibrarySystemRecordLoansAddResourcesReportFines图图1-11 1-11 按对象概念分解按对象概念分解图
42、图1-12 1-12 按功能或过程分解按功能或过程分解面向对象面向对象分析与设计分析与设计面向过程的面向过程的分析与设计分析与设计 分而治之分而治之分析和设计的采用一致的概念、分析和设计的采用一致的概念、原则、表示法原则、表示法49第49页,此课件共51页哦1.4.3 1.4.3 面向对象与面向过程程序的区别面向对象与面向过程程序的区别面向对象的程序面向对象的程序=对象对象+消息消息 存存款款取取款款图图1-14 1-14 面向对象的储蓄处理事务面向对象的储蓄处理事务银行账户对象银行账户对象数据和施加在其上的操作分离;数据和施加在其上的操作分离;代码按过程组织的代码按过程组织的,每个过程每个过
43、程操作不同类型的数据。操作不同类型的数据。外部消息外部消息利息结算利息结算利息结算利息结算存款存款取款取款账户账户余额余额账户账户余额余额图图1-13 1-13 面向过程的储蓄处理事务面向过程的储蓄处理事务 在面向对象中在面向对象中,是在数据抽象内来组是在数据抽象内来组 织过程即代码是按类组织的织过程即代码是按类组织的,每个类每个类 包含对该类实例进行操作的过程。包含对该类实例进行操作的过程。面向过程的程序面向过程的程序=数据结构十算法数据结构十算法50第50页,此课件共51页哦1.5 1.5 面向对象软件开发模型面向对象软件开发模型1.5.1 1.5.1 喷泉模型喷泉模型1.5.2 OO1.5.2 OO软件开发生命周期软件开发生命周期51第51页,此课件共51页哦