编辑: 山南水北 | 2019-09-09 |
jpkc.tongji.edu.cn时间:2006年3月第18章 面向对象的系统开发方法 学习目的 了解面向对象的思想,掌握面向对象的基本概念掌握面向对象方法的基本特征,即抽象性、封装性、继承性和多态性掌握面向对象的系统开发方法的基本原理和步骤了解UML的使用方法 本讲内容 18.1 面向对象方法的形成18.2 面向对象方法的基本概念18.3 面向对象方法的基本特征18.4 面向对象的系统开发方法18.5 基于UML的系统分析与设计 18.1面向对象方法的形成 OO方法起源于OOPL.20世纪80年代大批OOPL的出现和效率的不断提高,标志着OO方法开始走向实用.但是,正如Marciniak在《软件工程百科全书》中所言: 编程并不是软件开发的主要根源.需求分析与设计问题更为普遍并且更值得解决.因此,OO方法的焦点不应该只对准编程,而应更全面地对准软件工程的其它阶段.OO方法的真正目标是它适合于解决分析与设计期间的复杂性并实现分析与设计的复用. 基于这一事实,人们对OO方法的研究重点,从面向对象的编程(Object-oriented Programming,OOP),转移到面向对象的分析(Object-oriented Analysis,OOA)和面向对象的设计(Object-oriented Design,OOD).自20世纪80年代以来,出现了一大批有代表性的OO方法,如Coad-Yourdon方法、Booch方法、Rumbaugh方法(OMT方法)和Jacobson方法(OOSE方法).概括地说,OO方法的基本思想是,从现实世界的客观事物(即对象)出发来构造信息系统,并在系统构造中尽可能运用人类的自然思维方式. 本讲内容 18.1 面向对象方法的形成18.2 面向对象方法的基本概念18.3 面向对象方法的基本特征18.4 面向对象的系统开发方法18.5 基于UML的系统分析与设计 18.2面向对象方法的基本概念 18.2.1 对象与类的概念对象(Object)的概念在OO方法中, 对象 是一组属性和施加在这些属性上的一组操作构成的独立个体,可以用 对象=属性+作用于这些属性上的操作 这一公式来表达.对象是一个封闭体,它向外界提供一组接口界面,外界通过这些接口与对象进行交互,这样对象就具有较强的独立性、自治性和模块性,从而为软件的重用奠定了坚实的基础.类(Class)的概念在OO方法中,类的定义是:具有相同属性和操作的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和操作两个主要部分.类是对象的模版(Template),模板可以想象为浇铸毛坯用的模具,模具是固定的,当注入钢水,便出现一个具有模具形状的毛坯.在系统运行时,类作为模板可以建立若干个对象,而每个对象都是这个类的一个具体实例(Instance). 18.2面向对象方法的基本概念 18.2.2消息的概念消息(Message)是指为了实现某一功能而要求某个对象执行其中某个功能操作的规格说明.消息一般含有下述信息:①提供服务的对象标识;
②服务标识;
③输入信息;
④响应信息.对象接收消息,根据消息及消息参数调用自己的服务,处理并予以响应,从而实现系统功能. 18.2面向对象方法的基本概念 18.2.3面向对象与面向过程面向过程的方法把相互依赖的数据和对数据的操作相互分离,这种实质上的依赖与形式上的分离,使得大型系统难于编写、调试.在多人合作中,程序员之间很难读懂对方的代码,更谈不上代码的重用.OOP技术是一种以对象为基础,以事件或消息来驱动对象执行处理的程序设计技术.它以数据为中心而不是以功能为中心来描述系统,数据相对于功能而言具有更强的稳定性.它将数据和对数据的操作封装在一起,作为一个整体来处理,采用数据抽象和信息隐蔽技术,将这个整体抽象成一种新的数据类型 ―― 类,并且考虑不同类之间的联系和类的重用性.另一方面,面向对象的系统中的一切操作都是通过向对象发送消息来实现的,对象接到消息后,启动消息处理函数完成相应的操作.因此,面向对象系统的控制流程是由运行时各种事件的实际发生来触发,而不再由预定顺序来决定,更符合实际. 本讲内容 18.1 面向对象方法的形成18.2 面向对象方法的基本概念18.3 面向对象方法的基本特征18.4 面向对象的系统开发方法18.5 基于UML的系统分析与设计 18.3 面向对象方法的基本特征 18.3.1 抽象性(Abstraction)18.3.2 封装性(Encapsulation)18.3.3 继承性(Inheritance)18.3.4 多态性(Polymorphism) 本讲内容 18.1 面向对象方法的形成18.2 面向对象方法的基本概念18.3 面向对象方法的基本特征18.4 面向对象的系统开发方法18.5 基于UML的系统分析与设计 18.4 面向对象的系统开发方法 18.4.1 面向对象的系统分析 问题域分析问题域(Problem Domain)是指被开发的应用系统所考虑的整个业务范围.问题域分析过程是抽取和整理用户需求并建立问题域精确模型的过程.主要任务是充分理解专业领域的业务问题和投资者及用户的需求,提出高层次的问题解决方案. 应用分析获取用户基本需求识别类(对象)标识对象的属性识别对象的行为识别对象之间的关系定义主题词 18.4 面向对象的系统开发方法 18.4.2 面向对象的系统设计 18.4 面向对象的系统开发方法 18.4.2 面向对象的系统设计主体部件是整个设计的主体,它包括完成目标系统主要功能的所有对象;
用户界面部件给出实现人机交互需要的对象;
任务管理部件提供协调和管理目标系统各个任务的对象;
数据管理部件定义专用对象,将目标系统中依赖于开发平台的数据存取操作与其他功能分开,以提高对象独立性. 18.4 面向对象的系统开发方法 18.4.3 面向对象的系统实施这一阶段主要是将OOD中得到的模型利用程序设计实现.具体操作包括:选择程序设计语言编程、调试、试运行等.OOA与OOD两阶段得到的对象及其关系最终必须由程序语言、数据库等技术实现,但由于在OOD阶段对此有所侧重考虑,故系统实现不会受具体语言的制约,因而本阶段占整个开发周期的比重较小.程序设计语言有多种类型:有过程型语言,如C、Pascal、FORTRAN、COBOL;
有基于对象的语言,如Ada;
还有面向对象的语言,如C++、Smalltalk、Actor、Objective-C、Eiffel.一般地,所有类型的语言都可以完成面向对象实现,但某些语言能够提供更丰富的语法,能够显式地描绘在OOA和OOD过程中所使用的表示法,直接支持过程抽象、数据抽象、封装、继承、以及对象与属性、类与成员关系.一般建议应尽可能采用面向对象的程序设计语言,一方面由于面向对象技术日趋成熟,支持这种技术的语言已成为程序设计语言的主流;
另一方面,选用面向对象语言能够更容易、安全和有效地利用面向对象机制,更好地实现OOD阶段所选的模型. 本讲内容 18.1 面向对象方法的形成18.2 面向对象方法的基本概念18.3 面向对象方法的基本特征18.4 面向对象的系统开发方法18.5 基于UML的系统分析与设计 18.5 基于UML的系统分析与设计 18.5.1 UML视图 约束、构造型、标记值 所有 所有 可扩展性 包、子系统、模型 类图 模型管理视图 模型管理 协作、交互、协作角色、消息 协作图 交互、对象、消息、激活 顺序图 交互视图 状态、活动、完成转换、分叉、结合 活动图 活动视图 状态、事件、转换、动作、 状态机图 状态机视图 动态 节点、构件、依赖关系、位置 部署图 部署视图 构件、接口、依赖关系、实现 构件图 实现视图 用例、参与者、关联、扩展、包括、用例泛化 用例图 用例视图 类、关联、泛化、依赖关系、实现、接口 类图 静态视图 结构 主要概念 图 视图 主要的域 18.5 基于UML的系统分析与设计 18.5.2 静态视图静态视图对应用领域中的概念以及与系统实现有关的内部概念建模.这种视图之所以被称之为是静态的是因为它不描述与时间有关的系统行为,此种行为在其他视图中进行描述.静态视图主要是由类及类间相互关系构成,这些相互关系包括:关联、泛化和各种依赖关系(如使用和实现关系).一个类是应用领域或应用解决方案中概念的描述. 类图(Class Diagram)是以类为中心来组织的,类图中的其他元素或属于某个类或与类相关联.静态视图用类图来实现,正因为它以类为中心,所以称其为类图. 18.5 基于UML的系统分析与设计 18.5.2 静态视图 18.5 基于UML的系统分析与设计 18.5.2 静态视图 18.5 基于UML的系统分析与设计 18.5.3 用例视图用例图描述系统的功能.显示若干角色以及这些角色和系统提供的用例之间的连接关系.用例是系统对外提供的功能的描述,是角色和系统在一次交互过程中执行的相关事务的序列.用例视图是外部用户(又称为参与者)所能观察到的系统功能的模型图.在UML中,用例图(Use Case Diagram)是用例视图的重要组成部分,由系统、用例和参与者(Actor)三种元素组成,其中,参与者是指与系统、子系统或类交互的外部人员、进程或事物.用例是系统中的一个功能单元,可以被描述为参与者与系统之间的一次交互作用.用例图的用途是列出系统中的用例和参与者,并显示哪个参与者参与了哪个用例的执行. 18.5 基于UML的系统........