【教学课件】第11章面向对象的软件开发方法.ppt

上传人:牧羊曲112 文档编号:5657770 上传时间:2023-08-06 格式:PPT 页数:44 大小:368.47KB
返回 下载 相关 举报
【教学课件】第11章面向对象的软件开发方法.ppt_第1页
第1页 / 共44页
【教学课件】第11章面向对象的软件开发方法.ppt_第2页
第2页 / 共44页
【教学课件】第11章面向对象的软件开发方法.ppt_第3页
第3页 / 共44页
【教学课件】第11章面向对象的软件开发方法.ppt_第4页
第4页 / 共44页
【教学课件】第11章面向对象的软件开发方法.ppt_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《【教学课件】第11章面向对象的软件开发方法.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第11章面向对象的软件开发方法.ppt(44页珍藏版)》请在三一办公上搜索。

1、1,第11章 面向对象的软件开发方法,2,一、面向对象的基本概念,“面向对象“:OO 代表着一种新的思维方式,代表着一种新的程序设计方法的潮流。“面向对象”追求软件系统对现实世界的直接模拟,尽量实现将现实世界中的事物直接映射到软件系统的解空间。面向对象的程序设计技术是以对象为基础,以消息驱动对象实现操作的一种全新的程序设计方法。,3,面向对象方法的由来,OO方法最早出现在挪威奥斯陆大学和挪威计算中心共同研制的仿真语言Simula67中。1980年随美国加州的Xerox研究中心推出的SmallTalk 80语言,使得OO方法得以较完善地实现。90年代初,OO方法和OOP语言开始成熟。2000,O

2、O方法成为软件开发的首选方法受到越来越多的程序设计人员的青睐。,4,什么是面向对象方法,传统的程序设计方法:从实际问题到求解模型(数学模型)的抽象都是围绕”怎样做?“去进行的。人认识事物的规律:当物体反映到头脑中后,变成意识,得到抽象的概念,及所谓逻辑世界。逻辑世界:由对象组成,表现现实世界中的某个具体的事物。对象有自己的属性和动作。面向对象(OO)方法的出发点:”是什么?“,即要求解的实际问题,它到底”是什么?“。,5,面向对象方法产生的背景,传统方法的历史功绩对”软件生产工程化“曾起过重要的促进作用,部分缓解了软件危机。传统方法的问题并不能完全消除软件危机生产率提高的幅度远不能满足需要软件

3、重用程度很低软件维护困难软件不能真正满足用户的需要面向对象方法(OO)就是在这种背景下诞生的。,6,现实世界与OO系统的对应关系,OO方法是将现实世界抽象为”对象是什么?“,所以说,OO方法是更高一级的抽象。它和人认识现实世界的方法是一致的。,7,面向对象程序设计OOP,OOP(OOProgramming)将数据及对数据的操作放在一起,作为一个相互依存、不可分割的整体来处理。OOP采用数据抽象和信息隐藏技术,它将对象和对对象的操作抽象成一种新的数据类型类。,8,OOP方法是通过增加软件的可扩充性和可重用性来改善并提高软件的生产率的。OOP的特点:继承了SP的优点(任务分解、模块化)抽象数据类型

4、继承性封装性可重用性,9,OO方法的4个要点,(1)客观世界由各种对象组成OO的软件系统也是由对象组成的;任何复杂的软件都是由简单的对象组合而成的;(2)所有对象都可以划分为不同的对象类(3)每个对象类有自己特定的数据和方法对象类具有层次结构;上层的类称为”父类“或”基类“,下层的类称为”子类“或”派生类“。子类可以继承父类的特性及操作;(4)对象之间通过传递”消息“互相联系(消息机制)OO方法=对象+类+继承性+消息机制,10,OO方法的主要优点,与人类习惯的思维方法一致从“是什么”开始,认识事物及其本质规律,主观随意性受到限制。稳定性好功能需求变化时,内在规律不变,因而不会引起软件系统结构

5、的整体变化可重用性好可维护性好,11,面向对象程序设计语言OOPL,OOPL两个显著的特征:抽象数据类型继承性OOPL要提供:特定的语法成分来保证和支持OOP;形式上要能够表现,语义上要能够处理;继承性、多态性和动态链接机制,使得类和类库成为可重用的程序模块。,12,OOPL的发展史,1)LISP语言 50年代末发展起来的一种符号处理语言,是一种人工智能语言。1979年推出Flavors是LISP的OOPL版本。2)Simula语言 60年代开发,在ALGOL60的基础上扩充。主要用于模拟。具有表加工等功能。,13,3)SmallTalk语言 第1个真正的OOPL,它体现了纯粹OOP设计思想。

6、它起源于Simula,是最成功的一个版本。4)C家族 C+是在C基础上扩充、增加了对象处理机制,将“类”看作是用户定义类型。由于C+的出现,才使OOPL越来越得到重视和广泛的应用。C+有许多种类:MS C+、Turbo C+、Borland C+和Visual C+等。5)其它语言的OO版本Turbo PASCAL、Object PASCAL、Visual Basic等。,14,实体和对象,对象 客观世界中的实体均可以抽象为问题空间中的对象。可以将要研究的任何事物作为对象;对象可以是具体实体,还可以表示抽象实体,例如规则、算法、事件等。,15,对象Object,对象的不同定义:1)从OOP的角

7、度看对象是具有相同状态的一组操作的集合2)从信息模拟的角度看对象是对属性值和操作的封装3)从存储的角度看对象是存储在计算机中的一块私有存储区4)形式化定义对象:=ID,MS,DS,MI ID 标识符 MS 操作集合 DS 数据结构 MI 消息集合,16,对象的三个特征,1)标识 用来区别其它对象;2)状态 用来描述对象的属性,用数据成员来表示;3)行为 对对象的操作,用于改变对象的状态;行为分两类:(1)自身所承受的操作(2)施加于其它对象的操作,17,对象特征举例,某人王东,男,1.80M,68kg,会修电器,可教计算机课。描述如下:1)标识:王东2)状态:性别:男 身高:1.80m 体重:

8、68kg3)功能:自身所承受的操作:回答身高、体重、性别 施加于其它对象的操作:修理电器、教计算机课程,18,对象封装,与录音机类似,对象是封装了数据和操作的黑匣子。数据描述了对象的状态属性表示对象的结构特征操作可以改变对象的状态通过传递消息实现对象的操作,19,对象的特点,以数据为中心 所设操作都与数据要做的处理有关。对象是主动的 传统的数据被动地等待对它进行处理;对象本身是进行处理的主体。实现了数据封装 对象的私有数据完全被封装在内部,对外不可见。要使用私有数据,只需知道数据的取值范围和可以对该数据施加的操作,无须知道数据的具体结构以及实现操作的算法。本质上具有并行性 不同对象各自独立地处

9、理自身的数据,彼此通过发消息传递信息完成通信。,20,类Class,“类”:对具有相同数据和操作的一组相似对象的定义。例如,“人“类,可以是黑人、白人,可以是教师、工人等,他们具有相同的人类特征和行为特征。类是OO技术中最重要的概念。OOP中所有的操作都可归结为对类的操作。类形成了一个具有特定功能的模块和一种代码共享的手段。,21,C+中对象类的定义举例,CLASS person Private:,结构特征数据成员,行为特征 成员函数,22,Public:,23,类层次,类的层次结构称为类层次。处于上层的称为“父类”或“基类”,处于下层的称为“子类”或“派生类”。,24,类层次举例,1)“人”

10、类是一个基类;2)工人、农民、学生、教师是“人”类的派生类;3)中学生、大学生、研究生是“学生”类的派生类4)研究生、助教、教授是”教师“类 的派生类。,工人,人,中学生,教师,农民,学生,大学生,研究生,助教,讲师,教授,父类,派生类,25,实例Instance,组成类的对象,都是该类的实例。类与实例之间的关系,可以看成是抽象与具体的关系。类是多实例的综合抽象,而实例又是类的个体实物。例如,“书”是一个对象类,而软件工程导论则是“书”类的一个实例。实际上类是建立对象时使用的样板,按照这个样板所建立的一个个具体的对象,就是类的实例例子。,26,消息Message,消息对象之间相互请求或相互协作

11、的途径,是要求某个对象执行其中某个功能操作的规格的说明。发送消息的对象成为发送者,接收消息的对象称为接收者。对象间的联系,只能通过传递消息来进行。对象也只能在收到消息时,才被激活。被激活后的对象代码将按消息中的命令去操作它的私有数据,完成要求的功能。,27,消息的定义,将操作送到目标对象的一种机制称为消息。它包括操作名的选择和传递、操作信息的变量有三个部分:接收消息的对象消息选择符变元,28,消息的性质,同一对象可接收不同形式的多个消息,产生不同的响应;即 1个对象 M个消息 M个动作相同形式的消息可以送给不同的对象,所做出的响应可以是截然不同的;即 M个对象 1个消息 M个动作消息的发送可以

12、不考虑具体的接收者,对象可以响应消息,也可以对消息不予理会,对消息的响应并不是必须的。,29,公有消息和私有消息,公有消息 在某个对象的一批消息中,由外界对象直接向它发送的消息,称为公有消息。私有消息 在某个对象的一批消息中,不对外发放,由对象自己向本身发送的消息,称为私有消息。,30,消息类型,可返回对象的内部状态的消息;可改变对象的内部状态的消息;可以做一些特定的操作,改变系统状态的消息。,31,事件(Event),当用户对某一对象有操作意图的时候,通过外部设备(鼠标、键盘等)输入必要的信息,计算机不但能够判断出事件的性质,而且能够判断出事件的特征,从而给对象一个准确的刺激,使对象进行预定

13、的反应行为。刺激对象的方式很多;例如,单击鼠标左键,计算机将接收到一组信号,确定鼠标单击事件的发生,而事件的特征,包括鼠标的位置、鼠标的激活键等信息也同时被计算机接收,与对象联系起来,于是启动对象中对的事件处理程序,进行事件的处理。,32,方法(Method),对对象的处理称为方法或操作。它包括控制和操作过程。方法描述了对象执行操作的算法、响应消息的方法,在C+中称为成员函数。例如:ADD子公司()Print(),33,属性(Attribute),对象中的数据称为属性,它是对实体所具有的性质大抽象。C+中把属性称之为数据成员。例如:char name20;int age;,34,二、面向对象方

14、法的特点,抽象技术封装技术继承机制,35,1.抽象技术(Abstraction),抽象是指将实际问题化简为计算机能处理和表示的形式。OO方法比其它已有方法从应用设计到解决方案有更高的抽象性和更好的对应性。,36,2.封装技术(Encapsulation),1)封装是指将数据及与这些数据有关的操作集合放在一起,形成一个能动的实体对象(黑匣子)。2)用户不必知道对象行为的实现细节,只要根据对象提供的外部特征及接口来访问对象。3)封装性一种信息隐藏技术,其目的是将对象的设计者和对象的使用者分开。,37,4)封装性的体现具有清楚的边界 对象的数据结构和操作限定与其中具有统一的外部接口它描述了对象之间的

15、相互作用、请求和响应代码保护 对象内部的实现代码受到封装壳的保护,其它对象不能直接修改本对象所拥有的数据和代码。5)封装机制的目的将对象的使用者和设计者分开;使用者不必知道对象行为实现的细节,只需用设计者提供的消息命令对象去实现其动作。,38,STUDENT对象类举例,class student private:私有功能:char*name;int mark;char*major;void changemark();public:公有功能:char*getname();char*getmajor():protected:被保护功能:int getmark();,39,3.继承机制(Inheri

16、tance),1)继承表达对象类之间的相互关系,它使得某类对象可以继承另一类对象的特征和能力。2)继承性的含义新的对象自动继承该类的特征3)继承性的类型 继承传递性 子类自动继承其父类的特征;对多层类结构,下层子类可以继承其上各层父类的特征;多重继承性 子类可以从它的多个父类(超类)中继承它们的特征,40,继承性举例,继承传递:大学生可以继承“人”和“学生”的特征多重继承:在职研究生既可以继承“学生”的特征,又可以继承“教师”的特征,大学生,专业:班级:,学生:,学生:9601078校名:西安交通大学,大学生:,专业:计算机班级:962班,41,具有继承关系的对象的特性,对象类间具有共享特征(

17、包括数据和程序代码的共享)对象类间具有细微的差别或新增部分(包括非共享的程序代码和数据)对象类间具有层次结构。继承所具有的作用有两个方面:减少代码冗余通过协调性减少相互之间的接口和界面。,42,继承的分类,1)从继承源上划分为:单继承和多继承2)从继承内容上划分(1)取代继承 徒弟掌握了师傅所有的技术,在任何需要师傅的地方都可以由徒弟来代替;(2)包含继承“水果”是一类对象,“苹果”是一种特殊的水果。“苹果”继承了“水果”的所有特征;任何一个苹果都是一个水果,即苹果包含了水果具有的所有特征;,43,(3)受限继承“驼鸟”是一种特殊的鸟,它不能继承鸟会飞的特征;(4)特化继承“工程师”是一类特殊的人,他们比一般人具有更多的特有信息。,44,继承性的优点,能清晰体现相关类间的层次结构关系;可大大增加代码的重用性;通过增强一致性来减少模块见的接口和界面,大大增加可维护性;是自动传播代码的有利工具在一般类基础上构造、建立、扩充新类的最有效的手段。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号