面向对象分析与设计精选PPT课件.ppt
《面向对象分析与设计精选PPT课件.ppt》由会员分享,可在线阅读,更多相关《面向对象分析与设计精选PPT课件.ppt(70页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、关于面向对象分析与设计第1页,此课件共70页哦第第1章章 面向对象技术概论面向对象技术概论本章的学习目的本章的学习目的 由于由于面向对象技术比传统的软件开发技术面向对象技术比传统的软件开发技术能更自然和有效地开发软件,解决软件危机,因能更自然和有效地开发软件,解决软件危机,因此它此它已成为现代软件企业广为采用的一项有效技已成为现代软件企业广为采用的一项有效技术,所以当今学习面向对象技术具有非常重要的术,所以当今学习面向对象技术具有非常重要的意义。意义。教学教学目的是使学生目的是使学生通过本章的通过本章的学习学习能够理解能够理解和和掌握掌握面向对象技术的基本概念和基本知识以面向对象技术的基本概念
2、和基本知识以及基本思想方法,为后续进一步学习面向对象及基本思想方法,为后续进一步学习面向对象的分析、设计和编程奠定良好的基础。的分析、设计和编程奠定良好的基础。第2页,此课件共70页哦u本章的学习内容本章的学习内容了解面向对象软件开发方法的发展历程及其了解面向对象软件开发方法的发展历程及其重要意义重要意义了解面向对象技术的基本概念了解面向对象技术的基本概念了解面向对象技术的特点和优点了解面向对象技术的特点和优点初步了解面向对象分析与设计的一般方法初步了解面向对象分析与设计的一般方法第3页,此课件共70页哦 1.1 1.1 面向对象方法的提出面向对象方法的提出(1)软件概念的提出)软件概念的提出
3、 二十世纪四十年代诞生了世界上第一台电子计算机二十世纪四十年代诞生了世界上第一台电子计算机E ENIAC,NIAC,至今才半个来世纪至今才半个来世纪,聚然间发生了巨大而深刻的计聚然间发生了巨大而深刻的计算机革命。计算机科学技术已经成为一门系统完善、复算机革命。计算机科学技术已经成为一门系统完善、复杂深刻的工程技术学科,它的应用已从国防、科技、工杂深刻的工程技术学科,它的应用已从国防、科技、工业、农业渗透到人类生活的各个方面,无处不在。出现业、农业渗透到人类生活的各个方面,无处不在。出现了各种各样的计算机,包括巨型机、大型机、小型机、了各种各样的计算机,包括巨型机、大型机、小型机、个人电脑、工作
4、站和网络等等,五花八门,应有尽有。个人电脑、工作站和网络等等,五花八门,应有尽有。但是,无论怎样尖端,怎样高深,一个计算机系统都是但是,无论怎样尖端,怎样高深,一个计算机系统都是由硬件和软件两部分构成。由硬件和软件两部分构成。人们在第一台电子计算机上就已实现了冯人们在第一台电子计算机上就已实现了冯.诺依曼提出诺依曼提出的的存储程序思想存储程序思想,即将程序和数据存储在计算机内存中即将程序和数据存储在计算机内存中,用程用程序来控制计算机的运行。这种序来控制计算机的运行。这种程序、数据及相关文档程序、数据及相关文档 统称统称为为软件(软件(software)software)。由于计算机是在程序的
5、控制下运行,。由于计算机是在程序的控制下运行,所以软件成为了计算机的灵魂所以软件成为了计算机的灵魂,是组成计算机系统不可缺少是组成计算机系统不可缺少的部分。的部分。第4页,此课件共70页哦(2)软件开发方法的发展)软件开发方法的发展 计算机诞生之后,计算机技术一直处于高速发展状计算机诞生之后,计算机技术一直处于高速发展状态,计算机科学技术的发展由原来只依靠硬件的发态,计算机科学技术的发展由原来只依靠硬件的发展逐渐变为更多地依靠软件的发展。事实上,展逐渐变为更多地依靠软件的发展。事实上,软件软件技术的发展经历了多代历程。技术的发展经历了多代历程。l第一代第一代(20(20世纪世纪50-6050-
6、60年代年代),是以,是以FORTRANFORTRAN和和ALGOLALGOL等编程语言为标志的算法技术时代。等编程语言为标志的算法技术时代。那时,程序设那时,程序设计全靠人们发挥创造才能,全靠技巧和窍门。基于这计全靠人们发挥创造才能,全靠技巧和窍门。基于这种算法技术的软件生产率非常低,程序很难看懂,甚种算法技术的软件生产率非常低,程序很难看懂,甚至程序员自己写的程序过一段时间后自己也看不懂,至程序员自己写的程序过一段时间后自己也看不懂,这给软件的修改、维护带来极大的困难。于是这给软件的修改、维护带来极大的困难。于是6060年代年代末出现了末出现了“软件危机软件危机”。第5页,此课件共70页哦
7、l第二代第二代(20(20世纪世纪7070年代末开始到年代末开始到8080年代盛行的年代盛行的),以,以PASCALPASCAL、COBOLCOBOL等编程语言和关系数据库管理系统为标志的结构化系统分等编程语言和关系数据库管理系统为标志的结构化系统分析和设计技术。析和设计技术。由于早期的软件比较简单,开发一个软件就等同于编由于早期的软件比较简单,开发一个软件就等同于编一个程序,算法设计出来了就解决了问题。那时程序处理一个程序,算法设计出来了就解决了问题。那时程序处理的数据也很杂乱,数据结构不统一,实现相同功能的不同的数据也很杂乱,数据结构不统一,实现相同功能的不同程序处理的数据结构或数据模型可
8、能相差很大,这对于软程序处理的数据结构或数据模型可能相差很大,这对于软件的统一化和标准化以及软件的集成和推广件的统一化和标准化以及软件的集成和推广 应用很不利。应用很不利。当软件变得很大很复杂时,开发一个软件只编一个程序的当软件变得很大很复杂时,开发一个软件只编一个程序的方法就不适应了。于是人们提出了结构化软件开发方法。方法就不适应了。于是人们提出了结构化软件开发方法。这种方法提倡通过系统分析和设计将该大的系统划分为多这种方法提倡通过系统分析和设计将该大的系统划分为多个功能模块,每个功能块又可以进一步划分为更小的功能个功能模块,每个功能块又可以进一步划分为更小的功能子模块,直到各个子模块容易编
9、程实现为止。在编程实现子模块,直到各个子模块容易编程实现为止。在编程实现了各个模块之后,将这些模块组装起来就构成了完整的应了各个模块之后,将这些模块组装起来就构成了完整的应用系统。用系统。这种技术主要强调程序模块化结构和数据结构,采用自顶这种技术主要强调程序模块化结构和数据结构,采用自顶向下逐步求精的设计方法和单入口单出口的控制结构,从而大向下逐步求精的设计方法和单入口单出口的控制结构,从而大大改善了程序的可读性。大改善了程序的可读性。第6页,此课件共70页哦 伴随着结构化软件开发技术的出现,人们伴随着结构化软件开发技术的出现,人们还提出了还提出了软件工程方法软件工程方法,使软件开发工作从,使
10、软件开发工作从以前只考虑程序的编写技巧转变到利用软件以前只考虑程序的编写技巧转变到利用软件工程的方法,使软件系统的生产过程遵循一工程的方法,使软件系统的生产过程遵循一系列的规范化步骤,包括需求分析、总体设系列的规范化步骤,包括需求分析、总体设计、详细设计、编程实现、软件测试、软件计、详细设计、编程实现、软件测试、软件维护等。从而大大改善了软件的质量与可维维护等。从而大大改善了软件的质量与可维护性,但软件开发的成本却大大增加了,未护性,但软件开发的成本却大大增加了,未能完全克服软件危机。能完全克服软件危机。第7页,此课件共70页哦l第三代第三代(上个世纪上个世纪80年代开始至今还盛行的年代开始至
11、今还盛行的)以以Smalltalk、C+等为代表的面向对象等为代表的面向对象软件开发方法软件开发方法(OO)。传统的结构化程序设计以算法为核心,把传统的结构化程序设计以算法为核心,把本来密切相关的数据和对数据的操作分离开本来密切相关的数据和对数据的操作分离开来,很难保持数据和操作的一致性,其软件来,很难保持数据和操作的一致性,其软件开发方法也不符合人们的自然思维习惯开发方法也不符合人们的自然思维习惯,设设计出来的软件系统其解空间与问题空间不一计出来的软件系统其解空间与问题空间不一致,致使程序难以理解、修改和扩充,最终致,致使程序难以理解、修改和扩充,最终导致程序复杂性问题和软件危机。导致程序复
12、杂性问题和软件危机。为了超越程序复杂性障碍,克服软件危机为了超越程序复杂性障碍,克服软件危机,人们提出了人们提出了面向对象软件开发方法面向对象软件开发方法。面向对。面向对象开发方法一改过去传统的以功能分析和功象开发方法一改过去传统的以功能分析和功能分解为基础的面向过程的结构化分析与设能分解为基础的面向过程的结构化分析与设计方法,计方法,第8页,此课件共70页哦 面向对象开发方法模拟人们理解和处理客观世界的方式来面向对象开发方法模拟人们理解和处理客观世界的方式来分析问题,把系统视为一系列对象的集合,其面向对象的分析问题,把系统视为一系列对象的集合,其面向对象的设计又将分析的结果映射到某种面向对象
13、实现工具的结构设计又将分析的结果映射到某种面向对象实现工具的结构上,使映射过程有着比较直接的对应关系,使分析者、设上,使映射过程有着比较直接的对应关系,使分析者、设计者和编程者都可使用相同的概念,从而使面向对象的软计者和编程者都可使用相同的概念,从而使面向对象的软件开发能比较自然地模拟客观世界的活动,使问题描述空件开发能比较自然地模拟客观世界的活动,使问题描述空间与解空间在结构上尽可能一致。因此,采用面向对象方间与解空间在结构上尽可能一致。因此,采用面向对象方法可以更有效地开发大型软件系统。面向对象方法的封装、法可以更有效地开发大型软件系统。面向对象方法的封装、继承、多态等机制不仅支持软件复用
14、,而且使软件维护工继承、多态等机制不仅支持软件复用,而且使软件维护工作可靠有效,可实现软件系统的柔性制造,更好地克服软作可靠有效,可实现软件系统的柔性制造,更好地克服软件危机。因此,它已成为成熟的广为采用的软件开发方法。件危机。因此,它已成为成熟的广为采用的软件开发方法。到到2020世纪末,面向对象软件工程逐渐发展成熟,世纪末,面向对象软件工程逐渐发展成熟,特别是统一建模语言特别是统一建模语言(UML)(UML)标准的形成和广泛使用,使面向标准的形成和广泛使用,使面向对象软件开发方法已成为软件开发的主流技术。对象软件开发方法已成为软件开发的主流技术。第9页,此课件共70页哦(3 3)面向对象软
15、件开发方法的发展)面向对象软件开发方法的发展u面向对象软件开发方法始于面向对象语言的研究和发展面向对象软件开发方法始于面向对象语言的研究和发展。面。面向对象语言的发展有三个重要的里程碑:向对象语言的发展有三个重要的里程碑:2020世纪世纪7070年代的年代的Simula-67 Simula-67 是第一个面向对象的语言是第一个面向对象的语言 ,对后来的许多面向对象语言的出现产生了很大的影,对后来的许多面向对象语言的出现产生了很大的影响。它首次提出了对象和类的概念和方法,启示了一响。它首次提出了对象和类的概念和方法,启示了一种崭新软件思维方法的出现。种崭新软件思维方法的出现。8080年代初的年代
16、初的 Smalltalk Smalltalk 语言语言,它的广泛使用掀起了一场,它的广泛使用掀起了一场 “面向对象运动面向对象运动”,随之诞生了多种面向对象的语言,随之诞生了多种面向对象的语言,可可分为几类。分为几类。对流行的语言进行面向对象的扩充得到的语言,对流行的语言进行面向对象的扩充得到的语言,如混合如混合性语言性语言C+C+和纯面向对象语言和纯面向对象语言Java.Java.第10页,此课件共70页哦u 自自8080年代末期到年代末期到9090年代年代 ,面向对象技术的研面向对象技术的研究和应用不再局限于编程阶段究和应用不再局限于编程阶段 ,而是向着系,而是向着系统分析和系统设计阶段发
17、展,即系统分析和系统分析和系统设计阶段发展,即系统分析和系统设计阶段也开始采用面向对象方法。这标志统设计阶段也开始采用面向对象方法。这标志着面向对象方法已经发展成一种完整的方法论着面向对象方法已经发展成一种完整的方法论和系统化的技术体系和系统化的技术体系面向对象软件工程面向对象软件工程。我们用面向对象语言编程求解问题之前需要我们用面向对象语言编程求解问题之前需要先按面向对象的方法进行分析和设计,然后才先按面向对象的方法进行分析和设计,然后才能根据设计模型进行有效编程。所以我们在学能根据设计模型进行有效编程。所以我们在学习用面向对象技术求解实际问题之前习用面向对象技术求解实际问题之前应该先学应该
18、先学习面向对象的基本概念,再学习面向对象的分习面向对象的基本概念,再学习面向对象的分析和设计,然后再学习面向对象的编程实现,析和设计,然后再学习面向对象的编程实现,这样才能全面掌握用面向对象技术求解问题的这样才能全面掌握用面向对象技术求解问题的方法。方法。第11页,此课件共70页哦 1.2 面向对象的基本概念面向对象的基本概念 为了更好地理解面向对象的思想和方法为了更好地理解面向对象的思想和方法,有有必要先介绍一些面向对象的基本概念。必要先介绍一些面向对象的基本概念。与人们认识客观世界一样,面向对象技术与人们认识客观世界一样,面向对象技术认为客观世界是由各种各样的事物或实体组成认为客观世界是由
19、各种各样的事物或实体组成,每个事物或实体都可用一个对象来表示。因此,每个事物或实体都可用一个对象来表示。因此,客观世界可看成是由各种各样的对象组成,每客观世界可看成是由各种各样的对象组成,每个对象都有各自的内部状态和行为操作,不同个对象都有各自的内部状态和行为操作,不同对象间相互作用和联系就构成了各种不同的系对象间相互作用和联系就构成了各种不同的系统,从而形成了客观世界。统,从而形成了客观世界。因此,在面向对象因此,在面向对象的程序中,客观系统自然被描绘成一系列完全的程序中,客观系统自然被描绘成一系列完全自治、封装的对象,自治、封装的对象,因此对象是组成面向对象因此对象是组成面向对象程序的基本
20、单位。程序的基本单位。第12页,此课件共70页哦(1)对象(对象(ObjectObject)对象是客观实体的抽象表示,是由描述对象的对象是客观实体的抽象表示,是由描述对象的属性属性的数的数据和对这些数据进行的据和对这些数据进行的操作操作行为行为两部分组成。两部分组成。u属性属性是用来描述对象静态特征的数据项。是用来描述对象静态特征的数据项。u行为行为是用来描述对象动态特征的操作方法或算法。是用来描述对象动态特征的操作方法或算法。第13页,此课件共70页哦(2)(2)对象的特征对象的特征具有一个状态具有一个状态,由与其相关联的属性值集合所表征。由与其相关联的属性值集合所表征。具有唯一的标识名,可
21、以区别于其他对象。具有唯一的标识名,可以区别于其他对象。有一组操作方法,每个操作方法决定对象的一种行为。有一组操作方法,每个操作方法决定对象的一种行为。对象的状态一般只能被自身的行为所改变。对象的状态一般只能被自身的行为所改变。对象的操作包括自操作(施于自身)和它操作(施于对象的操作包括自操作(施于自身)和它操作(施于其他对象)。其他对象)。对象之间以消息传递的方式进行通信。对象之间以消息传递的方式进行通信。一个对象的成员仍可以是一个对象。一个对象的成员仍可以是一个对象。void display()void display()Person A;Person A;cout cout学号学号end
22、l;endl;cout cout姓名姓名endl;endl;cout cout性别性别endl;endl;cout cout成绩成绩endl;endl;A.print();A.print();第14页,此课件共70页哦(3)类)类(ClassClass)在面向对象程序中,一般不会逐个描述具体对象,而是在面向对象程序中,一般不会逐个描述具体对象,而是将注意力集中于将注意力集中于一类一类具有相同特性的对象具有相同特性的对象,抽象出这类,抽象出这类对象的共同特性和行为,用对象的共同特性和行为,用“类类”进行一般性描述。进行一般性描述。类类u 类是具有相同属性和行为的对象集合的抽象描述;类是具有相同属
23、性和行为的对象集合的抽象描述;u 类的内部包括属性和行为两个主要部分。类的内部包括属性和行为两个主要部分。第15页,此课件共70页哦(4)实例实例 (instance)(instance)类是对具有相同属性和行为的一组对象的抽象描述。类是对具有相同属性和行为的一组对象的抽象描述。因此,因此,类可作为一种用户自定义类型和创建对象的类可作为一种用户自定义类型和创建对象的样板,而按照这种样板所创建的一个个具体对象就样板,而按照这种样板所创建的一个个具体对象就是类的实际例子,通常称为是类的实际例子,通常称为实例实例。例如,例如,studentstudent S1(051001,S1(051001,李明
24、,男,李明,男,9090)第16页,此课件共70页哦(5 5)属性(属性(attribute)attribute)属性就是类中所定义的数据成员,是对客观实体的性属性就是类中所定义的数据成员,是对客观实体的性质的抽象质的抽象表示表示。例如,学生类中有属性:学号、姓。例如,学生类中有属性:学号、姓名、性别、成绩等。名、性别、成绩等。第17页,此课件共70页哦(6 6)方法方法 (method)(method)方法就是对象所能执行的某项操作,也就是类中定义方法就是对象所能执行的某项操作,也就是类中定义的服务函数。方法描述了对象执行操作的算法。的服务函数。方法描述了对象执行操作的算法。在在C+C+中把
25、类中定义的方法称为成员函数中把类中定义的方法称为成员函数。例如,学生。例如,学生类中用于显示学生属性数据的类中用于显示学生属性数据的成员成员函数函数 display()display()就就是一个方法。是一个方法。第18页,此课件共70页哦(7 7)消息(消息(message)message)消息就是请求某个对象执行它所包含的某项处消息就是请求某个对象执行它所包含的某项处理操作的指令信息。实质是对某个类对象的操理操作的指令信息。实质是对某个类对象的操作函数的调用。例如作函数的调用。例如,student student S1S1;S1S1.display().display()是一个消息。是一个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 分析 设计 精选 PPT 课件
限制150内