第07章 面向对象的分析和设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

软件工程第7章面向对象的分析和设计山东科技大学信息科学与工程学院软件工程课程2/237内容摘要•面向对象的基本概念•面向对象的分析和设计过程•UML概述•用况建模•静态建模•动态建模•物理体系结构建模山东科技大学信息科学与工程学院软件工程课程3/237内容摘要•面向对象的基本概念•面向对象的分析和设计过程•UML概述•用况建模•静态建模•动态建模•物理体系结构建模山东科技大学信息科学与工程学院软件工程课程4/237PeterCoad和EdwardYourdon提出用下列等式识认面向对象方法:面向对象=对象(object)+分类(classification)+继承(inheritance)+通过消息的通信(communicationwithmessages)可以说,采用这四个概念开发的软件系统是面向对象的山东科技大学信息科学与工程学院软件工程课程5/237面向对象方法的出现很快受到计算机软件界的青睐,并成为20世纪90年代的主流开发方法。我们可以从下列几个方面来分析其原因:1.从认知学的角度来看,面向对象方法符合人们对客观世界的认识规律。2.面向对象方法开发的软件系统易于维护,其体系结构易于理解、扩充和修改。3.面向对象方法中的继承机制有力支持软件的复用。山东科技大学信息科学与工程学院软件工程课程6/237面向对象的基本概念1.对象(object)对象是指一组属性以及这组属性上的专用操作的封装体。属性(attribute)通常是一些数据,有时它也可以是另一个对象。每个对象都有它自己的属性值,表示该对象的状态。对象中的属性只能通过该对象所提供的操作来存取或修改。操作(operation)(也称方法或服务)规定了对象的行为,表示对象所能提供的服务。山东科技大学信息科学与工程学院软件工程课程7/237封装(encapsulation)是一种信息隐蔽技术,用户只能看见对象封装界面上的信息,对象的内部实现对用户是隐蔽的。封装的目的是使对象的使用者和生产者分离,使对象的定义和实现分开。一个对象通常可由对象名、属性和操作三部分组成。山东科技大学信息科学与工程学院软件工程课程8/2372.类(class)类是一组具有相同属性和相同操作的对象的集合。一个类中的每个对象都是这个类的一个实例(instance)。类是创建对象的模板,从同一个类实例化的每个对象都具有相同的结构和行为。山东科技大学信息科学与工程学院软件工程课程9/237轿车型号:字符串颜色:字符串牌照号:字符串....张经理的轿车型号=桑塔纳颜色=红色牌照号=沪AN2037....类实例对象山东科技大学信息科学与工程学院软件工程课程10/2373.继承(inheritance)继承是类间的基本关系,它是基于层次关系的不同类共享数据和操作的一种机制。父类中定义了其所有子类的公共属性和操作,在子类中除了定义自己特有的属性和操作外,可以继承其父类(或祖先类)的属性和操作,还可以对父类(或祖先类)中的操作重新定义其实现方法。山东科技大学信息科学与工程学院软件工程课程11/237矩形长宽对角线计算面积计算对角线多边形顶点数顶点坐标计算面积旋转山东科技大学信息科学与工程学院软件工程课程12/237有时,我们定义一个类,它把一些类组织起来,提供一些公共的行为,但并不需要使用这个类的实例,而仅使用其子类的实例。我们把这种没有实例的类称为抽象类(abstractclass)。在抽象类中可以定义抽象操作,抽象操作指:只定义这个类的操作接口,不定义它的实现,其实现部分由其子类定义。抽象操作操作名用斜体字表示,也可以在操作特征(signature)后面加上特征字符串{abstract}。山东科技大学信息科学与工程学院软件工程课程13/237交通工具飞行器汽车船轿车货车一般-特殊关系山东科技大学信息科学与工程学院软件工程课程14/237如果一个子类只有唯一一个父类,这个继承称为单一继承。如果一个子类有一个以上的父类,这种继承称为多重继承。水上交通工具陆上交通工具水陆两栖交通工具多重继承山东科技大学信息科学与工程学院软件工程课程15/2374.消息(message)消息传递是对象间通信的手段,一个对象通过向另一个对象发送消息来请求其服务。一个消息通常包括接收对象名、调用的操作名和适当的参数(如果有必要的话)。消息只告诉接收对象需要完成什么操作,但并不指示接收者怎样完成操作。消息完全由接收者解释,接收者独立决定采用什么方法完成所需的操作。山东科技大学信息科学与工程学院软件工程课程16/2375.多态性(polymorphism)多态性是指同一个操作作用于不同的对象上可以有不同的解释,并产生不同的执行结果。例如“画”操作,作用在“矩形”对象上,则在屏幕上画一个矩形,作用在“圆”对象上,则在屏幕上画一个圆。也就是说,相同操作的消息发送给不同的对象时,每个对象将根据自己所属类中定义的这个操作去执行,从而产生不同的结果。山东科技大学信息科学与工程学院软件工程课程17/2376.动态绑定(dynamicbinding)动态绑定是指在程序运行时才将消息所请求的操作与实现该操作的方法连接起来。传统的程序设计语言的过程调用与目标代码的连接(即调用哪个过程)放在程序运行前(即编译时)进行(称为静态绑定),而动态绑定则是把这种连接推迟到运行时才进行。动态绑定是一种在运行时确定被执行代码的技术。山东科技大学信息科学与工程学院软件工程课程18/237在一般与特殊关系中,子类是父类的一个特例,所以父类对象可以出现的地方,也允许其子类对象出现。因此在运行过程中,当一个对象发送消息请求服务时,要根据接收对象的具体情况将请求的操作与实现的方法进行连接,即动态绑定。山东科技大学信息科学与工程学院软件工程课程19/237if条件thenp:=t;elsep:=r;area:=p.getarea;getArea{abstract}polygonareahexagongetArearectanglegetArealengthwidthtrianglegetAreaVarp:polygon;Vart:triangle:=triangle.new;Varr:rectangle:=rectangle.new;山东科技大学信息科学与工程学院软件工程课程20/237内容摘要•面向对象的基本概念•面向对象的分析和设计过程•UML概述•用况建模•静态建模•动态建模•物理体系结构建模山东科技大学信息科学与工程学院软件工程课程21/237面向对象分析Object-OrientedAnalysis面向对象分析的一般步骤如下:1.获取客户对系统的需求:包括标识场景(scenario)和用况(usecase,也称用例),以及建造需求模型2.用基本的需求为指南,来选择类和对象(包括属性和操作)。3.定义类的结构和层次。4.建造对象—关系模型。5.建造对象—行为模型。6.利用用况/场景来复审分析模型。山东科技大学信息科学与工程学院软件工程课程22/2371.获取客户对系统的需求需求获取必须让客户与开发者充分地交流,这里介绍一种采用用况来收集客户需求的技术。分析员首先标识使用该系统的不同的执行者(actor),这些执行者代表使用该系统的不同的角色。每个执行者可以叙述他如何使用系统,或者说他需要系统提供什么功能。执行者提出的每一个使用场景(或功能)都是系统的一个用况的实例,一个用况描述了系统的一种用法(或一个功能),所有执行者提出的所有用况构成系统的完整的需求。分析过程山东科技大学信息科学与工程学院软件工程课程23/237注意,执行者与用户是不同的两个概念,一个用户可以扮演几个角色(执行者),一个执行者可以是用户,也可以是其他系统(应用程序或设备)。得到的用况必须进行复审,以使需求完整。山东科技大学信息科学与工程学院软件工程课程24/237图书馆系统USECASE分析举例图书信息查询图书续借图书借阅读者交纳罚金图书归还extend山东科技大学信息科学与工程学院软件工程课程25/237图书管理员读者信息查询借阅图书书籍信息查询归还罚金书籍归还处理借书证办理读者信息管理图书注销书籍信息管理extendextendextendincludeinclude山东科技大学信息科学与工程学院软件工程课程26/237图书馆信息系统的顶层数据流图管理请求信息读者信息图书信息读者情况图书情况借还书信息当前时间图书查询信息图书借阅情况罚款信息图书馆信息系统图书管理员系统时钟读者山东科技大学信息科学与工程学院软件工程课程27/237第二层数据流程图山东科技大学信息科学与工程学院软件工程课程28/237图书借阅管理数据流程图山东科技大学信息科学与工程学院软件工程课程29/2372.标识类和对象类和对象来自问题领域。可以先标识候选类,然后进行筛选山东科技大学信息科学与工程学院软件工程课程30/2373.定义类的结构和层次类的结构主要有两种:一般—特殊(generalization—specialization)结构和整体—部分(whole—part)结构。一般—特殊结构是一种分类结构,反映了类间的一般与特殊的关系。一般类与特殊类之间是一种“isa”的关系,如:汽车是一种交通工具。同样,特殊类还可以分为更特殊的类,这样可形成类的层次结构。整体—部分结构反映了类间的整体与部分关系。值得注意的是,整体—部分关系是对对象而言的,而不是对类的。整体—部分关系是一种“hasa”的关系,如“汽车”有“发动机”。同样,整体—部分结构也具有层次结构。山东科技大学信息科学与工程学院软件工程课程31/237有的面向对象方法中,把互相协作以完成一组紧密结合在一起的责任的类的集合定义为主题(subject)或子系统(subsystem)。主题和子系统都是一种抽象,从外界观察系统时,主题或子系统可看作黑盒,它有自己的一组责任和协作者,观察者不必关心其细节。观察一个主题或子系统的内部时,观察者可以把注意力集中在系统的某一个方面。因此,主题或子系统实际上是系统更高抽象层次上的一种描述。山东科技大学信息科学与工程学院软件工程课程32/2374.建造对象——关系模型对象--关系模型描述了系统的静态结构,它指出了类间的关系(relationship)。类之间的关系有关联、依赖、泛化、实现等。山东科技大学信息科学与工程学院软件工程课程33/2375.建立对象——行为模型对象--行为模型描述了系统的动态行为,它们指明系统如何响应外部的事件或激励(stimulus)。建模的步骤如下:•评估所有的用况,以完全理解系统中交互的序列。•标识驱动交互序列的事件,理解这些事件如何和特定的对象相关联。•为每个用况创建事件轨迹(eventtrace)。•为系统建造状态机图。•复审对象--行为模型,以验证准确性和一致性。山东科技大学信息科学与工程学院软件工程课程34/237面向对象设计(Object_OrientedDesign)面向对象设计的一般步骤如下:1.系统设计•将子系统分配到处理器•选择实现数据管理、界面支持和任务管理的设计策略•为系统设计合适的控制机制•复审并考虑权衡(折衷)山东科技大学信息科学与工程学院软件工程课程35/2372.对象设计•在过程级别(procedurallavel)设计每个操作,即设计每个操作的实现细节•定义内部类•为类属性设计内部数据结构3.消息设计使用对象间的协作和对象--关系模型,设计消息模型4.复审复审设计模型并在需要时迭代。山东科技大学信息科学与工程学院软件工程课程36/2371.系统设计1)将分析模型划分成子系统在OO系统设计中,我们把分析模型中紧密相关的类、关系等设计元素包装成子系统。通常,子系统的所有元素共享某些公共的性质,它们可能都涉及完成相同的功能;它们可能驻留在相同的产品硬件中;或者它们可能管理相同的类和资源。子系统由它们的责任所刻画,即,一个子系统可以通过它提供的服务来标识。在OOD中,这种服务是完成特定功能的一组操作。山东科技大学信息科学与工程学院软

1 / 242
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功