软件工程电子教案第九十二章面向对象课件.ppt

上传人(卖家):三亚风情 文档编号:3295483 上传时间:2022-08-17 格式:PPT 页数:73 大小:605.50KB
下载 相关 举报
软件工程电子教案第九十二章面向对象课件.ppt_第1页
第1页 / 共73页
软件工程电子教案第九十二章面向对象课件.ppt_第2页
第2页 / 共73页
软件工程电子教案第九十二章面向对象课件.ppt_第3页
第3页 / 共73页
软件工程电子教案第九十二章面向对象课件.ppt_第4页
第4页 / 共73页
软件工程电子教案第九十二章面向对象课件.ppt_第5页
第5页 / 共73页
点击查看更多>>
资源描述

1、第九第九 十二章面向对象开发技术十二章面向对象开发技术 传统的软件工程方法学曾经给软件产业带来巨大传统的软件工程方法学曾经给软件产业带来巨大进步,部分地缓解了软件危机,使用这种方法学开发进步,部分地缓解了软件危机,使用这种方法学开发的许多中、小规模软件项目都获得了成功。但是,人的许多中、小规模软件项目都获得了成功。但是,人们也注意到当把这种方法学应用于大型软件产品的开们也注意到当把这种方法学应用于大型软件产品的开发时,似乎很少取得成功。发时,似乎很少取得成功。在在20世纪世纪60年代后期出现的面向对象编程语言年代后期出现的面向对象编程语言Simula-67中首次引入了类和对象的概念,自中首次引

2、入了类和对象的概念,自20世纪世纪80年代中期起,年代中期起,人们开始注重面向对象分析和设计的研究,逐步形成了面人们开始注重面向对象分析和设计的研究,逐步形成了面向对象方法学。到了向对象方法学。到了20世纪世纪90年代,面向对象方法学已经年代,面向对象方法学已经成为人们在开发软件时首选的范型。成为人们在开发软件时首选的范型。面向对象技术已成为面向对象技术已成为当前最好的软件开发技术。当前最好的软件开发技术。第1页,共73页。面向对象是当面计算机界的关心的重点,它面向对象是当面计算机界的关心的重点,它是是9090年代软件开发方法的主流,面向对象的概念年代软件开发方法的主流,面向对象的概念和应用已

3、超过了程序设计和软件开发,扩展到很和应用已超过了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结宽的范围。如数据库系统、交互式界面、应用结构、应用平台、网络管理结构、人工智能领域,构、应用平台、网络管理结构、人工智能领域,它是软件开发的一种新方法,新技术。它是软件开发的一种新方法,新技术。9.29.2面向对象的概念面向对象的概念定义:面向对象定义:面向对象=对象对象+类类+继承继承+通信。通信。OO=objects+classes+inheritance+communication with messages如果一个软件系统是使用这样如果一个软件系统是使用这样4 4个概念

4、设计和实现个概念设计和实现的,则可以认为这个软件系统是面向对象的。的,则可以认为这个软件系统是面向对象的。第2页,共73页。9.2.19.2.1对象(对象(objectobject)面向对象开发模式面向对象开发模式认为客观世界是由各种认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。可以由比较简单的对象以某种方式组合而成。按照这种观点,可以认为整个世界就是一个最按照这种观点,可以认为整个世界就是一个最复杂的对象。因此,面向对象的软件系统是由复杂的对象。因此,面向对象的软件系统是由对象组成的,软件中的任何元

5、素都是对象,复对象组成的,软件中的任何元素都是对象,复杂的软件对象由比较简单的对象组合而成。杂的软件对象由比较简单的对象组合而成。由此可见,面向对象方法由此可见,面向对象方法用对象分解取代了传用对象分解取代了传统方法的功能分解。统方法的功能分解。对象是面向对象开发模式的基本成分是人们对象是面向对象开发模式的基本成分是人们要进行研究的人和事物。要进行研究的人和事物。第3页,共73页。一、对象的主要类型:一、对象的主要类型:1 1)有型实体:)有型实体:如计算机、机房、工件(某些如计算机、机房、工件(某些零件)等。零件)等。2 2)作用:)作用:指人或组织起的作用,如:医生、指人或组织起的作用,如

6、:医生、教师、学生、公司、部门等。教师、学生、公司、部门等。3 3)事件:)事件:如:飞行、演出、开会等。如:飞行、演出、开会等。4 4)性能说明:)性能说明:如产品名字、型号、各种性能如产品名字、型号、各种性能指标等。指标等。以上类型可以看出,对象不仅能表示结以上类型可以看出,对象不仅能表示结构化数据,而且能表示描象的事件规律,复构化数据,而且能表示描象的事件规律,复杂的工程实体等。因此杂的工程实体等。因此对象具有很强的表达对象具有很强的表达能力和描述功能。能力和描述功能。第4页,共73页。二、对象的状态和行为二、对象的状态和行为 对象具有状态,一个对象用对象具有状态,一个对象用数值来描述数

7、值来描述它的状态它的状态,如某个具体的学生张三,他的姓,如某个具体的学生张三,他的姓名、年龄、性别等,用具体数据值来表示着名、年龄、性别等,用具体数据值来表示着个具体的学生的情况。个具体的学生的情况。对象还有操作,用于改变对象的状态,对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为对象及其操作就是对象的行为,例某个工人,例某个工人经过经过“增加工资增加工资”的操作后,他的工资额这的操作后,他的工资额这个状态就放生了变化。个状态就放生了变化。对象实现了数据和操作的结合,使对象实现了数据和操作的结合,使数据数据和操作封装于对象的统一体中。和操作封装于对象的统一体中。第5页,共73页。9

8、.2.29.2.2其他概念其他概念一、类的定义一、类的定义 具有相同或相似性质的对象的抽象就是具有相同或相似性质的对象的抽象就是类。类。类的具体化,也就是类的具体化,也就是类的实例是对象类的实例是对象。类具有属性类具有属性:类的属性是对象的状态的抽象,用数据结类的属性是对象的状态的抽象,用数据结构来描述类的属性。构来描述类的属性。类具有操作类具有操作:它是对象的行为的抽象,用操作名和实现它是对象的行为的抽象,用操作名和实现操作的方法来描述。操作的方法来描述。第6页,共73页。例:例:工人就是一个类,每一个具体的工人就是对象:工人就是一个类,每一个具体的工人就是对象:第7页,共73页。二、类的结

9、构二、类的结构类通常有两种主要结构。类通常有两种主要结构。一般一般具体结构具体结构称为称为分类结构,分类结构,或者说是或者说是“is a”is a”关系。关系。例:汽车和交通工具都是类,但它们之间的关系是:例:汽车和交通工具都是类,但它们之间的关系是:汽车是(汽车是(is ais a)一种交通工具,通常越上层的类,越)一种交通工具,通常越上层的类,越具有一般性和共性,越下层的类越具体越细化。具有一般性和共性,越下层的类越具体越细化。整体整体部分结构部分结构称称为为组装结构组装结构,或者是,或者是“has ahas a”关系,关系,例汽车和发动机都是类,它们之间的关系是例汽车和发动机都是类,它们

10、之间的关系是“汽车汽车 (has a)(has a)有一个发动机。有一个发动机。在类的层次结构中,通常在类的层次结构中,通常上层类称为父类,下层类称上层类称为父类,下层类称为子类。为子类。第8页,共73页。三、实例三、实例(instance)实例就是由某个特定的类所描述的一个实例就是由某个特定的类所描述的一个具体的对象具体的对象。类是对具有相同属性和行为的。类是对具有相同属性和行为的一组相似的对象的抽象,类在现实世界中并一组相似的对象的抽象,类在现实世界中并不能真正存在。不能真正存在。实际上实际上类是建立对象时使用的类是建立对象时使用的“样板样板”,按照这个样板所建立的一个个具体的对象,按照这

11、个样板所建立的一个个具体的对象,就是类的实际例子,通常称为实例。就是类的实际例子,通常称为实例。当使用当使用“对象对象”这个术语时,既可以指这个术语时,既可以指一个具体的对象,也一个具体的对象,也可以泛指一般的对象,可以泛指一般的对象,但是,当使用但是,当使用“实例实例”这个术语时,这个术语时,必然是必然是指一个具体的对象。指一个具体的对象。第9页,共73页。四、继承(四、继承(InheritanleInheritanle)继承是类之间的一种关系,是继承是类之间的一种关系,是子类自动共子类自动共享父类数据结构和方法的机制,享父类数据结构和方法的机制,是面向对是面向对象设计语言的象设计语言的最主

12、要的特点。最主要的特点。在类层次中,子类只继承一个父类的数据在类层次中,子类只继承一个父类的数据结构和方法,称为结构和方法,称为单重继承。单重继承。在类层次中,子类只继承多个父类的数据在类层次中,子类只继承多个父类的数据结构和方法,称为结构和方法,称为多重继承多重继承。第10页,共73页。五、封装五、封装(encapsulation)从字面上理解,所谓封装就是把某个事物包从字面上理解,所谓封装就是把某个事物包起来,使外界不知道该事物的具体内容。起来,使外界不知道该事物的具体内容。在面向对象的程序中,把数据和实现操作的在面向对象的程序中,把数据和实现操作的代码集中起来放在对象内部。代码集中起来放

13、在对象内部。一个对象好像是一个一个对象好像是一个不透明的黑盒子,表示对象状态的数据和实现操作不透明的黑盒子,表示对象状态的数据和实现操作的代码与局部数据,都被封装在黑盒子里面,从外的代码与局部数据,都被封装在黑盒子里面,从外面是看不见的,更不能从外面直接访问或修改这些面是看不见的,更不能从外面直接访问或修改这些数据和代码。数据和代码。使用一个对象的时候,只需知道它向外界提供的接使用一个对象的时候,只需知道它向外界提供的接口形式,无须知道它的数据结构细节和实现操作的算法。口形式,无须知道它的数据结构细节和实现操作的算法。第11页,共73页。综上所述,综上所述,对象具有封装性的条件对象具有封装性的

14、条件如下:如下:(1)有一个清晰的边界有一个清晰的边界。所有私有数据和实现操作的代码都。所有私有数据和实现操作的代码都被封装在这个边界内,从外面看不见更不能直接访问。被封装在这个边界内,从外面看不见更不能直接访问。(2)有确定的接口(即协议)。有确定的接口(即协议)。这些接口就是对象可以接这些接口就是对象可以接受的消息,只能通过向对象发送消息来使用它。受的消息,只能通过向对象发送消息来使用它。(3)受保护的内部实现。受保护的内部实现。实现对象功能的细节(私有数据实现对象功能的细节(私有数据和代码)不能在定义该对象的类的范围外访问。和代码)不能在定义该对象的类的范围外访问。封装也就是信息隐藏,通

15、过封装对外界隐藏了对象的实封装也就是信息隐藏,通过封装对外界隐藏了对象的实现细节。现细节。对象类实质上是抽象数据类型。对象类实质上是抽象数据类型。类把数据说明和操作类把数据说明和操作说明与数据表达和操作实现分离开了说明与数据表达和操作实现分离开了,使用者只需知道,使用者只需知道它的说明(值域及可对数据施加的操作),就可以使用它的说明(值域及可对数据施加的操作),就可以使用它。它。第12页,共73页。六、多态性六、多态性 多态性指多态性指相同的操作、函数、过程可作用于多种类相同的操作、函数、过程可作用于多种类型的对象上,并获得不同结果。型的对象上,并获得不同结果。即不同的对象,收到同即不同的对象

16、,收到同一消息可以产生不同的结果。一消息可以产生不同的结果。例:例:MOVEMOVE操作操作,可以可以是窗口是窗口某一图标的移动操作某一图标的移动操作,也可以也可以是象棋棋子移动的操作。是象棋棋子移动的操作。图标移动为了使窗口更清晰,图标移动为了使窗口更清晰,棋子移动为赢这盘棋。棋子移动为赢这盘棋。同样的函数作用不同对象效果同样的函数作用不同对象效果不同。例:函数不同。例:函数x x、3+x3+x、与、与3-x3-x结果是完全不同的。结果是完全不同的。多态性允许每个对象以适合自身的方式去响应共多态性允许每个对象以适合自身的方式去响应共同的信息,用户不必为相同的功能操作但作用于不同同的信息,用户

17、不必为相同的功能操作但作用于不同类型的对象而费心去识别,增强了软件的重用性和可类型的对象而费心去识别,增强了软件的重用性和可扩充性。扩充性。第13页,共73页。9.39.3面向对象的开发方法面向对象的开发方法 当今面向对象开发方法有当今面向对象开发方法有CoadCoad方法、方法、BoochBooch方法、方法、OMTOMT方法和方法和OOSEOOSE方法等。这几种方法是早期产品,课堂上不介绍了。现方法等。这几种方法是早期产品,课堂上不介绍了。现简单介绍简单介绍UMLUML语音即统一建模语言(语音即统一建模语言(Unified Modeling Unified Modeling languag

18、elanguage)1997年年11月,国际对象管理组织月,国际对象管理组织OMG批准批准把把UML 1.1作为基于面向对象技术的标准建作为基于面向对象技术的标准建模语言。模语言。UMLUML是是9797年软件工程领域,最重要的年软件工程领域,最重要的成果之一,是面对象技术领域内占主导地位成果之一,是面对象技术领域内占主导地位的标准建模语言,的标准建模语言,UMLUML不仅统一了不仅统一了BoochBooch、OMTOMT、OOSEOOSE的表示方法并对其作了进一步的发展,的表示方法并对其作了进一步的发展,最终统一为大众所接受的标准建模语言。最终统一为大众所接受的标准建模语言。第14页,共73

19、页。第十章面向对象分析和高层设计第十章面向对象分析和高层设计 面向对象的分析是软件开发过程中最重要面向对象的分析是软件开发过程中最重要的一步,的一步,也是使用面向对象的概念、原理、也是使用面向对象的概念、原理、分析解决问题、求解问题的重要阶段。分析解决问题、求解问题的重要阶段。面向对象的分析从面向对象的分析从概念上分为概念上分为两个层次:两个层次:第一层:问题分析第一层:问题分析:主要任务是收集并确:主要任务是收集并确认用户的需求信息,对实际问题进行功能认用户的需求信息,对实际问题进行功能分析和过程分析。分析和过程分析。第二层:应用分析:第二层:应用分析:主要任务是动态描述主要任务是动态描述系

20、统中,对象的合法状态序列,即系统中,对象的合法状态序列,即建立正建立正确的模型。确的模型。第15页,共73页。为了更好地理解问题,人们常常采用建为了更好地理解问题,人们常常采用建立问题模型的方法。所谓立问题模型的方法。所谓模型模型,就是为了理就是为了理解事物而对事物作出的一种抽象,是对事物解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。的一种无歧义的书面描述。通常,通常,模型由一模型由一组图示符号和组织这些符号的规则组成,利组图示符号和组织这些符号的规则组成,利用它们来定义和描述问题域中的术语和概念。用它们来定义和描述问题域中的术语和概念。更进一步讲,模型是一种思考工具,利用这更

21、进一步讲,模型是一种思考工具,利用这种工具可以把知识规范地表示出来。对于那种工具可以把知识规范地表示出来。对于那些因过分复杂而不能直接理解的系统,特别些因过分复杂而不能直接理解的系统,特别需要建立模型,建模的目的主要是为了减少需要建立模型,建模的目的主要是为了减少复杂性。复杂性。模型可以帮助我们思考问题、定义术语、模型可以帮助我们思考问题、定义术语、在选择术语时作出适当的假设,并且可以帮在选择术语时作出适当的假设,并且可以帮助我们保持定义和假设的一致性。助我们保持定义和假设的一致性。第16页,共73页。面向对象方法最基本的原则,是按照人们习惯的思面向对象方法最基本的原则,是按照人们习惯的思维方

22、式,用面向对象观点维方式,用面向对象观点建立问题域的模型,建立问题域的模型,开发出尽开发出尽可能自然地表现求解方法的软件。可能自然地表现求解方法的软件。用面向对象方法开发软件,通常需要建立用面向对象方法开发软件,通常需要建立3种形式的模型,种形式的模型,它们分别是它们分别是描述系统数据结构的对象模型描述系统数据结构的对象模型,描述系统控描述系统控制结构的动态模型制结构的动态模型和和描述系统功能的功能模型描述系统功能的功能模型。这。这3种模种模型都涉及到数据、控制和操作等共同的概念,只不过每型都涉及到数据、控制和操作等共同的概念,只不过每种模型描述的侧重点不同。这种模型描述的侧重点不同。这3种模

23、型从种模型从3个不同但又密个不同但又密切相关的角度模拟目标系统,它们各自从不同侧面反映切相关的角度模拟目标系统,它们各自从不同侧面反映了系统的实质性内容,综合起来则全面地反映了对目标了系统的实质性内容,综合起来则全面地反映了对目标系统的需求。一个典型的软件系统组合了上述系统的需求。一个典型的软件系统组合了上述3方面内容:方面内容:它使用数据结构它使用数据结构(对象模型对象模型),执行操作,执行操作(动态模型动态模型),并且完成,并且完成数据值的变化数据值的变化(功能模型功能模型)。第17页,共73页。10.3 10.3 建立对象模型建立对象模型 面向对象的模型最基本的有三个它们分别是:面向对象

24、的模型最基本的有三个它们分别是:对象模型、动态模型、功能模型。对象模型、动态模型、功能模型。从客观世界实体及实体间相互关系抽象出极从客观世界实体及实体间相互关系抽象出极有价值的有价值的对象模型对象模型;表示了静态的、结构化的系表示了静态的、结构化的系统数据性质,统数据性质,表述了系统的静态结构表述了系统的静态结构。(描述系。(描述系统数据结构),表现了对象关系。统数据结构),表现了对象关系。该模型主要关心系统中的:该模型主要关心系统中的:对象的结构;对象的结构;属性;属性;操作和方法;操作和方法;关联和链;关联和链;类的层次。类的层次。对象模型是三个模型的对象模型是三个模型的核心核心也是其它两

25、个模也是其它两个模型的型的框架框架。第18页,共73页。10.3.110.3.1对象和类对象和类 对象是基本成分对象是基本成分,使人们在研究问题时,使人们在研究问题时,把问题分解为若干对象,(对象可以是有把问题分解为若干对象,(对象可以是有形实体,也可以是作用、事件、性能说明形实体,也可以是作用、事件、性能说明等等)等等)对象是一个具体的有很强的表达能对象是一个具体的有很强的表达能力和描述功能的独立体力和描述功能的独立体。对象的符号:对象的符号:将对象抽象成类,类的表示法,图中的属将对象抽象成类,类的表示法,图中的属性和操作可写可不写,取决于详细程度。性和操作可写可不写,取决于详细程度。(类名

26、)属性值第19页,共73页。对象和类的表示方法对象和类的表示方法 示例示例 类类 实例(具体对象)实例(具体对象)类名属性名操作名(类名)属性值正方形边长位置边界颜色内部颜色画图擦图移动第20页,共73页。10.3.4 10.3.4 属性属性 解绍类时曾讲过,类具有属性。解绍类时曾讲过,类具有属性。类的属性:类的属性:是对象是对象状态的抽象,状态的抽象,用数据结构来描述用数据结构来描述类的属性类的属性。也就是说:类的属性是类的对象。也就是说:类的属性是类的对象所具有的性质,所具有的性质,不同的对象同一属性可以具不同的对象同一属性可以具有相同或不同的属性质有相同或不同的属性质。但。但一个类中的属

27、性一个类中的属性名是唯一的。名是唯一的。例:正方形类中有例:正方形类中有“边界颜色边界颜色”这一属性,正这一属性,正方形方形1 1的边界颜色为红色,正方形的边界颜色为红色,正方形2 2的边界颜的边界颜色为绿色,同一属性色为绿色,同一属性不同的对象不同的属性不同的对象不同的属性质质,但,但一个类中的属性名是唯一的。一个类中的属性名是唯一的。第21页,共73页。10.3.310.3.3操作和方法操作和方法操作:操作:是是对象的行为的抽象对象的行为的抽象(类中介绍),即(类中介绍),即操作是操作是类中对象所使用的一种功能或变换。类中对象所使用的一种功能或变换。方法:方法:是是类中操作的实现过程类中操

28、作的实现过程,即实现步骤。,即实现步骤。例:文件这个类,可以有打印这种操作;实例:文件这个类,可以有打印这种操作;实现打印需设计不同的方法,即要写不同的程现打印需设计不同的方法,即要写不同的程序代码段来实现:序代码段来实现:ASCASC文件的打印和数字图文件的打印和数字图像文件的打印方法是不同的,但所有的方法像文件的打印方法是不同的,但所有的方法多是实现一个操作,即打印文件。多是实现一个操作,即打印文件。第22页,共73页。10.3.2 10.3.2 关联和链关联和链 关联关联是建立是建立类之间类之间关系的一种手段,关系的一种手段,链链是建是建立立对象之间对象之间关系的一种手段,正如对象与类关

29、系的一种手段,正如对象与类的关系一样,的关系一样,链是关联的实例,关联是链的链是关联的实例,关联是链的抽象。抽象。两个类之间的关联称为二元的关联,两个类之间的关联称为二元的关联,三个类之间的关联称为三元关联。三个类之间的关联称为三元关联。例:例:三元关联三元关联 链第23页,共73页。关联的多重性关联的多重性指类中有多少个对象与关联的类的一个对象有关。指类中有多少个对象与关联的类的一个对象有关。例:例:11个、空心园个、空心园0 0个或个或1 1个、实心圆多个。个、实心圆多个。第24页,共73页。类的层次结构类的层次结构1 1、聚集关系:、聚集关系:是一种整体是一种整体-部分关系,是部分关系,

30、是has a has a(类的结构中介绍了两种结构)。(类的结构中介绍了两种结构)。在这种关系中有整体类和部分关系之分,符在这种关系中有整体类和部分关系之分,符号只是在关联的整体类端多了一个菱形框。号只是在关联的整体类端多了一个菱形框。例:例:第25页,共73页。聚集可以有不同的层次,可以组成一个聚集可以有不同的层次,可以组成一个聚集树。聚集树。例:例:第26页,共73页。2 2、泛化关系、泛化关系 是一般是一般具体关系具体关系称为称为分类关系。分类关系。是在保留对象差异的同时,共享对象相似性是在保留对象差异的同时,共享对象相似性的一种高度抽象方法,即的一种高度抽象方法,即is ais a一般

31、一般具体关具体关系。符号是联线加一个小三角系。符号是联线加一个小三角例:汽车、火车是例:汽车、火车是 交通工具。交通工具。汽车火车第27页,共73页。10.3.5 10.3.5 建立对象模型的过程:建立对象模型的过程:1 1、确定类:、确定类:标出来自问题域的相关对象类。标出来自问题域的相关对象类。2 2、准备数据字典、准备数据字典 准备一个数据字典,准确描述各个类的准备一个数据字典,准确描述各个类的精确含义。精确含义。第28页,共73页。3 3、确定关联、确定关联 两个或多个类之间的相互依赖关系就是关联。两个或多个类之间的相互依赖关系就是关联。4 4、确定属性、确定属性 对象的状态的抽象,为

32、类的属性,属性通常用对象的状态的抽象,为类的属性,属性通常用形容词形容词或名词词组来表示或名词词组来表示。先列出先列出属性,属性,再删除再删除不必要和不不必要和不正确的属性。正确的属性。5 5、使用继承来细化类、使用继承来细化类 有两种方法有两种方法:1 1)自底向上,)自底向上,把现有类的共同性质一般化成一个父类,把现有类的共同性质一般化成一个父类,如:月报表、日报表、组成一个大类报表。如:月报表、日报表、组成一个大类报表。2 2)自上向下)自上向下,把现有类再细化成更小的类,例:菜单细化成,把现有类再细化成更小的类,例:菜单细化成固定菜单、顶部菜单、弹出菜单、下拉菜单等。固定菜单、顶部菜单

33、、弹出菜单、下拉菜单等。第29页,共73页。6 6、完善对象模型、完善对象模型 对象建模不可能一次就保证模型是对象建模不可能一次就保证模型是完整正确的,完整正确的,面向对象开发的整个过程,面向对象开发的整个过程,就是不断完善的过程,就是不断完善的过程,有些细化和完善有些细化和完善工作是在设计阶段才开始,即在设计和工作是在设计阶段才开始,即在设计和实现过程中发现问题再回来细化和完善。实现过程中发现问题再回来细化和完善。第30页,共73页。10.4 10.4 建立动态模型建立动态模型 当问题涉及交互作用和时序时当问题涉及交互作用和时序时(例如,用例如,用户界面及过程控制等户界面及过程控制等),动态

34、模型是重要的。,动态模型是重要的。这个这个模型描述了系统的控制结构模型描述了系统的控制结构,它关心的是,它关心的是系统的控制,操作的执行顺序系统的控制,操作的执行顺序,它从对象的时,它从对象的时间和状态的角度出发,表现了对象的相互行为。间和状态的角度出发,表现了对象的相互行为。它涉及到事件、状态、操作、状态图等概念。它涉及到事件、状态、操作、状态图等概念。第31页,共73页。一、名词解释一、名词解释事件事件 事件是事件是指定时刻发生指定时刻发生的某种事情,它是某种事发生的某种事情,它是某种事发生的信息的信息没有持续时间的没有持续时间的 一种相对性快速事件,如:按一种相对性快速事件,如:按下启动

35、按钮,火箭发射,某种时间你把信用卡放入下启动按钮,火箭发射,某种时间你把信用卡放入ATMATM机里准备取款。机里准备取款。事件可以看成是信息从一个对象到另一个事件可以看成是信息从一个对象到另一个对象的单向传送对象的单向传送,各事件将信息从一个对象传到另一个,各事件将信息从一个对象传到另一个对象中去,因此要确定各事件的发送对象和接收对象。对象中去,因此要确定各事件的发送对象和接收对象。事件跟踪图用来表示事件,事件的接受对象和发送对事件跟踪图用来表示事件,事件的接受对象和发送对象,各事件用水平箭头线表示。箭头方向是从发送对象指象,各事件用水平箭头线表示。箭头方向是从发送对象指向接受方向,时间从上到

36、下递增。例上图打电话的事件跟向接受方向,时间从上到下递增。例上图打电话的事件跟踪图。踪图。第32页,共73页。状态状态 状态是对象属性值的抽象,状态是对象属性值的抽象,状态指明了对象输入事状态指明了对象输入事件的响应。件的响应。事件和状态是孪生的,事件和状态是孪生的,一事件分成两种状态,(行、不一事件分成两种状态,(行、不行),一个状态分成两个事件(能做、不能做)。行),一个状态分成两个事件(能做、不能做)。说明一说明一个状态个状态可以采用可以采用以下描述内容以下描述内容:状态名;状态目的的描:状态名;状态目的的描述;产生该状态的事件序列;表示状态特征的事件;述;产生该状态的事件序列;表示状态

37、特征的事件;在状态中接受的条件。在状态中接受的条件。状态图状态图 状态图反映了状态与事件的关系。状态图反映了状态与事件的关系。当接收一事件当接收一事件时,下一状态就取决于当前状态和所接受的该事件,时,下一状态就取决于当前状态和所接受的该事件,由该事件引起的状态变化称为转换。由该事件引起的状态变化称为转换。利用状态图可能会利用状态图可能会发现一些遗漏的情况。发现一些遗漏的情况。第33页,共73页。状态图表示方法:状态图表示方法:状态用圆圈表示,圆圈内有状态名;用箭头连线状态用圆圈表示,圆圈内有状态名;用箭头连线(弧)表示状态的转换,上面标记事件名,箭头表示(弧)表示状态的转换,上面标记事件名,箭

38、头表示转换方向。示意图:转换方向。示意图:初始状态;初始状态;最终状态。进入最终状态。进入最终状态隐含着对象消失。最终状态隐含着对象消失。例:象棋比赛中的单程状态图:例:象棋比赛中的单程状态图:一般将事件追踪图转换成状态图。一般将事件追踪图转换成状态图。第34页,共73页。二、建立动态模型的过程:二、建立动态模型的过程:1 1、准备脚本、准备脚本 编写脚本的过程,实质上就是分析用户编写脚本的过程,实质上就是分析用户对系统交互行为的要求的过程。在编写脚本对系统交互行为的要求的过程。在编写脚本的过程中,需要与用户充分交换意见,编写的过程中,需要与用户充分交换意见,编写后还应该经过他们审查与修改。后

39、还应该经过他们审查与修改。动态分析寻找事件的开始,然后确定各对动态分析寻找事件的开始,然后确定各对象的可能事件的顺序。象的可能事件的顺序。例:要建一个自动取款机的动态模型,就要找出例:要建一个自动取款机的动态模型,就要找出取款事件、存款事件、查询事件。取款事件、存款事件、查询事件。第35页,共73页。2 2、确定事件、确定事件 确定所有事件、条件和外部事件确定所有事件、条件和外部事件,事,事件包括所有来自用户和设备的输入信息和发件包括所有来自用户和设备的输入信息和发行出去给用户和设备的输出信息。行出去给用户和设备的输出信息。不要有遗不要有遗漏、异常事件和条件。漏、异常事件和条件。3 3、准备事

40、件跟踪表、准备事件跟踪表 列出一个事件排序表。列出一个事件排序表。下一页打电话下一页打电话事件排序表事件排序表4 4、构造状态图、构造状态图 将事件表变成将事件表变成反映状态与事件的关系反映状态与事件的关系状状态图。态图。利用状态图发现是否有遗漏的情况。利用状态图发现是否有遗漏的情况。第36页,共73页。打电话者打电话者 电话线电话线 接电话者接电话者 拿起受话机 电话忙音开始 拨号(8)电话忙音结束 拨号(2)拨号(2)铃声 电话振铃 响应电话 停止振铃 停止振铃 通话 通话 挂断电话 电话切断 电话切断 挂断电话 第37页,共73页。10.5 10.5 建立功能模型建立功能模型 功能模型功

41、能模型描述了系统的所有计算描述了系统的所有计算,即,即系统内部数据系统内部数据的传送和处理的传送和处理,功能模型定义功能模型定义“做什么做什么”,动态模型,动态模型定义定义“什么时间做什么时间做”做的顺序,对象模型定义做的顺序,对象模型定义“对谁对谁做做”。功能模型不考虑计算的次序,它由多张数据流图功能模型不考虑计算的次序,它由多张数据流图组成。数据流图中包含处理、数据流、动作对象和数据组成。数据流图中包含处理、数据流、动作对象和数据存储对象。存储对象。其中的处理功能可以用其中的处理功能可以用IPO图图(或表或表)、伪码等多、伪码等多种方式进一步描述。种方式进一步描述。1 1、处理:、处理:数

42、据流图中的处理用来改变数据值,椭圆表示数据流图中的处理用来改变数据值,椭圆表示处理,其中含有对处理的描述,各处理均有输入流和处理,其中含有对处理的描述,各处理均有输入流和输出流。输出流。第38页,共73页。2 2、数据流、数据流:数据流将对象的输出与处理;处理与对象的输数据流将对象的输出与处理;处理与对象的输入;处理与处理联系起来入;处理与处理联系起来。3 3、动作对象:、动作对象:为数据流的输入流的产生对象和输出流的接收对象。为数据流的输入流的产生对象和输出流的接收对象。如果动作对象位于数据流图的边界,既是输入流的源点和输如果动作对象位于数据流图的边界,既是输入流的源点和输出流的终点,出流的

43、终点,动作对象用长方形表示。动作对象用长方形表示。控制流控制流 数据流数据流 数据存储区数据存储区产生对象1过程1过程2接收对象2第39页,共73页。4 4、数据存储对象、数据存储对象 它与动作对象不一样,其本身不产生它与动作对象不一样,其本身不产生任何操作,它只响应存储和访问数据的要求,任何操作,它只响应存储和访问数据的要求,存储可以用文件来实现,而动作对象也可用存储可以用文件来实现,而动作对象也可用外部设备来体现。外部设备来体现。5 5、建立功能模块的过程:、建立功能模块的过程:1 1、确定输入值、输出值。、确定输入值、输出值。2 2、建立数据流图、建立数据流图第40页,共73页。小结小结

44、 面向对象的分析过程:面向对象的分析过程:面向对象的分析和高层设计,就是在了解面向对象的分析和高层设计,就是在了解业务和用户的需求基础上建立出这三个模业务和用户的需求基础上建立出这三个模型(对象、动态、功能)。型(对象、动态、功能)。第41页,共73页。第十一章第十一章 面向对象的设计面向对象的设计 面向对象的分析缩写为面向对象的分析缩写为OOAOOA,面向对象的设计缩写,面向对象的设计缩写为为OODOOD。一、什么是面向对象的设计一、什么是面向对象的设计面向对象的设计是把分析阶段得到的需求,(即三个模型)面向对象的设计是把分析阶段得到的需求,(即三个模型)转变到计算机系统要实现方案的过程中;

45、转变到计算机系统要实现方案的过程中;面向对象分析到面向对象设计是一个面向对象分析到面向对象设计是一个逐步扩充模型的过程;逐步扩充模型的过程;尽管面向对象的分析和设计的定义有明显区别,但在实尽管面向对象的分析和设计的定义有明显区别,但在实际的软件际的软件开发过程中二者的界限是模糊的开发过程中二者的界限是模糊的,许多分析可以,许多分析可以直接映射成设计结果,而设计过程中又往往会加深和补直接映射成设计结果,而设计过程中又往往会加深和补充对系统需求的理解,从而进一步完善分析结果。充对系统需求的理解,从而进一步完善分析结果。第42页,共73页。因此因此分析和设计活动是一个多次反复迭分析和设计活动是一个多

46、次反复迭代的过程,代的过程,面向对象方法学在概念和表现方面向对象方法学在概念和表现方法上的一致性,保证了在各项开发活动之间法上的一致性,保证了在各项开发活动之间的平滑(的平滑(无缝无缝)过度,领域专家和开发人员过度,领域专家和开发人员能够比较容易地跟踪整个系统开发过程,这能够比较容易地跟踪整个系统开发过程,这是面向对象方法与传统比起来具有的一大优是面向对象方法与传统比起来具有的一大优势。势。二、相对结构化设计方法的总体设计和详细二、相对结构化设计方法的总体设计和详细设计,面向对象设计也可设计,面向对象设计也可大致分成系统设计大致分成系统设计和对象设计。和对象设计。第43页,共73页。11.1

47、11.1 面向对象设计的准则面向对象设计的准则 模块化设计的几条基本原理,在面向对模块化设计的几条基本原理,在面向对象设计时仍适用,但增加了一些新的特点。象设计时仍适用,但增加了一些新的特点。面向对象设计的准则:面向对象设计的准则:1 1、模块化、模块化 支持把系统分成模块的设计原理:对象支持把系统分成模块的设计原理:对象就是模块,它是把数据结构和操作这些数据就是模块,它是把数据结构和操作这些数据的方法紧密地结合在一起所构成的模块。的方法紧密地结合在一起所构成的模块。2 2、抽象、抽象 面向对象的方法不仅支持工程抽象而且面向对象的方法不仅支持工程抽象而且支持数据抽象,类实际上是一种规格说明抽支

48、持数据抽象,类实际上是一种规格说明抽象。象。第44页,共73页。3 3、信息隐蔽、信息隐蔽 在面向对象的方法中,信息隐蔽通过在面向对象的方法中,信息隐蔽通过对象的封装性来实现。对象的封装性来实现。对类的用户来说,属性的表示方法和对类的用户来说,属性的表示方法和操作的实现算法都应该是隐蔽的。操作的实现算法都应该是隐蔽的。4 4、低耦合、低耦合 在面向对象方法中,对象是最基本的在面向对象方法中,对象是最基本的模块,因此耦合主要指不同对象之间相互模块,因此耦合主要指不同对象之间相互关联的紧密程度,低耦合是设计的一个重关联的紧密程度,低耦合是设计的一个重要标准。要标准。第45页,共73页。5 5、高内

49、聚、高内聚 面向对象设计存在下述三种内聚:面向对象设计存在下述三种内聚:1 1)操作内聚:操作内聚:一个操作只能完成一个功能。一个操作只能完成一个功能。2 2)类内聚:类内聚:一个类应该只有一个用途,它的属性和操作是一个类应该只有一个用途,它的属性和操作是高内聚的,不包含无用的属性和操作,如果某个类高内聚的,不包含无用的属性和操作,如果某个类有多个用途,通常应该把它分解成多个专用类。有多个用途,通常应该把它分解成多个专用类。3 3)一般一般具体内聚:具体内聚:设计类的一般设计类的一般具体结构应该符合多数人的具体结构应该符合多数人的概念,准确地说:这种结构应该是对象应用领域知概念,准确地说:这种

50、结构应该是对象应用领域知识的正确抽取。识的正确抽取。第46页,共73页。11.2 11.2 面向对象设计的启发规则面向对象设计的启发规则 虽然面向对象开发软件的历史不长,但人的虽然面向对象开发软件的历史不长,但人的也积累了一些经验,这经验能帮助软件开发也积累了一些经验,这经验能帮助软件开发人员提高开发软件的质量,这些经验称启发人员提高开发软件的质量,这些经验称启发规则:规则:1 1、设计结果应清晰易懂,、设计结果应清晰易懂,(用词一致,避免(用词一致,避免模糊定义,使用已有的协议等)。模糊定义,使用已有的协议等)。2 2、一般、一般具体结构的深度应适当具体结构的深度应适当,(中等,(中等规模系

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

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(软件工程电子教案第九十二章面向对象课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|