信息系统分析与设计(第三版)陈圣国第7章.ppt
《信息系统分析与设计(第三版)陈圣国第7章.ppt》由会员分享,可在线阅读,更多相关《信息系统分析与设计(第三版)陈圣国第7章.ppt(142页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第7章面向对象开发方法与UML第第7章面向对象开发方法与章面向对象开发方法与UML7.1面向对象开发方法面向对象开发方法 7.2标准建模语言标准建模语言(UML)简介简介 7.3UML静态建模机制简介静态建模机制简介 7.4UML动态建模机制简介动态建模机制简介 7.5RUP简介简介 习题习题 第7章面向对象开发方法与UML7.1面向对象开发方法面向对象开发方法7.1.1面向对象技术的发展过程面向对象技术的发展过程20世纪70年代末至80年代初,计算机应用领域日渐扩大,系统软件和应用软件的需求日益多样化,系统规模日益膨胀,传统的结构化分析方法和面向过程的编程技术已无法给予有效的支持,导致软件的
2、生产方式和效率远远赶不上信息化社会发展的需要。人们开始寻找和研究新的方法和技术,面向对象方法和技术应运而生。第7章面向对象开发方法与UML面向对象(OO,Obeject Oriented)方法和技术起源于面向对象的程序设计语言(OOPL)。20世纪80年代以来,出现了大批OOPL,其实用性、效率不断提高,OO技术开始走向繁荣和实用化。第7章面向对象开发方法与UML面向对象方法适合于解决分析与设计期间的复杂性,实现分析与设计的复用。从20世纪80年代中期开始,面向对象技术的焦点逐渐从程序设计转移到软件工程的其他阶段,面向对象分析与设计(OOAOOD)技术得到了快速的发展,初步形成新的方法论和开发
3、技术。近年来又出现了一些新的高级技术,例如面向对象数据库、对象分布、对象总线、面向对象的系统框架构造以及面向对象的系统集成等。第7章面向对象开发方法与UML7.1.2面向对象方法的基本思想面向对象方法的基本思想传统的结构化开发方法用过程化方式描述应用系统,而面向对象方法认为客观世界是由各种各样的对象组成的,每个对象都有各自的内部状态和运动规律,不同对象之间通过消息传送相互作用和联系就构成了各种不同的系统。第7章面向对象开发方法与UML将对象模型映射到计算机上,面向对象方法将软件系统看成是一系列对象的集合,并强调描述对象性质的数据及行为的紧密联系数据和行为的封装技术。例如,学籍管理系统可以看成是
4、由学生、教师、课程、各种规章制度等多个彼此独立而又相互关联的对象集合而成的。第7章面向对象开发方法与UML面向对象的本质是确定动作的主体在先,而执行动作在后,这种面向对象的模式称为“主体动作”模式。例如学生总是先选定某门课程,然后才去考虑如何学好这门课程。而在窗口系统的界面上,总是先选定一个界面对象(图标或按钮),然后在其上进行相应的操作(例如移动、单击等)。第7章面向对象开发方法与UML反映面向对象本质的“主体动作”模式是与人们对客观世界的认识规律相符合的。因此,采用对象的观点看待所要解决的问题,并将其抽象为系统是极其自然与简单的,符合人类的思维习惯,应用系统也更容易被理解。“主体动作”模式
5、的特点是将对象作为软件系统结构的基本组成单元,以主体数据为中心,对数据和作用在数据上的操作进行封装,以标准接口对外提供服务。第7章面向对象开发方法与UML7.1.3面向对象的基本概念面向对象的基本概念1.对象对象(Object)对象是客观世界中事物在计算机领域中的抽象,是一组数据(描述对象的特性或属性)和施加于该组数据上的一组操作(行为)组成的集合体。例如,Windows系统中窗口上的一个文本框对象包含有外部名(Name)、字体(Font)、数据源()、前景颜色(、高度和宽度(Width)等多种属性,同时还带有单击左键(Click)、双击左键(Double Click)、修改文本(Change
6、)等多个操作。第7章面向对象开发方法与UML对象的属性可以是简单数据类型、结构数据类型,也可以是复杂数据类型(另一个对象)。例如,公司是对象,公司中包含有员工这一属性,而员工本身又是一个对象。从系统的观点出发,可以给对象作如下定义:对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位,一个对象是由一组属性和对这组属性进行操作的一组服务构成的。属性是用来描述对象静态特征的一个数据项,也叫对象特性;服务是用来描述对象动态特征(行为)的一个操作;属性和操作称为对象的性质。第7章面向对象开发方法与UML当系统运行时,系统中的对象显现出其动态特征,即对象内部状态的转换和对象间的相互作用,例
7、如,A对象向B对象传送一个消息,这一消息附带的一个事件可能导致B对象被激发或B对象由于执行某一传送方所要求的操作,改变了某些内部属性值,从而由一个状态转入另一个状态(对象的一个状态是由某些内部属性值构成的)。第7章面向对象开发方法与UML在面向对象系统中,对象之间的相互作用是通过消息传送来进行的。消息是向对象发出的服务请求,它应该含有下述信息:提供服务的对象标识、服务标识、输入信息和回答信息。消息通常由接收对象(提供服务的对象标识)、调用操作名(服务标识)以及必要的参数等三部分组成。第7章面向对象开发方法与UML消息的接收者是提供服务的对象,在设计该对象时,它对外提供的每个服务应规定消息的格式
8、消息协议。消息的发送者是要求服务的对象或其他系统成分,在每个发送点上,需要按服务方规定的消息协议写出一个完整的消息。一个对象在映射为软件实现时由三个部分组成:(1)私有的数据结构。它用于描述对象的内部状态。(2)处理,称为操作或方法。它是施加于数据结构之上的。第7章面向对象开发方法与UML(3)接口。这是对象可被共享的部分,消息通过接口调用相应的操作。接口规定哪些操作是允许的;它不提供操作是如何实现的信息。客观世界的同一对象在不同的应用系统中,由于考察对象的角度不同,对其抽象的数据结构和操作都可能是不同的。例如,对于一个学生,在学籍管理系统与户籍管理系统两个不同的应用系统中,抽象出的表示内部状
9、态的数据结构和对数据结构进行的操作都是不同的。第7章面向对象开发方法与UML因此,在对实际应用系统中的对象进行分析时应注意该系统的要求,区分哪些是该对象的本质特征。2.类与实例类与实例把具有共性的一些事物归为一类,是人们认识客观世界和分析问题的一般方法。这里的共性是指事物的本质特征,分类实际上是一种抓住事物的本质而忽略一些无关紧要的细节的抽象过程,图7.1就是从各种自行车到自行车类的抽象。第7章面向对象开发方法与UML图7.1各种自行车到自行车类的抽象第7章面向对象开发方法与UML同样,采用面向对象方法进行系统分析与设计时,对于一个具体的系统而言,可能存在很多具有相同特征的对象。例如,对于一个
10、学籍管理系统,存在许多学生对象,它们具有相同的结构特征和行为特征,只是表示内部状态的数据值不同。为了描述这种相同结构特征和行为特征的对象,面向对象方法引入了类的概念。第7章面向对象开发方法与UML类是一组具有相同性质(属性和操作)的对象的抽象,或者说类是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。第7章面向对象开发方法与UML类是对一组具有相同特征的对象的抽象描述,所有这些对象都是这个类的实例。对于学籍管理系统,学生是一个类,而一个具体的学生则是学生类的一个实例。一个类的不同实例具有相同的操作或行为的集合和相同的信息结构或属
11、性的定义,但属性值可以不同;不同的实例具有不同的对象标识。对于学生类中的每一个对象,描述它们所使用的数据结构相同,但是其值不同。因此,一个类的定义至少包含以下两个方面的描述:第7章面向对象开发方法与UML(1)该类所有实例的属性定义或结构定义;(2)该类所有实例的操作(或行为)的定义。在一个系统中,每一个对象均属于某个类,类是对象的属性和操作的定义模板,而实例是某个具体的对象。第7章面向对象开发方法与UML7.1.4面向对象系统的特性面向对象系统的特性一个对象具有抽象、继承性、封装性和多态性等特性,要构造一个性能优越的面向对象系统必须充分利用面向对象方法的这些特性。1.抽象抽象所谓抽象,是指在
12、分析问题时,强调实体的本质、内在属性而忽略一些无关紧要的细节。抽象是分析问题的基本方法。第7章面向对象开发方法与UML在系统开发的整个过程中,尤其在分析阶段,抽象具有特别重要的意义,其作用如下:(1)使用抽象仅仅涉及到应用域的概念而不必涉及问题域的求解,因此可以尽可能避免过早地考虑实现的细节。(2)合理地使用抽象,可以在分析、高级设计以及文档化等阶段和过程中使用统一模型(对象模型)。第7章面向对象开发方法与UML(3)抽象可以帮助我们明确对象是什么、对象做什么而不必考虑对象怎么做。对象怎么做属于编程方面的细节,可以延迟到开发的最后阶段物理设计阶段去实现。2.继承性继承性人们在对客观世界的事物进
13、行描述时,经常采取分类的方法。类是有层次的,即某个大类的事物可能分为若干小类,而这些小类可能又分为若干个更小的类。第7章面向对象开发方法与UML面向对象思想采纳了事物分类的层次思想,在描述类的时候,某些类之间具有结构和行为的共性。例如,教师类与学生类在结构方面均具有姓名、年龄、身高、体重等共性,在行为(或操作)方面均具有回答身高、回答体重等操作。将这些共性抽取出来,形成一个单独的类人,描述教师类和学生类中的共性。类人的结构特征和行为特征可以被多个相关的类共享。例如,教师类和学生类继承了类人的结构和行为特征。一个教师类的对象与一个学生类的对象都具有类人所描述的特征,同时又具有各自所属教师类和学生
14、类独有的特征。此时类人称为教师类和学生类的父类,而学生类和教师类为类人的子类。第7章面向对象开发方法与UML上面例子中的类人也可以称为教师类和学生类的一般类,而教师类和学生类为类人的特殊类。面向对象方法中一般类和特殊类的定义是:如果类A具有类B的全部属性和服务,而且具有自己特有的某些属性或服务,则类A叫做类B的特殊类,类B叫做类A的一般类。利用类之间的继承关系,可以简化对类的描述。在类人中描述教师类和学生类的共性,而在学生类和教师类中只需描述各自的个性。第7章面向对象开发方法与UML利用继承机制可以提高软件代码的可重用性。在设计一个新类时,不必从头设计编写全部的代码,可以通过从已有的具有类似特
15、性的类中派生出一个类,继承原有类中的部分特性,再加上所需的新特性。这一点与面向过程的设计语言中的过程或函数不同,要使用具有相似功能的过程或函数必须修改源程序代码以使其适应新系统的功能需求,而类的派生机制无须原有类的源代码即可派生出新的类。第7章面向对象开发方法与UML利用类及其继承性描述系统时,由于类之间的继承关系,可能会形成一种具有层次性的类结构。在使用类的层次结构描述系统时,某些类之间的层次关系可以有多种实现方案。例如,中学生类既可以直接从类人派生出来,也可以从类人的派生类中学生类派生出来。在设计类的层次结构时,应注意建立的类层次结构是否易于理解以及组织类结构的费用等方面的问题。设计出来的
16、类层次结构是否合理,往往取决于系统分析员的经验等因素。第7章面向对象开发方法与UML另外,人们在对客观世界的事物分类时,一个事物可能属于多个类,同时具有多个类的特性。例如一个黑人学生,他既属于学生类,又属于黑人类。这种情形在面向对象方法中称为多继承,即一个类同时从多个类中派生出来,此时类的层次结构是网状的。多继承在有些面向对象的程序设计语言中是不允许的。只允许派生类有一个基类称为单继承,单继承的类层次结构是树状的。第7章面向对象开发方法与UML3.多态性多态性多态性是面向对象系统的又一重要特性。所谓多态,是指一个名词可具有多种语义。在面向对象方法中,多态并不是指一个对象类有多种形态或状态,而是
17、指同一个操作在不同的类中有不同的实现方法和不同的执行结果。例如,图7.2中的图形类和其子类圆类、点类中都定义了显示和隐藏操作,图形类中的显示和隐藏并不确定到底显示或隐藏何种图形,但子类中的显示和隐藏就涉及到具体应该显示或隐藏何种图形,并且所显示的图形显然是不一样的。第7章面向对象开发方法与UML图7.2多态性的例子第7章面向对象开发方法与UML这就是显示和隐藏这两个操作体现出来的多态性。其特点是源于继承而并非简单的继承,必须有不同的表现。多态性不仅仅局限于操作,同一个属性在不同的对象类中也可以具有不同的数据类型,即属性的多态性。综上所述,多态性可定义为:“一个类中定义的属性或操作被继承之后,可
18、以具有不同的数据类型或表现出不同的行为。这使得同一属性或操作在父类和子类(或子类的子类,可多次继承)中具有不同的语义。”第7章面向对象开发方法与UML就图7.2中的例子而言,当外部的某个对象调用图形对象的显示操作时,无须考虑该操作具体对应多少种实现方法,即该对象发出的请求服务的消息中只须写上“显示”,究竟对应哪个显示由图形类的操作自动识别,并传给对应的子类,由子类去执行不同的显示操作,这也称为“动态绑定”。第7章面向对象开发方法与UML4.封装性封装性封装是一种信息隐藏技术,对象内部对用户是隐藏的,不可直接访问;用户只能见到对象封装界面上的信息,通过对象的外部接口访问对象。用户向对象发送消息,
19、对象根据收到的消息调用内部方法作出响应。封装的目的在于将对象的使用者和设计者分开,使用者无须知道对象内部实现的细节,只需要知道对象接收的消息。第7章面向对象开发方法与UML封装的定义为:(1)一个清楚的边界。所有对象的内部软件的范围被限定在这个边界内。(2)一个接口。该接口用以描述这个对象和其他对象之间的相互作用。(3)受保护的内部实现。这个实现给出了由软件对象提供的功能的实现细节,实现细节不能在定义这个对象的类的外面访问。第7章面向对象开发方法与UML因为封装技术强调客观实体的内在属性和服务(操作)的不可分割性以及内部信息的隐蔽,自然而然就增加了系统中对象的相对独立性,减少了它们之间的相互依
20、赖,同时也增加了其应用的灵活性。封装可以保证对象的界面清晰、简单,防止由于模块之间的相互依赖所带来的变动的相互影响。第7章面向对象开发方法与UML在非面向对象的系统中,如果某个函数的某些参数改变了(类型、个数等),或者某些非私有数据改变了,即使函数的外部功能没有改变,都要求调用该函数的其他模块必须随之作相应的改变,否则后果不堪设想。因为调用者可能会直接操纵被调用者中改变了的这些数据。相反,面向对象的封装性不允许一个对象直接操纵另一个对象的数据,即调用者无须知道被调用者的内部实现细节,所以只要外部功能没变,就不存在上述变动的相互影响。第7章面向对象开发方法与UML就比如甲、乙两人互传电子邮件,双
21、方关心的是内容和格式是否符合要求,而不是电子邮件的素材、编辑工具以及传送方式。对象的封装特性可以提高模块之间的独立性,使得系统易于调试和维护。封装使得一个对象可以像一个可插接的部件一样用在各种程序中,就像一种集成块可以用在不同的电路中一样。第7章面向对象开发方法与UML7.1.5面向对象的设计方法面向对象的设计方法采用面向对象方法进行系统开发的首要任务是采用面向对象的概念及其抽象机制将开发的系统对象化和模型化,建立应用系统模型,然后使用面向对象的程序设计语言来实现系统中的对象。尽管面向对象的概念早已出现,但直到20世纪80年代初还没有人能给出一种方法,用以实现面向对象的设计。20世纪80年代以
22、后,面向对象设计的设计方法取得了逐步进展。下面我们介绍由Booch提出的面向对象设计的步骤:第7章面向对象开发方法与UML(1)定义问题。(2)为真实世界问题域的软件实现开发一个不严格的概括描述。(3)按以下子步骤把方法严格化:弄清对象及其属性;弄清可能被施于对象的操作;利用表达对象与操作的关系建立每个对象的接口;决定详细设计问题,从而给出对象的实现描述。第7章面向对象开发方法与UML(4)递归地重复步骤(1)、(2)和(3),以得到完整的设计。以上步骤中,前面两步工作实际上是属于软件需求分析的范畴,相当于我们在需求分析阶段得到的规格说明书。面向对象设计方法将数据设计、结构设计和过程设计三类设
23、计元素结合起来。为了弄清对象,产生了数据抽象;借助定义抽象,描述了模块,软件的结构也就建立起来了;靠开发使用对象的机制(如生成消息),接口得到了描述。下面对Booch提出的面向对象设计的各步骤作一简单的介绍。第7章面向对象开发方法与UML1.问题定义问题定义这里的问题定义是需求分析的另一种说法,此步骤中系统分析人员和设计人员应完成两项必不可少的工作:(1)描述问题本身;(2)分析并说明已知的限制。无论现实问题的大小和复杂性如何,其软件实现都应以语法正确的简单语句来描述,通过它应该让承担项目的软件工程师对问题有一个确切的、惟一的理解。第7章面向对象开发方法与UML2.概括描述概括描述面向对象的设
24、计的下一步是根据问题描述中给出的问题的解写出不十分严格的概括描述。这种概括描述具有以下几个特点:(1)它是简明易懂的一段文字描述;(2)它所涉及的对象具有同一级抽象的特点,即其详细程度在概括描述中保持一致;(3)它应主要表达为解决问题必须要做什么,而不是如何得到解的过程;第7章面向对象开发方法与UML(4)无须包括需求分析过程中所涉及的全部信息。概括描述的好坏可由提出一个问题来加以判断:“假如严格遵循概括描述实现解答,问题能得到解决吗?”概括描述应尽可能重复使用相同的术语来描述同一件事物,避免使用同义词。此外,为便于理解,应注意不要使用过分专业化的名词。第7章面向对象开发方法与UML3.形式化
25、处理形式化处理面向对象的设计经过前面的分析和描述后,到此实际上才展开。如前所述,形式化处理分为如下四个子步骤。1)标识对象及其属性弄清对象是面向对象设计的核心问题,标识对象可以从应用系统的概括描述中的名词来导出。在这一步应把注意力集中在如何将概括描述中所含的名词和名词短语分离出来。对象标识出来后,还应注意对象之间的类似之处,以建立对象类。第7章面向对象开发方法与UML2)标识每个对象所要求的操作和提供的操作这一步必须标识出该对象执行的功能,这些功能描述了每个对象的行为。例如,窗口被打开、关闭、缩放和滚动等。同时还应关心由其他对象提供给它的操作,因为通过标识这些操作有可能导出新对象。第7章面向对
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息 系统分析 设计 第三 陈圣国第
限制150内