面向对象的软件工程.ppt
《面向对象的软件工程.ppt》由会员分享,可在线阅读,更多相关《面向对象的软件工程.ppt(82页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第8章 面向对象的软件工程 第8章 面向对象的软件工程 8.1 软件工程的新途径软件工程的新途径 8.2 面向对象建模面向对象建模 8.3 对象模型对象模型 8.4 动态模型动态模型 8.5 功能模型功能模型 第8章 面向对象的软件工程 8.1 8.1 软件工程的新途径软件工程的新途径8.1.1 8.1.1 面向对象的思想面向对象的思想 在前面,我们介绍了传统的软件工程方法,这部分我们将要介绍一种新方法。20世纪70年代末,面向对象方法学的一些基本概念已在系统工程领域内萌发了出来,如对于系统中的某个模块或构件,可表示为问题空间的一个对象或一类对象。到了20世纪80年代,面向对象的程序设计方法得
2、到了很快的发展,并显示出其强大的生命力,因此使面向对象技术在系统工程、计算机、人工智能等领域得到了广泛的应用。在更高的层次上、更广泛的领域内开展面向对象技术的热点研究是在20世纪90年代,到目前,这种技术已得到了广泛的应用,面向对象方法已成为软件工程的一种新途径。面向对象可以表示为 面向对象(OO,Object Oriented)=对象+类+继承+通信第8章 面向对象的软件工程 面向对象的基本思想是将一个实际问题看成是一个对象或几个对象的集合。面向对象分析过程是在系统所要求解的问题中找出对象(属性和行为)以及它所属的类,并定义对象与类;面向对象设计是把系统所要求解的问题分解为一些对象及对象间传
3、递消息的过程;面向对象实现是把数据和出路数据的过程结合为一个对象。对象既可以像数据一样被处理,又可以像过程一样被描述处理的流程和细节。总之,面向对象分析到面向对象设计再到面向对象实现(即OOAOODOOI)不用转换。第8章 面向对象的软件工程 8.1.2 8.1.2 面向对象的基本概念面向对象的基本概念 1.1.对象对象(Object)(Object)我们把客观世界的实体称之为问题空间(问题域)的对象。例如,一个人可以是一个对象,一条信息可以是一个对象,一本书可以是一个对象,一家图书馆也可以是一个对象。可见,对象是以初始的对象为基本元素,经过层层组合而成的。因此,整个客观世界可认为是一个最复杂
4、的对象。第8章 面向对象的软件工程 对象是一个由信息及有关对它进行处理的描述所组成的包。在面向对象的程序设计中,“对象”是系统中的基本运行实体,也就是说,“对象”是具有特殊属性(数据)和行为方式(方法)的实体。对象的特殊属性就确定了给定时刻对象的状态,用数据值来描述它的状态,例如,用学号、姓名、性别、年龄和专业等数据值描述一个学生对象的状态。与每一个对象相关的方法定义了该对象上的操作,例如,学生信息登记、学生专业查询等方法定义了学生对象的操作。因此,对象是数据和操作的封装体,如图8.1所示。第8章 面向对象的软件工程 图8.1 对象 第8章 面向对象的软件工程 2.2.类类(Class)(Cl
5、ass)1)类的概念 类是对一个或几个相似对象的描述。类是具有相同(或相似)属性和操作的对象的集合,类是对象的抽象,而对象是类的具体化。换句话说,类是对象的模板,而对象是类的实例(Instance)。第8章 面向对象的软件工程 类是一个抽象数据类型的实现,它定义的是一种对象类型,它描述了属于该类型的所有对象的性质。例如,Integer是一个类,它描述了所有整数的性质(包括整数的算术运算和大小比较的实现),“2”、“3”和“5”等这些具体整数都是Integer这个类的对象,都具备算术运算和大小比较的处理能力。所以说,类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性;类具有操作,它是对象
6、的行为的抽象,用操作名和实现该操作的方法来描述类的操作。对象是在执行过程中由其所属的类动态创建的,一个类可以创建多个不同的对象。类中的所有数据是私有的,该数据必须通过类的公共接口(成员函数)来访问。第8章 面向对象的软件工程 2)类的层次 一个类的上层可以有超类(Superclass),下层可以有子类(Subclass),形成一种层次结构。超类也称基类,子类也称派生类。这种类之间的结构关系主要有两种:一般与特殊结构关系和整体与部分结构关系。一般与特殊结构关系又称为分类结构关系,也就是“is a”关系。例如,飞机和交通工具都是类,它们之间的关系是“is a”关系,飞机是一种特殊的交通工具。通常,
7、越上层的类越具有一般性和共性,越下层的类越特殊、越具体。现实世界中的一般化的抽象关系用类的这种结构关系来描述。第8章 面向对象的软件工程 整体与部分结构关系称为组装结构关系,也就是“has a”关系。例如,飞机和发动机都是类,它们之间的关系是“has a”关系,发动机是飞机的一部分。通常,上层的类具有整体性,下层的类具有部分性、成员性。现实世界中的组成的抽象关系用类的这种结构关系来描述。第8章 面向对象的软件工程 3.3.消息和方法消息和方法(Message and Method)(Message and Method)消息用来请求对象执行某一处理或回答某些信息的要求。对象间的通信是通过消息传
8、递来实现的。消息传递是对象间的一种通信机制。某一对象在执行相应的处理时,如果需要,它可以通过传递消息请求其他对象完成某些处理工作或回答某些信息;其他对象在执行所要求的处理活动时,同样可以通过消息传递与别的对象通信。因此,在面向对象程序设计中,程序的执行是靠在对象间传递消息来完成的,如图8.2所示。第8章 面向对象的软件工程 图8.2 消息传递第8章 面向对象的软件工程 发送消息的对象称为发送者,接收消息的对象称为接收者。消息中只包含发送者的要求,它告诉接收者需要完成哪些处理,但并不指示接收者应该怎样完成这些处理。消息完全由接收者解释,接收者独立决定采用什么方式完成所需的处理。发送一条消息必须包
9、含接收者的对象名、发送给该对象的消息名(即对象名.方法名)以及传递消息的参数说明等。参数可以是接收者的局部变量或所有对象都使用的全局变量。方法是类中操作的实现过程。一个方法包含方法名、参数和方法体。当一个对象接收到一条消息后,它所包含的方法决定对象该做怎样的处理。对象的内部信息是隐蔽的(私有的),对象间只能通过消息来连接,而对象私有的数据是用它的方法访问的。第8章 面向对象的软件工程 4.4.继承性继承性(Inheritance)(Inheritance)继承性是共享类、子类和对象中的方法和数据的机制。当类A不但具有类B的属性,而且还具有自己的独特属性时,这时称类A继承了类B,继承关系常称“即
10、是”(is a)关系。当类A继承类B时(如图8.3所示),就表明类A是类B的子类,而类B是类A的超类。子类A由两部分组成:继承部分和增加部分。继承部分是从B继承来的,增加部分是专为A编写的新代码。第8章 面向对象的软件工程 继承具有传递性。类的层次结构的一个重要特点是继承性。一个类(直接)继承其超类的全部描述。这种继承具有传递性,即如果C1继承C2,C2继承C3,则C1(间接)继承C3。所以,一个类实际上继承了层次结构中在其上面的所有类的全部描述。因此,属于某个类的对象除具有该类所描述的特性外,还具有层次结构中该类上面所有类描述的全部特性。继承分为单重继承和多重继承两类。在类的层次结构中,一个
11、类可以有多个子类,也可以有多个超类。如果一个类至多只能有一个超类,则一个类至多只能直接继承一个类,这种继承方式称为单重或简单继承(Single Inheritance),如图8.3所示。简单继承是树型结构。如果一个类可以直接继承多个类,这种继承方式称为多重继承(Multiple Inheritance),如图8.4所示。多重继承是网状结构。第8章 面向对象的软件工程 图8.3 简单继承 第8章 面向对象的软件工程 图8.4 多重继承第8章 面向对象的软件工程 5.5.封装性封装性(Encapsulation)(Encapsulation)封装是面向对象的一个重要概念。封装是一种信息隐蔽技术,用
12、户只能见到对象封装界面上的信息,对象内部对用户是隐蔽的。也就是说,用户只知道某对象是“做什么”的,不知道“怎么做”。封装将外部接口与内部实现分离开来,用户不必知道行为实现的细节,只须用消息来访问该对象。封装体现了良好的模块性,它将定义模块和实现模块分开。封装使对象的内部软件的范围有清楚边界,有一个描述该对象和其他的对象之间通信的接口;使得模快内部的数据受到很好的保护,避免外部的干扰。封装大大增强了软件的维护性、修改性,这也是软件技术追求的目标。第8章 面向对象的软件工程 6.6.多态性多态性(Polymorphism)(Polymorphism)当同样的消息可以被送到一个父类的对象和它的子类的
13、对象上时,被称作多态性。也就是说,在类等级的不同层次中可以共享(公用)一个行为(方法)的名字,然而,不同层次中的每个类却各自按自己的需要来实现这个行为,并得到不同的结果。同一个操作(方法)、函数或过程可以用不同类型的参数调用实现不同的结果。多态即一个名字可具有多种语义。在面向对象的语言中,都有实现多态性的机制,可允许每个对象以自己的解释方式来响应共同的消息。多态性机制不仅增加了面向对象软件系统的灵活性、可理解性和可维护性,进一步减少了信息冗余,而且显著提高了软件的可重用性和可扩充性。第8章 面向对象的软件工程 在面向对象系统中,对象封装了方法,恰好要利用如重名、重定义让各对象以自己的解释方式去
14、执行,而且这种多义性决不会带来混乱,这就是对象的多态性。因为,这些工作不需要涉及具体的数据结构和类型,只是着重于揭示系统的逻辑合理性。这对于需求分析、模型设计极为有利。第8章 面向对象的软件工程 8.2 8.2 面向对象建模面向对象建模 1.1.建模与模型建模与模型 建模是问题域中定义软件解的一种方法。系统开发中,要解决一个实际问题,也就是求该问题的软件解。在解决问题之前,必须首先理解所要解决的问题,其次才是求解。只有对问题理解透彻了,才能解决它。这时我们可以借助于建模的方法来理解问题并解决问题。建模将问题域的解定义成一种模型,以帮助系统分析人员更好地理解问题。第8章 面向对象的软件工程 模型
15、是为了理解问题而对问题作出的一种抽象,而且是对问题的一种无歧义的描述。模型由一组图示符号和组织这些符号的规则组成,利用它们来定义和描述问题域中的术语和概念。或者说,模型是一种思考工具,利用它可以把问题的解规范地表示出来,帮助我们思考问题、定义术语和选择术语以理解问题。第8章 面向对象的软件工程 建模的目的主要是为了减少复杂性。在开发复杂的软件系统时,系统分析员应该从不同角度抽象出目标系统的特性。使用精确的表示方法构造系统的模型,验证模型是否满足用户对目标系统的需求,并在设计过程中逐渐把和实现有关的细节加进模型中,直至最终用程序实现模型。对于那些特别复杂而不能直接理解的系统,更需要建立模型,把复
16、杂的系统分解成若干个子系统、子部分,从而降低系统的复杂程度。第8章 面向对象的软件工程 当系统分析员面对复杂的系统束手无策时,建模是一种有效的方法,模型是一种有效的机制。建立模型后,需要经受用户和各个领域专家的严格评审。审查是为了发现错误和找出目标系统中冗余的需求。然后,清除错误,剔除冗余的需求,挖掘潜在的需求,通过多次修改逐步优化模型,促使软件开发人员透彻地理解问题,从而为软件设计奠定坚实的基础。第8章 面向对象的软件工程 2.2.面向对象模型面向对象模型 面向对象建模是用面向对象技术和方法来定义、描述问题域中的软件解的。对问题域的理解,同样也是面向对象方法开发软件的关键。面向对象方法最基本
17、的原则,是按照人们习惯的思维方式,用面向对象观点建立问题域的模型,开发出尽可能自然地表现求解方法的软件。第8章 面向对象的软件工程 用面向对象方法开发软件,通常需要建立对象模型、动态模型和功能模型三种模型。对象模型是描述系统数据结构的,它始终都是目标系统中最关键、最基本、最核心的;动态模型是描述系统控制结构的;功能模型是描述系统功能的。数据、控制和操作等是这三种模型都涉及到的共同概念,只不过是各自描述的侧重点不同罢了。一个典型的软件系统应包含数据结构(对象模型)、执行操作(动态模型)和完成数据值的变化(功能模型)。这三种模型从不同但又密切相关的角度模拟目标系统,它们各自从不同侧面反映了系统的实
18、质性内容,综合起来则全面地反映了对目标系统的要求。第8章 面向对象的软件工程 用面向对象方法开发软件,在整个开发过程中,三种模型逐步发展、完善。在面向对象分析过程中,构造出完全独立于实现的应用域模型;在面向对象设计过程中,把求解域的结构逐渐加入到模型中;在实现阶段,把应用域和求解域的结构都编成程序代码并进行严格的测试验证。对于大系统来说,建立上述三种模型有助于全面地理解问题域。这三种模型的相对重要程度在不同的应用问题中会有所不同。第8章 面向对象的软件工程 8.3 8.3 对对 象象 模模 型型 对象模型描述了系统的数据结构,它是三个模型的最关键的一个模型。对象模型的作用是描述系统的静态结构,
19、包括构成系统的类和对象、它们的属性和操作,以及它们之间的联系。面向对象方法是以对象为基础来构造系统,而不是以功能为基础来构造系统的。对象模型为建立动态模型和功能模型提供了实质性的框架。对象模型是基础,动态模型和功能模型在此基础上创建。也就是说,一个系统只有创建了对象模型,才能创建动态模型和功能模型。第8章 面向对象的软件工程 在建立对象模型时,我们的目标是从问题域中提炼出对目标系统有价值的概念。用面向对象方法开发软件时,与结构化分析和结构化设计方法不同,各个开发阶段使用的表示方法都是相同的,从前一个阶段到后一个阶段只是做些检查、细化和充实。对象模型的图形符号表示法以及规定组织这些符号的语义规则
20、,即类、对象(类实例)、继承关系、类和(或)对象间其他关系等符号,目前的表示法不统一。面向对象方法学的著名专家,如Grady Booch,Peter CoadEd Yourhon,James Rurnbaugh,Sally Shlaer等人,都提出了自己的表示方法。这些表示方法虽然形式各异,但是,它们有一个共同的特点,那就是独立于具体的开发模式。本书使用Peter CoadEd Yourhon的表示方法。第8章 面向对象的软件工程 8.3.1 8.3.1 类类-对象的表示符号对象的表示符号 1.1.类类-对象对象 “类-对象”是一个专用术语,它代表一个类和该类的对象。表示类-对象的图形符号见图
21、8.5(a),类-对象符号的变种是类符号,表示类的图形符号见图8.5(b)。图8.5 类-对象和类的图形符号第8章 面向对象的软件工程 类符号用一个矩形框表示,由三部分组成,上部分是类的名字,中间部分是该类内定义的属性,下面部分是该类提供的服务,即方法。类-对象符号用类符号外面再加一个虚线框表示,虚线框代表属于该类的对象。一般情况下,类内定义的属性和服务不需写出来,只需在一个矩形框内写上类名代表该类。第8章 面向对象的软件工程 2.2.命名命名 类名是一类对象的名字。命名是否恰当直接影响系统的可理解性。应该使用名词或名词短语命名,例如,图书、课程、公司职员等;尽可能使用专业术语,例如,外部设备
22、、服务台、信号灯等。一般地,应该使用在应用领域中人们习惯的专业术语作为类名,而且含义明确。不要太随便,或刻意创造;名字应该是无歧义性的、简洁的、而且具有描述性的。第8章 面向对象的软件工程 8.3.2 8.3.2 结构的表示符号结构的表示符号 结构是一种思维组织的方式,但在面向对象分析与面向对象设计中,结构是问题域复杂关系的表示,它与系统的任务直接相关,目标系统的任务决定了系统的结构。通常,结构分为一般-特殊结构和整体-部分结构两类。这两种类型的结构均是面向对象分析与面向对象设计方法的重要组成部分。第8章 面向对象的软件工程 1.1.一般一般-特殊结构特殊结构 1)一般-特殊结构的概念 一般-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 软件工程
限制150内