《软件工程导论》课件_第1页
《软件工程导论》课件_第2页
《软件工程导论》课件_第3页
《软件工程导论》课件_第4页
《软件工程导论》课件_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件工程导论主讲教师吴开军2021/8/171软件工程导论主讲教师吴开军2021/8/171面向对象的开发方法第一节面向对象概述第二节面向对象的基本概念第三节面向对象分析第四节面向对象设计第五节面向对象实现2021/8/172面向对象的开发方法第一节面向对象概述2021/8/172第一节面向对象概述一、发展概述面向对象并非是一个新的概念,实际上它已有30多年的历史。寻其根源可追溯到60年代的挪威,当时挪威计算中心的KristenNygaard和Ole-JohanDahl开发了一种称作Simula67的语言。Simula67首次引入了类、协同程序和子类的概念,这很象今天的面向对象语言。70年代中期,XeroxPaloAlto研究中心的研究人员设计了Smalltalk语言,该语言的每个元素都被当作一个对象来实现,其程序设计环境及相关的各个方面都是面向对象的。2021/8/173第一节面向对象概述一、发展概述2021/8/173第一节面向对象概述但是,面向对象的推广很慢。例如:Samlltalk的成果直到1981年8月因Byte杂志的介绍才为外界所知,许多软件开发人员了解Samlltalk时,都把它看作是一个窗口系统,而不是程序设计技术的一次革命。80年代,C成为很受欢迎的程序设计语言,它不仅可用在微机上,还可用在多种结构的系统和环境中。80年代早期,AT&T贝尔实验室的BjarneStroustrup把C语言扩展为支持面向对象程序设计的C++。在C++中,程序员可以在其熟悉的语言环境下学习掌握面向对象的程序设计技术,而不必去探究一种新的语言和环境。2021/8/174第一节面向对象概述但是,面向对象的推广很慢。例如:Sam第一节面向对象概述自90年代以来,软件与硬件之间的差距至少有两代处理器之多,并且这种差距还在增大。当软件系统变得更加复杂时,常规软件工具、技术和概念已不足以应付,从而使软件开发者陷入了困境。但面向对象的方法能够控制软件的复杂性,从而促进了面向对象的发展,掀起了一股“面向对象”热。2021/8/175第一节面向对象概述自90年代以来,软件与硬件之间的差距至第一节面向对象概述二、研究领域目前国内外关于面向对象的研究领域主要在以下几个方面:1.理论:包括方法、面向对象设计的本质以及语义模型的研究。2.语言:包括现有面向对象的程序设计语言的研究、设计新的面向对象的程序语言,将面向对象的设计思想引入其它语言(如Ada,Prolog,Lisp,C,Pascal,Foxpro等)3.实现:包括体系结构的支撑、编译与解释、其它特殊技术等。4.环境:包括面向对象的软件开发环境的设计与实现。2021/8/176第一节面向对象概述二、研究领域2021/8/176第一节面向对象概述5.重用:为了实现重用,需要研究对象的规格说明等。6.原型:面向对象的设计方法如何用于实现快速原型。7.应用:将面向对象的设计方法用于商业、教育及科学等实际问题的处理中。8.其它方面:将面向对象的设计方法用到数据库、操作系统、知识工程、人工智能、自然语言处理等其它领域。2021/8/177第一节面向对象概述5.重用:为了实现重用,需要研究对象的第二节面向对象的基本概念一、对象1.定义对象是和有数据及可对这些数据施加的操作结合在一起所构成的独立单位的总称,是具有一定知识和处理能力的独立个体。它可以是具体的物理实体,如一个文件;也可是是人为抽象概念的,如多任务操作系统中的调度策略。从面向对象程序设计的角度看:对象是具有相同状态的一组操作的集合。从信息模拟的角度看:对象是对问题域中某个东西的抽象,这种抽象反映了系统保存有关这个东西的信息和与它交互的能力,即对象是对属性值和操作的封装。2021/8/178第二节面向对象的基本概念一、对象2021/8/178第二节面向对象的基本概念从形式化角度看:对象::=<ID,MS,DS,MI>其中:ID是对象的标识或名字,MS是对象中的数据集合,DS是对象中的数据结构,MI是对象受理的消息名集合。2021/8/179第二节面向对象的基本概念从形式化角度看:2021/8/1第二节面向对象的基本概念2.特点标识唯一性:指对象是可区分的,并且由对象的内在本质来区分,而不是通过描述来区分。分类性:指可以将具有相同数据结构(属性)和行为(操作)的对象抽象成类。多态性:指同一个操作可以是不同对象的行为。封闭性:从外面看只能看到对象的外部特性,即能够受理哪些信息,具有哪些处理能力;对象的内部,即处理能力的实行和内部状态,对外是不可见的。从外面不能直接使用对象的处理能力,也不能直接修改其内部状态,对象的内部状态只能由其自身改变。2021/8/1710第二节面向对象的基本概念2.特点2021/8/1710第二节面向对象的基本概念动态产生性:对象是在系统执行过程中根据需要而动态产生的。一定的“智力”性:对象具有一定的“智力”,表现在能够解释传来的信息,理解由消息带来的要求,并独立2021/8/1711第二节面向对象的基本概念动态产生性:对象是在系统执行过程第二节面向对象的基本概念二、类1.定义类是对象类的略写,是对象的抽象,是一种对象模型,它描述了属于该对象类型的所有对象的性质。例如:Integer是一个整数类,它描述了所有整数的性质。2.实现类是关于对象性质的描述,包括外部特性和内部实现两个方面。类通过描述消息模式及其相应的处理能力定义类的外部属性,通过描述内部状态的表现形式及固有处理能力的实现定义类的内部实现。2021/8/1712第二节面向对象的基本概念二、类2021/8/1712类的实现图示消息模式1:处理能力1

……消息模式n:处理能力n消息模式1

处理能力1的实现

……消息模式n

处理能力n的实现内部状态的表现形式外部特性内部实现2021/8/1713类的实现图示消息模式1:处理能力1

……消息模式1

第二节面向对象的基本概念3.父类、子类、超类父类:一个类的上层是父类。子类:一个类的下层是子类。超类:如果C2是C1的子类,C3是C2的子类,则C1是C3的超类。4.描述类名

属性、方法等

2021/8/1714第二节面向对象的基本概念3.父类、子类、超类类名2021第二节面向对象的基本概念三、实例实例是某个具体类所描述的一个具体对象。例如:“张三”、“李四”是类“中国人”的实例。对象既可以是一个具体的对象,也可以泛指一般的对象;而实例只能是一个具体的对象。2021/8/1715第二节面向对象的基本概念三、实例2021/8/1715第二节面向对象的基本概念四、消息消息是用来请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。通常一个消息由三部分组成:接收消息的对象消息标识符(即消息名)零个或多个变元例如:MyCircle.Show(Green)MyCircle是接收消息的对象的名字,Show是消息名,Green是消息的变元。2021/8/1716第二节面向对象的基本概念四、消息2021/8/1716第二节面向对象的基本概念如何要求对象完成一定的处理动作?对象间如何进行联系?所有这一切都只能通过消息传递来实现。传递消息的对象称为发送者,接受消息的对象称为接受者。消息中只包含传递者的要求,它告诉接受者需要哪些处理,但并不指示接受者应该怎样完成这些处理。消息完全由接受者解释,接受者独立决定采用什么方式完成所需的处理,发送者对接受者不起任何控制作用。一个对象能够接受不同形式、不同内容的多个消息;相同形式的消息可以送往不同的对象,不同的对象对于形式不同的消息可以有不同的解释,能够做出不同的反映。一个对象可以同时往多个对象传递信息,两个对象也可以同时向某个对象传递消息。2021/8/1717第二节面向对象的基本概念如何要求对象完成一定的处理动作?第二节面向对象的基本概念五、属性属性是类中对象所具有的数据值。如对象Person的属性有姓名、年龄、体重等。不同对象的同一属性可以具有相同或不同的属性值。如张三的年龄为19,李四的年龄为20。张三、李四是两个不同的对象,他们共同属性“年龄”的值不同。属性值应该指的是纯粹的数据值,而不能指对象。属性表示在类图中的第二部分。每个属性名后均可附加一些说明,诸如类型和缺省值之类。2021/8/1718第二节面向对象的基本概念五、属性2021/8/1718第二节面向对象的基本概念六、操作和方法对象所能执行的操作称为方法,也就是类中所定义的服务。方法描述了对象执行操作的算法、响应消息的操作。每个操作都有一目标对象作为其隐含参数,操作的行为取决于其目标对象所归属的类。对象“知道”其所归属的类,所以能正确地实现该操作。同一操作可适用于不同的类。操作的多态性指的是在不同的类中,同一操作的形式不同。2021/8/1719第二节面向对象的基本概念六、操作和方法2021/8/17第二节面向对象的基本概念七、继承性广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们。在面向对象中,继承是子类自动地共享基类中定义的数据和方法的机制。父类:类的上层子类:类的下层2021/8/1720第二节面向对象的基本概念七、继承性2021/8/1720第二节面向对象的基本概念A的操作A的变量类A类AA的实例变量A的实例a1从A继承特性B的操作B的变量类B:A的子类类B继承来的A的实例变量B的实例变量B的实例b1实现继承机制的原理2021/8/1721第二节面向对象的基本概念A的操作A的变量类A类AA的实例第二节面向对象的基本概念继承具有传递性如果类C继承类B,类B继承类A,则类C继承类A。单继承与多继承单继承:一个类只允许有一个父类,即类等级为树形结构。多继承:一个类允许有多个父类2021/8/1722第二节面向对象的基本概念继承具有传递性2021/8/17第二节面向对象的基本概念继承性的优点共享程序代码和数据结构,大大减少程序中的冗余信息,提高软件的可重用性。便于软件修改维护。当需要扩充原有的功能时,派生类的方法可以调用其基类的方法,并在此基础上增加必要的程序代码;当需要完全改变原有的算法时,可以在派生类中实现一个与基类方法同名而算法不同的方法;当需要增加新的功能时,可以在派生类中实现一个新的方法。“站在巨人的肩头上”。用户在开发新系统时不必从零开始,可以继承原有相似功能或者从类库中选取需要的类,再派生新类。2021/8/1723第二节面向对象的基本概念继承性的优点2021/8/172第二节面向对象的基本概念八、多态性对象根据所接受的消息而做出动作,同样的消息为不同的对象接受时可导致完全不同的行动,该现象称为多态性。利用多态性,用户能够发送一般形式的消息,而将所有的实现细节都留给接受消息的对象。优点:多态性机制增加了面向对象软件系统的灵活性,进一步减少了信息冗余。显著提高软件的可重用性和可扩展性。2021/8/1724第二节面向对象的基本概念八、多态性2021/8/1724第二节面向对象的基本概念九、重载函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字。运算符重载是指同一个运算符可以施加于不同类型的操作数上面。优点:重载进一步提高了面向对象系统的灵活性和可读性。2021/8/1725第二节面向对象的基本概念九、重载2021/8/1725第二节面向对象的基本概念十、封装封装是指将方法与数据同放于一对象中以使对数据的存取只通过该对象本身的方法。面向对象程序的其它部分(对象以外的部分)都不能直接作用于一对象的数据,对象间的通信只能通过明确的消息来进行。2021/8/1726第二节面向对象的基本概念十、封装2021/8/1726第二节面向对象的基本概念面向对象传统技术方法过程、函数或子例程实例变量数据消息过程或参数调用类抽象数据类型继承无类似技术调用处于系统控制之下调用处于程序员控制之下2021/8/1727第二节面向对象的基本概念面向对象传统技术方法过程、函数或软件工程导论主讲教师吴开军2021/8/1728软件工程导论主讲教师吴开军2021/8/171面向对象的开发方法第一节面向对象概述第二节面向对象的基本概念第三节面向对象分析第四节面向对象设计第五节面向对象实现2021/8/1729面向对象的开发方法第一节面向对象概述2021/8/172第一节面向对象概述一、发展概述面向对象并非是一个新的概念,实际上它已有30多年的历史。寻其根源可追溯到60年代的挪威,当时挪威计算中心的KristenNygaard和Ole-JohanDahl开发了一种称作Simula67的语言。Simula67首次引入了类、协同程序和子类的概念,这很象今天的面向对象语言。70年代中期,XeroxPaloAlto研究中心的研究人员设计了Smalltalk语言,该语言的每个元素都被当作一个对象来实现,其程序设计环境及相关的各个方面都是面向对象的。2021/8/1730第一节面向对象概述一、发展概述2021/8/173第一节面向对象概述但是,面向对象的推广很慢。例如:Samlltalk的成果直到1981年8月因Byte杂志的介绍才为外界所知,许多软件开发人员了解Samlltalk时,都把它看作是一个窗口系统,而不是程序设计技术的一次革命。80年代,C成为很受欢迎的程序设计语言,它不仅可用在微机上,还可用在多种结构的系统和环境中。80年代早期,AT&T贝尔实验室的BjarneStroustrup把C语言扩展为支持面向对象程序设计的C++。在C++中,程序员可以在其熟悉的语言环境下学习掌握面向对象的程序设计技术,而不必去探究一种新的语言和环境。2021/8/1731第一节面向对象概述但是,面向对象的推广很慢。例如:Sam第一节面向对象概述自90年代以来,软件与硬件之间的差距至少有两代处理器之多,并且这种差距还在增大。当软件系统变得更加复杂时,常规软件工具、技术和概念已不足以应付,从而使软件开发者陷入了困境。但面向对象的方法能够控制软件的复杂性,从而促进了面向对象的发展,掀起了一股“面向对象”热。2021/8/1732第一节面向对象概述自90年代以来,软件与硬件之间的差距至第一节面向对象概述二、研究领域目前国内外关于面向对象的研究领域主要在以下几个方面:1.理论:包括方法、面向对象设计的本质以及语义模型的研究。2.语言:包括现有面向对象的程序设计语言的研究、设计新的面向对象的程序语言,将面向对象的设计思想引入其它语言(如Ada,Prolog,Lisp,C,Pascal,Foxpro等)3.实现:包括体系结构的支撑、编译与解释、其它特殊技术等。4.环境:包括面向对象的软件开发环境的设计与实现。2021/8/1733第一节面向对象概述二、研究领域2021/8/176第一节面向对象概述5.重用:为了实现重用,需要研究对象的规格说明等。6.原型:面向对象的设计方法如何用于实现快速原型。7.应用:将面向对象的设计方法用于商业、教育及科学等实际问题的处理中。8.其它方面:将面向对象的设计方法用到数据库、操作系统、知识工程、人工智能、自然语言处理等其它领域。2021/8/1734第一节面向对象概述5.重用:为了实现重用,需要研究对象的第二节面向对象的基本概念一、对象1.定义对象是和有数据及可对这些数据施加的操作结合在一起所构成的独立单位的总称,是具有一定知识和处理能力的独立个体。它可以是具体的物理实体,如一个文件;也可是是人为抽象概念的,如多任务操作系统中的调度策略。从面向对象程序设计的角度看:对象是具有相同状态的一组操作的集合。从信息模拟的角度看:对象是对问题域中某个东西的抽象,这种抽象反映了系统保存有关这个东西的信息和与它交互的能力,即对象是对属性值和操作的封装。2021/8/1735第二节面向对象的基本概念一、对象2021/8/178第二节面向对象的基本概念从形式化角度看:对象::=<ID,MS,DS,MI>其中:ID是对象的标识或名字,MS是对象中的数据集合,DS是对象中的数据结构,MI是对象受理的消息名集合。2021/8/1736第二节面向对象的基本概念从形式化角度看:2021/8/1第二节面向对象的基本概念2.特点标识唯一性:指对象是可区分的,并且由对象的内在本质来区分,而不是通过描述来区分。分类性:指可以将具有相同数据结构(属性)和行为(操作)的对象抽象成类。多态性:指同一个操作可以是不同对象的行为。封闭性:从外面看只能看到对象的外部特性,即能够受理哪些信息,具有哪些处理能力;对象的内部,即处理能力的实行和内部状态,对外是不可见的。从外面不能直接使用对象的处理能力,也不能直接修改其内部状态,对象的内部状态只能由其自身改变。2021/8/1737第二节面向对象的基本概念2.特点2021/8/1710第二节面向对象的基本概念动态产生性:对象是在系统执行过程中根据需要而动态产生的。一定的“智力”性:对象具有一定的“智力”,表现在能够解释传来的信息,理解由消息带来的要求,并独立2021/8/1738第二节面向对象的基本概念动态产生性:对象是在系统执行过程第二节面向对象的基本概念二、类1.定义类是对象类的略写,是对象的抽象,是一种对象模型,它描述了属于该对象类型的所有对象的性质。例如:Integer是一个整数类,它描述了所有整数的性质。2.实现类是关于对象性质的描述,包括外部特性和内部实现两个方面。类通过描述消息模式及其相应的处理能力定义类的外部属性,通过描述内部状态的表现形式及固有处理能力的实现定义类的内部实现。2021/8/1739第二节面向对象的基本概念二、类2021/8/1712类的实现图示消息模式1:处理能力1

……消息模式n:处理能力n消息模式1

处理能力1的实现

……消息模式n

处理能力n的实现内部状态的表现形式外部特性内部实现2021/8/1740类的实现图示消息模式1:处理能力1

……消息模式1

第二节面向对象的基本概念3.父类、子类、超类父类:一个类的上层是父类。子类:一个类的下层是子类。超类:如果C2是C1的子类,C3是C2的子类,则C1是C3的超类。4.描述类名

属性、方法等

2021/8/1741第二节面向对象的基本概念3.父类、子类、超类类名2021第二节面向对象的基本概念三、实例实例是某个具体类所描述的一个具体对象。例如:“张三”、“李四”是类“中国人”的实例。对象既可以是一个具体的对象,也可以泛指一般的对象;而实例只能是一个具体的对象。2021/8/1742第二节面向对象的基本概念三、实例2021/8/1715第二节面向对象的基本概念四、消息消息是用来请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。通常一个消息由三部分组成:接收消息的对象消息标识符(即消息名)零个或多个变元例如:MyCircle.Show(Green)MyCircle是接收消息的对象的名字,Show是消息名,Green是消息的变元。2021/8/1743第二节面向对象的基本概念四、消息2021/8/1716第二节面向对象的基本概念如何要求对象完成一定的处理动作?对象间如何进行联系?所有这一切都只能通过消息传递来实现。传递消息的对象称为发送者,接受消息的对象称为接受者。消息中只包含传递者的要求,它告诉接受者需要哪些处理,但并不指示接受者应该怎样完成这些处理。消息完全由接受者解释,接受者独立决定采用什么方式完成所需的处理,发送者对接受者不起任何控制作用。一个对象能够接受不同形式、不同内容的多个消息;相同形式的消息可以送往不同的对象,不同的对象对于形式不同的消息可以有不同的解释,能够做出不同的反映。一个对象可以同时往多个对象传递信息,两个对象也可以同时向某个对象传递消息。2021/8/1744第二节面向对象的基本概念如何要求对象完成一定的处理动作?第二节面向对象的基本概念五、属性属性是类中对象所具有的数据值。如对象Person的属性有姓名、年龄、体重等。不同对象的同一属性可以具有相同或不同的属性值。如张三的年龄为19,李四的年龄为20。张三、李四是两个不同的对象,他们共同属性“年龄”的值不同。属性值应该指的是纯粹的数据值,而不能指对象。属性表示在类图中的第二部分。每个属性名后均可附加一些说明,诸如类型和缺省值之类。2021/8/1745第二节面向对象的基本概念五、属性2021/8/1718第二节面向对象的基本概念六、操作和方法对象所能执行的操作称为方法,也就是类中所定义的服务。方法描述了对象执行操作的算法、响应消息的操作。每个操作都有一目标对象作为其隐含参数,操作的行为取决于其目标对象所归属的类。对象“知道”其所归属的类,所以能正确地实现该操作。同一操作可适用于不同的类。操作的多态性指的是在不同的类中,同一操作的形式不同。2021/8/1746第二节面向对象的基本概念六、操作和方法2021/8/17第二节面向对象的基本概念七、继承性广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们。在面向对象中,继承是子类自动地共享基类中定义的数据和方法的机制。父类:类的上层子类:类的下层2021/8/1747第二节面向对象的基本概念七、继承性2021/8/1720第二节面向对象的基本概念A的操作A的变量类A类AA的实例变量A的实例a1从A继承特性B的操作B的变量类B:A的子类类B继承来的A的实例变量B的实例变量B的实例b1实现继承机制的原理2021/8/1748第二节面向对象的基本概念A的操作A的变量类A类AA的实例第二节面向对象的基本概念继承具有传递性如果类C继承类B

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论