12014.09.15面向对象的系统分析与设计面向对象的系统分析与设计22014.09.15面向对象的系统分析与设计参考书1.黄磊,面向对象开发参考手册.人民邮电出版社2.麻志毅,邵维忠.面向对象方法基础教程.高等教育出版社,2004年第1版.3.邵维忠,杨芙清.面向对象的系统分析.清华大学出版社,2006年第1版.32014.09.15面向对象的系统分析与设计1概述传统软件开发方法中存在的问题60年代,崇尚个人编程技巧;汇编语言、Fortran、COBOL;GOTO语句。70年代,出现结构化方法;软件按功能组织;数据和操作结合得不紧密;适合功能稳定的科学计算,但不适合功能随市场变化的企业和商业软件。42014.09.15面向对象的系统分析与设计70年代,出现信息建模方法;以信息实体为构造块,以数据结构为中心来开发软件;对功能的处理较弱。80年代,出现面向对象方法(OOM)。对信息建模方法进行了发展;软件模型是问题域的完整和直接映射;分析、设计和编程采用一致的概念和表示。是一种运用“对象”、“类”、“继承”、“封装”、“聚合”、“关联”、“消息”、“多态性”等概念和原则来构造系统的软件开发方法。被开发系统的应用领域52014.09.15面向对象的系统分析与设计OOM的基本思想客观世界中的事物都是对象,对象间存在一定关系,复杂对象由简单对象组成;具有相同属性和操作的对象属于一个类,对象是类的一个实例;类之间可以有层次结构,子类继承父类的全部属性和操作,且可有自己的属性和操作;类有封装性,隐藏或公开自己的属性或操作;对象只能通过消息请求其他对象或自己的操作;强调运用人类日常思维方法。62014.09.15面向对象的系统分析与设计OO主要基本概念OO主要基本原则对象抽象属性分类操作封装类消息通信继承多态性聚合关联72014.09.15面向对象的系统分析与设计对象(Object)是系统中用来描述客观事物的一个实体,它是构成系统的基本单位,由一组属性和施加于这组属性的一组操作构成。对象中的属性(Attribute)用来描述对象静态特征的一个数据项。对象中的操作(Operation)用来描述对象动态特征(行为)的一个动作序列。82014.09.15面向对象的系统分析与设计类(class)相同属性和操作的一组对象属于同一个类,它为属于该类的全部对象提供了统一的抽象描述,由一个类名、一组属性和一组操作构成,同一个类的对象之间,属性值可不同,操作完全相同。类的作用用于创建对象,对象是类的实例。92014.09.15面向对象的系统分析与设计继承(inheritance)特殊类自动拥有其一般类的全部属性和操作,称为特殊类对一般类的继承,也称一般类对特殊类的泛化。公司人员姓名身份证号……股东股份……职员工资……研究生学号班级……职员职称工资……在职研究生在职单位……单继承多继承102014.09.15面向对象的系统分析与设计继承的层次与抽象、分类原则的运用运输工具轮船车辆飞机火车汽车卡车轿车较多地忽略事物之间的差别,得到较一般的类较多地注意事物之间的差别,得到较特殊的类继承有传递性,简化了人们对事物的认识和描述,有益于软件复用。112014.09.15面向对象的系统分析与设计关联(association)类之间的静态关系;类实例为对象,对象之间用链连接。链是关联的实例。教师……学生……1指导论文*122014.09.15面向对象的系统分析与设计聚合(aggregation)一个(较复杂)对象由其他若干(较简单)对象作为其构成成分,这种对象间关系称为聚合;是关联的一种。汽车……发动机……车轮……132014.09.15面向对象的系统分析与设计面向对象的基本原则抽象从事物中舍弃个别的、非本质的特征,保留共同的、本质特征的做法。分类较多地注意事物之间的差别,把具有相同属性和操作的对象划分一类。142014.09.15面向对象的系统分析与设计封装(encapsulation)用对象把属性和操作包装起来,形成一个独立的实体单位,并尽量对外隐蔽内部细节。售报亭-报刊A-报刊B…-钱箱+报刊零售-款货清点…属性操作属性操作操作操作操作封装与信息隐蔽152014.09.15面向对象的系统分析与设计消息(message)对象通过它提供的操作在系统中发挥作用;其他对象向这个对象发请求,该对象响应并执行指定操作;向一个对象发送的操作请求,称为消息;对象之间通过消息进行通信,实现对象之间的动态联系。在c++中是函数调用,在Java中是方法激活。162014.09.15面向对象的系统分析与设计多态性(polymorphism)特殊类可定义同名的属性或操作,来代替继承来的属性或操作;一般类中的属性或操作,在不同特殊类中可有不同的定义。输出设备…打印…针式打印机打印……行式打印机打印……172014.09.15面向对象的系统分析与设计动态行为分析用对等(关联)和层次(继承和聚合)描述类间关系,称为静态模型(或结构模型);按属性值,可把对象划分为不同的状态,请求对象操作会引起状态变化,用状态转化图表示;对象间发送消息,协同完成某项功能,用交互图(即写作图和顺序图)表示;用主动对象和被动对象表示并非行为。182014.09.15面向对象的系统分析与设计永久对象(persistentobject)生存期可以超越程序执行时间而长期存在的对象;目前大多数OOPL(OO编程语言)是不支持永久对象的;采用文件或数据库存储;读出后进行必要的格式转换,恢复对象。面向对象数据库管理系统(OODBMS)OO语言和数据结合,支持对象永久性。192014.09.15面向对象的系统分析与设计主动对象(activeobject)至少有一个操作不需要接收消息就可主动执行的对象。所有操作必须接收消息才能执行的对象,称为被动对象。在多任务并发执行的系统中,存在多个主动对象。202014.09.15面向对象的系统分析与设计复杂性控制系统分为若干“包(package)”,把类图中按模型元素之间关系的紧密程度,把模型元素组织到各个包中。212014.09.15面向对象的系统分析与设计面向对象方法的优点与人们认识世界的方法相对应;对象对应问题域中的事物;其属性和操作刻画事物的静态和动态特征。继承、聚合、依赖和关联关系如实反映问题域事物之间的关系。使客观世界到计算机语言的鸿沟变窄面向对象语言比非面向对象语言更接近问题域。222014.09.15面向对象的系统分析与设计面向对象方法使问题域和计算机的鸿沟变窄易于维护和复用提高软件质量和生产效率问题域需求分析总体设计详细设计编程测试计算机分析与设计的鸿沟自然语言编程语言问题域OOAOODOOPOOT自然语言OO语言计算机OO的软件工程方法结构化的软件工程方法232014.09.15面向对象的系统分析与设计易于维护和复用提高软件质量和生产效率数据结构数据结构数据结构…算法算法算法…关系结构化方法中的数据结构、算法及其间关系数据结构+算法数据结构+算法数据结构+算法数据结构+算法关系OO方法中的数据结构、算法及其间关系242014.09.15面向对象的系统分析与设计面向对象方法的发展史雏形阶段60年代,挪威Simula67首次使用类和继承概念;70年代,CLU、并发Pascal、Ada、Modula-2开始支持数据和操作的封装;72年,Smalltalk-72使用“面向对象”这一术语。252014.09.15面向对象的系统分析与设计完善阶段81年,Smalltalk-80具备了面向对象的大多数基本概念和支持机制,被认为是第一个完善的、能够实际应用的面向对象语言(OOPL)。繁荣阶段80年代中期至90年代,出现了C++、Object-C、ObjectPascal、Eiffel、Actor、Java;目前,普遍采用语言、类库、可视化编程环境相结合的方法,如VisualC++、VisualBasic、Delphi等。262014.09.15面向对象的系统分析与设计2面向对象分析(ObjectOrientedAnalysis)OO方法的三个阶段面向对象分析(OOA)不考虑实现,只找出所需对象及对象间关系,一般会确定对象有哪些属性和操作。面向对象设计(OOD)根据与实现有关的因素,定义对象中操作的实现,对OOA模型修改和补充,得OOD模型。面向对象编程(OOP)按OOD模型,进行编程实现。OOA和OOD的界限有时是模糊的。272014.09.15面向对象的系统分析与设计OOA面临的主要的问题问题域和系统责任的复杂性日益增长。问题域被开发系统的应用领域,即系统的业务范围。系统责任所开发的系统应该具有的功能。信息备份人事管理金融业务个人储蓄国债发行贷款业务…问题域系统责任282014.09.15面向对象的系统分析与设计交流问题开发人员与领域专家交流;开发人员之间的交流;开发人员与管理人员交流。需求的不断变化软件复用的要求292014.09.15面向对象的系统分析与设计需求分析:研究问题域,产生一个满足用户需求的系统分析模型。OOA模型如下:类图基本模型对象层关系层特征层需求描述用况图辅助模型行为图(交互图、活动图、状态图)包图详细说明静态模型动态模型需求模型文档图302014.09.15面向对象的系统分析与设计OOA过程建立用况图发现对象定义属性和服务建立结构和连接建立交互图、状态图、活动图详细说明原型开发建立类图312014.09.15面向对象的系统分析与设计3用况图(usecasediagram)对一个系统的参与者、用况以及它们之间的关系进行可视化表示的模型图,称为用况图。以直观形式展示了系统的用户需求;是系统的需求模型。322014.09.15面向对象的系统分析与设计系统边界是一个系统所包含的所有系统成分与系统以外各事物的分界线。系统系统边界系统的使用者332014.09.15面向对象的系统分析与设计现实事物的四种情况位于系统边界内;如超市商品销售系统中的商品参与者,且系统中没有相应成分与之对应;收款员既有系统内成分作为其抽象描述,又在系统外与系统交互;收款员属于问题域,但与系统责任无关。保安员、保洁员注意:已开发的软件系统,位于边界外。342014.09.15面向对象的系统分析与设计参与者是在系统之外(透过系统边界)与系统进行交互的任何事物。定义了一组在功能上密切相关的角色;收款员(参与者)有“收款”、“验货”、“验信誉卡”等角色。与系统的关系向系统发出请求,系统以某种形式响应;系统也可向参与者发出请求,参与者予以响应。顾客352014.09.15面向对象的系统分析与设计参与者之间的继承关系特殊参与者可继承一般参与者放出请求的能力。向系统的消息会计主任会计362014.09.15面向对象的系统分析与设计识别参与者人员从可直接使用系统的人员中发现参与者外部系统外部已开发投入使用的应用系统设备监视器、键盘通常不被看做参与者;外部传感器、马达则可能是参与者。372014.09.15面向对象的系统分析与设计用况(usecase)对用户需求的规范化描述;为开发人员提供认识和理解系统的技术;为领域专家、最终用户和开发者提供一种相互交流的手段;可作为人机界面的设计基础,也可用于制作测试用例。382014.09.15面向对象的系统分析与设计一个用况描述系统级的一项功能,把这样的功能描述为一组动作序列,系统执行该动作序列,为参与者产生一个可观察的结果值;其中的每个序列表示参与者与系统的一次交互。强调参与者和系统彼此为对方做了什么,不关心怎么做,也不关心间接做了什么;既表达了系统的功能需求,也表达了系统的功能划分;描述的系统功能是相对完整的,而不是其中的小片