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