面向对象分析和设计.ppt
《面向对象分析和设计.ppt》由会员分享,可在线阅读,更多相关《面向对象分析和设计.ppt(231页珍藏版)》请在三一办公上搜索。
1、高级软件工程,陈宁江2007.10,2,面向对象方法,概述面向对象的分析和设计方法基于UML的面向对象分析与设计,3,什么是面向对象(Object Oriented,OO)?,面向对象是一种风范(Paradigm),是一种观察和分析问题的方法论(Methodology)从本质上来说,面向对象方法是确定动作的主体在先(先确定系统中的对象),执行动作在后(再确定在这些对象上可能实施的操作)传统的面向过程的程序设计,最关心的是过程 面向对象技术:是一种软件系统设计的工程技术,将“对象”作为软件系统的基本组成单元,将数据及其上作用的操作一起封装,以标准的接口规范对外提供服务,4,面向对象技术的基本观点
2、,客观世界是由对象组成的从动态观点看,对对象施加的操作就是该对象的行为具有相同数据和相同操作的对象可以归并为一个类,对象是类的一个实例对象之间通过消息传递相互联系类具有封装性类可以派生出子类,子类继承父类的全部特性,又可以有自己的新特性,5,面向对象技术的发展历史,初始阶段(60年代末80年代中期)挪威,Simula语言:引入了类的概念和继承机制Xerox,Smalltalk语言发展阶段(80年代中期到90年代)面向对象编程语言的繁荣:C+、Object Pascal、Java等成熟阶段(90年代中期以后)面向对象分析和设计方法的发展与规范:Booch方法、Rumbaugh的OMT方法、Coa
3、d/Yourdon方法、Jacobson的OOSE方法 等形成一整套面向对象软件工程体系,6,面向对象方法的优点,按照人类的自然思维方式建立软件系统模型,有利于理解和交流在整个开发过程中采用统一的概念和模型表示,使开发活动之间平滑过渡 对象所具有的封装性和信息隐蔽等特性,容易实现软件复用易于维护,体系结构易于理解、扩充和修改,7,面向对象的基本概念,对象(Object)由一组属性和在这些属性数据上的容许操作对组成类(Class)封装(Encapsulation)继承(Inheritance)多态性(Polymorphism)消息(Message),8,面向对象的基本概念,1.对象(object
4、)对象是指一组属性以及这组属性上的专用操作的封装体 属性(attribute)通常是一些数据,有时它也可以是另一个对象。每个对象都有它自己的属性值,表示该对象的状态。对象中的属性只能通过该对象所提供的操作来存取或修改。操作(operation)(也称方法)规定了对象的行为,表示对象所能提供的服务。一个对象通常由对象名、属性和操作三部分组成。,9,2.类(class)类是一组具有相同属性和相同操作的对象的集合。一个类中的每个对象都是这个类的一个实例(instance)。类是创建对象的模板,从同一个类实例化的每个对象都具有相同的结构和行为。,类,实例对象,10,封装(encapsulation):
5、一种信息隐蔽技术,用户只能看见对象封装界面上的信息,对象的内部实现对用户是隐蔽的。封装的目的:使对象的使用者和生产者分离,使对象的定义和实现分开。继承(inheritance):继承是类间的基本关系,它是基于层次关系的不同类共享数据和操作的一种机制。父类中定义了其所有子类的公共属性和操作,在子类中除了定义自己特有的属性和操作外,可以继承其父类(或祖先类)的属性和操作,还可以对父类(或祖先类)中的操作重新定义其实现方法。,11,继承的例子,12,如果一个子类只有唯一一个父类,这个继承称为单一继承。如果一个子类有一个以上的父类,这种继承称为多重继承。,13,多态性(polymorphism)指同一
6、个操作作用于不同的对象上可以有不同的解释,并产生不同的执行结果。例如“画”操作,作用在“矩形”对象上,则在屏幕上画一个矩形,作用在“圆”对象上,则在屏幕上画一个圆。相同操作的消息发送给不同的对象时,每个对象将根据自己所属类中定义的这个操作去执行,从而产生不同的结果。,14,if 条件 then p:=t;else p:=r;area:=p.getarea;,Var p:polygon;Var t:triangle:=triangle.new;Var r:rectangle:=rectangle.new;,15,面向对象的软件工程,面向对象的分析(OOA):分析和理解问题域,找出类及对象,分析它
7、们的内部构成和外部关系面向对象的设计(OOD):运用面向对象技术进行软件设计面向对象的编程(OOP):用面向对象的编程语言将设计模型转换成程序面向对象的测试(OOT):运用OO技术进行以对象概念为中心的软件测试,以类作为基本测试单位面向对象的维护(OOM),16,喷泉模型,迭代和无间隙特征迭代:各开发活动常常重复工作多次,相关的功能在每次迭代中随之加入演进的系统无间隙:开发活动之间不存在明显的边界,17,面向对象分析,一般步骤如下:获取客户对系统的需求:包括标识场景(scenario)和用例(use case),建造需求模型用基本的需求为指南,选择类和对象(包括属性和操作)定义类的结构和层次建
8、造对象-关系模型建造对象-行为模型利用用例/场景来复审分析模型,18,面向对象设计,系统设计子系统划分选择实现数据管理、界面支持和任务管理的设计策略为系统设计合适的控制机制复审并考虑权衡对象设计在过程级别设计每个操作的实现细节定义内部类为类属性设计内部数据结构消息设计 使用对象间的协作和对象-关系模型,设计消息模型复审 复审设计模型并在需要时迭代,19,代表性的OO分析与设计方法,Booch方法Rumbaugh的对象模型化技术(OMT)Coad和Yourdon方法Jacobson的OOSE(面向对象软件工程),20,面向对象的建模语言UML,统一建模语言(Unified Modeling La
9、nguage,UML):一种直观化、明确化、构建和文档化软件系统产物的可视化建模语言,21,UML是什么?,UML是Booch、OOSE和OMT方法的结合,同时吸收了其他方法的思想UML是一种语言UML是一种可视化的建模语言UML是一种可用于详细描述的语言UML是一种构造语言UML是一种文档化语言,22,UML的主要组成,视图(View):用于构造系统模型图(Diagram):用于描述视图模型元素:用于表示图的一组符号,23,UML中的视图(View),用例视图(Use Case View):描述系统应该具有的功能集设计视图(Design View):描述系统功能的内部设计和协作情况,包括静态
10、结构和动态行为,进程视图(Process View):描述系统的并发工作状况,包含并发与同步的线程和进程实现视图(Implementation View):描述系统的实现模块(组件或者文件)及其之间的关系部署视图(Deployment View):描述系统的物理架构和硬件拓扑结构的节点,24,UML中的图(Diagram),系统功能:用例图静态结构:类图;对象图动态行为:状态图;时序图;协作图;活动图物理架构:组件图;分布图,25,视图与图,26,模型元素 模型元素指模型中的实体以及实体间相互连接的关系,27,UML2.0与1.4的比较,对UML1.4进行了一些扩充。用更为受限的通信图代替了协
11、作图。增加了交互综述图、定时图、协议状态图、组成结构图等新图。,28,简单的UML例子,例子描述:在Web浏览器中,编写JAVA程序Hello,World!import;class HelloWorld extends public void paint(Graphics g)g.drawString(Hello,World!,10,10);,29,HelloWorld的UML图,HelloWorld类,HelloWorld及其相关类,HelloWorld的继承层次,30,HelloWorld的UML图(续),HelloWorld包,Paint的顺序图,HelloWorld构件,31,基于UM
12、L的分析、设计和实现,描述需求:使用用例来确定用户需求和系统必须为用户提供的服务静态建模:根据需求建立系统的静态模型动态建模:描述系统的动态行为,32,一、用例模型和用例图,33,现代需求实践,共性:站在用户的角度看待系统、定义系统;使用用户能够看懂的语言来表述,34,需求获取,采用场景和用例的技术,是需求获取过程中弥补多个具有不同背景的执行者团队之间代沟的有力工具场景:表达了用户和系统之间的一系列交互,描述了一个系统实例用例:是对一类场景所进行的抽象场景和用例两者一般均用自然语言描述,这一形式对用户而言是易于理解的,35,用例,用例(use case)是Ivar Jacobson发明的.其它
13、的中文译名有:用况、用案等.,定义1:用例是对一个活动者(actor)使用系统的一项功能时所进行的交互过程的一个文字描述序列.,定义2:用例是系统、子系统或类和外部参与者交互的动作序列的说明,包括可选的动作序列和会出现异常的动作序列.,用例是代表系统中各个项目相关人员之间就系统的行为所达成的契约.,36,1)分析员首先标识使用该系统的不同的执行者(执行者,actor),这些执行者代表使用该系统的不同的角色。每个执行者可以叙述他如何使用系统,或者说他需要系统提供什么功能 2)执行者提出的每一个使用场景都是系统的一个用例的实例,一个用例描述了系统的一种用法(或一个功能),所有执行者提出的所有用例构
14、成系统的完整的需求 注:执行者与用户是不同的两个概念,一个用户可以扮演几个角色(执行者);一个执行者可以是用户,也可以是其他系统(应用程序或设备),采用用例收集客户需求,37,需求获取的活动,(1)标识执行者(2)标识场景(3)标识用例(4)求精用例(5)标识用例之间的关系(6)标识非功能需求(7)绘制用例图,编写详细的用例描述,38,用例图,用例图包含的模型元素执行者(actor):与系统进行交互的外部实体。可以是人或者其它系统用例:描述系统提供的功能(从外部视点角度)模型元素之间的关系执行者之间:继承关系执行者与用例之间:关联关系用例之间:继承、扩展和包含关系,39,执行者,是指与系统交互
15、的人或其他系统,它代表外部实体。使用用例并且与系统交互的任何人或物都是执行者。执行者代表一种角色,而不是某个具体的人或物。在用例图中用直线连接执行者和用例,表示两者之间交换信息。,40,执行者的种类,系统用户与所建造的系统交互的其他系统一些可以运行的进程 硬件设备时钟,执行者是为了完成一个事件而与系统交互的实体,是用户相对系统而言所演的角色。执行者不仅可以由人承担,还可以是事物,41,执行者的例子,1)其它软件系统:当系统需要与其它系统交互时,如ATM柜员机系统中,银行后台系统就是一个执行者;2)硬件设备:如果系统需要与硬件设备交互时,如在开发IC卡门禁系统时,IC卡读写器就是一个执行者;3)
16、时钟:当系统需要定时触发时,时钟就是执行者,42,执行者间的关系,在用例图中,使用泛化关系来描述多个执行者之间的公共行为。,执行者间的泛化关系示例:,执行者实际上是一个类,因此它们之间可以存在一定的关系,43,如何标识 执行者,需要注意:大多数执行者在系统开发之前就已经存在执行者是在系统边界之外的,即它们是来自外部的;任何要使用未来系统的外部软件系统就是一个执行者。可通过如下问题的提出获取和确认执行者:系统完成工作后,哪一个用户组受益?谁将使用系统的主要功能?谁需要借助系统的支持来完成日常工作?次要功能由哪一个用户组完成?谁来维护和管理系统与该系统进行交互的外部硬件和软件系统是谁?哪些人或系统
17、对本系统产生的结果(值)感兴趣?,44,例子:学生注册课程系统,某大学准备开发一个学生课程注册系统:学生使用该系统查询新学期将开设的课程和讲课教师情况,选择自己要学习的课程进行登记注册,并可以查询成绩单教师使用该系统查询新学期将开设的课程和选课学生情况,并可以登记成绩单注册管理员使用该系统进行注册管理,包括维护教师信息、学生信息和课程信息等在每个学期的开始,学生获得该学期的课程目录表,课程目录表列出每门课程的所有信息,诸如基本信息、教师、开课系和选课条件等新学期开始前两周为选课注册时间,在此期间学生可以选课注册,并且允许改变或取消注册申请,开学两周后注册管理员负责关闭课程注册。每个学生可以选择
18、不超过4门课程,同时指定2门侯选课程以备主选课程未选上。每门课程最多不能超过10人,最少不能低于3人,低于3人选课的课程将被取消。一旦学生的注册过程完毕,注册系统将有关信息提交收费系统以便学生付费。如果在实际注册过程中名额已满,系统将通知学生在提交课程表之前予以更改在学期结束时,学生可以存取系统查看电子成绩单。由于学生成绩属于敏感信息,系统必须提供必要的安全措施以防非法存取,45,发现执行者,问题:谁使用系统的功能?谁需要借助系统完成日常工作?谁来维护和管理系统,以保证系统正常工作?系统控制的硬件设备有哪些?系统需要与其他哪些系统交互?谁对系统产生的结果感兴趣?,46,用例,用例:是能够被执行
19、者感受到的、系统将完成的一系列动作,是一个完整功能这些动作除了完成系统内部的计算工作外,还包括与执行者通信。用例通过关联与执行者连接关联指出一个用例与哪些执行者交互,47,用例的特征,用例代表某些用户可见的功能,以实现一个具体的用户目标用例总是被执行者启动的,执行者必须直接或间接地指示系统去执行用例,用例向执行者提供可识别的输出通过关注谁启动了某一个用例,可标识出前面未注意到的新执行者用例必须是完整的,描述了一系列从初始情况出发的相关交互用例是一个类,它代表一类功能而不是使用该功能的某个具体实例。用例的实例称为“场景”,48,用例图举例,49,用例的命名,从执行者的角度出发进行命名(如使用“登
20、录”而不用“身份验证”)使用动宾结构或主谓结构命名.尽量使用行业术语(如用“报销”,而不用“交钱”),例:字处理程序中,“置正文为黑体”和”创建索引”都可以是用例.,例:在一个银行业务系统中可能有如右的用例,浏览账户余额列出交易内容划拨资金,50,学生注册课程系统中的用例,51,如何标识 用例,执行者需要系统提供哪些功能?执行者自身需要做什么?执行者是否需要读取、创建、删除、修改或存储系统中的某类信息?系统中发生的事件需要通知执行者吗?执行者需要通知系统某些事情吗?从功能观点看,这些事件能做什么?执行者的日常工作是否因为系统的新功能而被简化或提高了效率?系统需要哪些输入输出?输入来自何处?输出
21、到哪里去?当前使用的系统(可能是人工系统)存在的主要问题是什么?,52,注意事项(1),开发者使用系统的用户手册、过程手册、公司标准、用户日志和计划表,以及与用户和客户交谈的记录等来回答问题。开发者应该使用应用领域中的词汇而非自己专业领域的词汇写出场景。当开发者更加深入地了解了应用领域且决定了要采用的可能技术后,可采用迭代和增量方式求精场景。在标识执行者和标识场景期间,开发者要做的最重要工作是理解这些应用领域。,53,注意事项(2),不要将所有的需求都以用例的形式表示出来.用例只描述系统功能性方面的需求,它只量全部需求的一部分.本质上用例分析是功能分解技术,但目前是OO开发的第一步.用例是与实
22、现无关的关于系统功能的描述.,54,标识用例图中的关系,55,关联关系,表示参与者用例之间进行通信。不同的参与者可以访问相同的用例。,56,包含关系,客户用例可以简单地包含提供者用例具有的行为,并把它所包含的用例行为作为自身行为的一部分。,57,包含关系,在对系统进行分析时,通常会发现有些功能在不同的环境下都可以被使用。在编写代码时,我们希望编写可重用的构件,这些构件包括诸如可以从其他代码中调用或参考的类库、子过程以及函数。包含关系是指一个用例(客户用例)的行为包含了另一个用例(提供者用例)的行为.客户用例可以简单地包含提供者用例具有的行为,并把它所包含的用例行为作为自身行为的一部分。,58,
23、注意:箭头方向为客户用例到提供者用例.,包含关系的例子,59,a.如果有多个用例,并且这些用例包含大量类似的行为,应该考虑将这些类似的行为通过包含关系包含到用例中,将这个功能分解到另一个用例中b.对两个或多个互相独立的用例建模时做了重复的工作,可以通过包含关系包含这些重复的工作c.如果某个行为可能会引入冗余,或者,当行为发生变化时可能导致不一致性,这时,应该对这种行为进行孤立建模并将它包含到用例中,使用包含关系的情况,60,扩展关系,当某个新用例在原来的用例基础上增加了新的步骤序列,则原用例被称作基用例,这种关系被称为扩展关系。扩展用例被定义为基础用例的增量扩展。基础用例提供扩展点以添加新的行
24、为。扩展用例提供插入片段以插入到基础用例的扩展点上。,61,a.两个用例相似但不完全相同时b.当要对多个额外情况逐一建模时,可以使用扩展关系,用一个独立的用例替代每个额外的情况c.如果用例涵盖了所有的情况变化,则该用例将会变得十分复杂,应该考虑使用扩展关系,常见的扩展关系,62,网上购物的部分用例,扩展关系例子,63,泛化关系,父用例也可以被特别列举为一个或多个子用例。子用例表示父用例的特殊形式。子用例从父用例处继承行为和属性,还可以添加行为或覆盖、改变继承的行为。,64,泛化关系的例子,65,用例图举例,66,“扩展”与“包含”的区别(1/2),两种关系都意味着从几个用例中抽取那些公共的行为
25、并放入一个单独的用例中,而这个用例被其他用例包含或扩展两种关系的目的不同:通常在描述一般行为的变化时采用扩展关系在两个或多个用例中出现重复描述又想避免这种重复时,可以采用包含关系根本区别:在包含关系中,源用例没有目的用例就不能工作,而被包含用例可以独立存在;在扩展关系中,源用例即使没有目的用例也能工作得很好,而目的用例通常只能作为扩展的用例而存在。泛化和扩展表示用例之间的“is a”,包含关系表示用例之间的“has a”.,67,“扩展”与“包含”的区别(2/2),68,扩展关系中,基用例可以单独存在,但在一定的条件下,它的行为可以被另一个用例的行为延伸。扩展只能发生在基用例的序列中某个特定的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 分析 设计
链接地址:https://www.31ppt.com/p-6066706.html