面向对象分析与设计精选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世纪世纪
6、50-6050-60年代年代),是以,是以FORTRANFORTRAN和和ALGOLALGOL等编程语言为标志的算法技术时代。等编程语言为标志的算法技术时代。那时,程序那时,程序设计全靠人们发挥创造才能,全靠技巧和窍门。设计全靠人们发挥创造才能,全靠技巧和窍门。基于这种算法技术的软件生产率非常低,程序很基于这种算法技术的软件生产率非常低,程序很难看懂,甚至程序员自己写的程序过一段时间后难看懂,甚至程序员自己写的程序过一段时间后自己也看不懂,这给软件的修改、维护带来极大自己也看不懂,这给软件的修改、维护带来极大的困难。于是的困难。于是6060年代末出现了年代末出现了“软件危机软件危机”。现在学习
7、的是第5页,共70页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)标准的形成和广泛使用,使面向对象标准的形成和广泛使用,使面向对象软件开发方法已成为软件开发的主流技术。软件开发方法已成为软件开发的主流技术。现在学习的是
15、第9页,共70页(3 3)面向对象软件开发方法的发展)面向对象软件开发方法的发展u面向对象软件开发方法始于面向对象语言的研究和发面向对象软件开发方法始于面向对象语言的研究和发展展。面向对象语言的发展有三个重要的里程碑:。面向对象语言的发展有三个重要的里程碑:2020世纪世纪7070年代的年代的Simula-67 Simula-67 是第一个面向对象的语言是第一个面向对象的语言 ,对后来的许多面向对象语言的出现产生了很大的影响。对后来的许多面向对象语言的出现产生了很大的影响。它首次提出了对象和类的概念和方法,启示了一种崭新它首次提出了对象和类的概念和方法,启示了一种崭新软件思维方法的出现。软件思
16、维方法的出现。8080年代初的年代初的 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;
22、Person A;cout cout学号学号endl;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)类是对具有相同属性和行为的一组对象的抽象描述。类是对具有相同属性和行为的一组对象的抽象描述。因此,因此,类可作为一种用户自定义类型和创建对象的类可作为一种用户自定义类型和创建对象的样板,而按照这种样板所创建的一个个具体对象就样板,而按照这种样板所创建的一个个具体对象就是类的实际例子,通常称为是类的实际例子,通常称为实例实例。例如,例如,students
24、tudent S1(051001,S1(051001,李明,男,李明,男,9090)现在学习的是第16页,共70页(5 5)属性(属性(attribute)attribute)属性就是类中所定义的数据成员,是对客观实体的属性就是类中所定义的数据成员,是对客观实体的性质的抽象性质的抽象表示表示。例如,学生类中有属性:学号、。例如,学生类中有属性:学号、姓名、性别、成绩等。姓名、性别、成绩等。现在学习的是第17页,共70页(6 6)方法方法 (method)(method)方法就是对象所能执行的某项操作,也就是类中定方法就是对象所能执行的某项操作,也就是类中定义的服务函数。方法描述了对象执行操作的
25、算法。义的服务函数。方法描述了对象执行操作的算法。在在C+C+中把类中定义的方法称为成员函数中把类中定义的方法称为成员函数。例如,学。例如,学生类中用于显示学生属性数据的生类中用于显示学生属性数据的成员成员函数函数 displaydisplay()()就是一个方法。就是一个方法。现在学习的是第18页,共70页(7 7)消息(消息(message)message)消息就是请求某个对象执行它所包含的某项处消息就是请求某个对象执行它所包含的某项处理操作的指令信息。实质是对某个类对象的操理操作的指令信息。实质是对某个类对象的操作函数的调用。例如作函数的调用。例如,student student S1S
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 分析 设计 精选 PPT
限制150内