面向对象建模技术.ppt
面向对象建模技术,课程介绍,课时安排:35+10课堂纪律出勤率实验情况总成绩笔试成绩(70%)+上课出勤(20%)+案例设计(10%),自我介绍,林琳邮箱:JSDXLL电话:13852945376办公室:计算机大楼316,参考书,Joseph Schmuller,UML基础、案例与应用(第三版),人民邮电出版社谢星星等,UML基础与Rose建模实用教程,清华大学出版社http:/,为什么要进行建模,建筑工程,交流手段,为什么要进行建模,任何大规模的系统设计都是相当的困难的。从简单的单机桌面程序设计到多层的企业级系统,任何系统都可以分解为多个软件和硬件面对如此庞大复杂的结构将会出现几个问题:我们如何与客户沟通,了解客户对系统的需求?如何在开发人员之间共享设计,以确保各个部分能够无缝地协作?在开发复杂的系统时,如果缺乏相应的帮助工具,则很容易曲解或遗忘许多细节。,建模的重要性,建模的使用是软件成功的一个基本因素。模型的实质:对现实的简化。建模的目标:便于展现系统。允许指定系统的结构或行为。提供构造系统的模板。记录决策。,建模的误区,建模就是写文档一开始就能考虑到一切情况必须“冻结”需求设计不可更改必须使用CASE工具建模是在浪费时间所有的开发人员都知道如何建模,11,第1章 UML与面向对象,UML(统一建模语言,Unified Modeling Language)是软件和系统开发的标准建模语言,它主要以图形的方式对系统进行分析、设计。面向对象的软件开发方法是现在软件工程流域的主流方法。UML是在多种面向对象分析与设计方法相互融合的基础上形成的,是一种专用于系统建模的语言。,12,本章学习要点,理解面向对象概念了解OO开发熟悉OO开发的优点掌握OO开发三层设计了解模型的作用了解面向对象的主要概念了解UML的发展掌握UML四层结构了解统一的含义理解UML视图和图的关系掌握UML模型元素内容理解UML通用机制了解UML建模在软件开发中应用,13,面向对象(Objec-Oriented,OO)不仅是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系,用什么观点来研究问题并进行求解,以及如何进行系统构造的软件方法学。面向对象方法的基本思想包括两个主要方面。一方面是从现实世界中客观存在的事务出发来构造软件系统,并在系统的构造中尽可能地运用人类的自然思维方式。另一方面是面向对象方法比以往的方法更接近人类的自然思维方式。,1.1 面向对象开发,软件工程的发展历史,1946年,世界上第一台电子计算机在美国研制成功。50年代,软件诞生,这时的软件开发主要指编程。60年代中期到70年代中期,“软件危机”出现。1968年,“软件工程”概念提出。,传统软件工程的生命周期,软件开发分为五个阶段:需求分析阶段总体设计阶段详细设计阶段编程和测试阶段维护阶段,面向对象的软件工程方法,1967年,第一种面向对象语言Simula-67诞生;20世纪80年代Smalltalk语言掀起了一场“面向对象”运动;面向对象语言越来越多,应用越来越广泛;面向对象技术在软件工程领域得到应用,主要包括:面向对象的分析OOA面向对象的设计OOD面向对象的编程OOP,传统方法与面向对象方法的比较,数据处理方法不同 图1-1建模手段不同软件开发方法不同 图1-2,1.1.2 面向对象的基本概念,面向对象技术的基本观点:客观世界由对象组成,任何客观实体都是对象,复杂对象可以由简单对象组成。具有相同数据和操作的对象可归纳成类,对象是类的一个实例。类可以派生出子类,子类除了继承父类的全部特性外还可以有自己的特性。对象之间的联系通过消息传递来维系。,一个对象的实例图解,对象类封装继承消息多态性关联聚合,20,1.1.2 面向对象的基本概念,1.1.3 OO开发的优点,1.自然性在开发中总是以对象的形式来认识世界,因此当人们分析和设计系统需求时,总是很自然地定义各类对象。2.重用性一次创建的类和对象能多次使用。,21,1.2 OO开发中三层设计,面向对象的开发中,通常把OO系统中相互联系的所有对象分成三类:问题域类、GUI类和数据访问类。问题域类是指和用户相关的对象类;GUI类的作用是方便用户与问题类进行交互;数据访问类,实现问题域类和数据库交互。在实现系统时按照先确定问题域类,然后实现GUI类,最后再确定数据访问类的顺序逐步实现。一旦完成所有的内容后,它们就可以作为一个完整的系统进行工作了。优点:降低耦合,提高复用。,22,1.2 OO开发中三层设计,图1-3 图书管理系统的三层结构,1.3 UML简介,统一建模语言(UML)仅仅是一种语言。它不是一种系统设计的方法,而是系统建模的标准。UML经历了多年的研究、发展并不断完善,成为现在诸多领域内建模的首选标准。开发人员主要使用UML来构造各种模型,以便描述系统需求和设计。,24,1.3.1 为什么对系统建模,在系统设计中采用模型化设计的重要原因之一是管理系统设计的复杂性。模型化可以帮助用户从高层理解系统,使用户专注于系统设计的重要部分,收集关键信息,而不需要关心一些无关紧要的部分。,25,1.3.2 UML的发展,1.3.3 UML的构成,UML的四层体系结构元元模型层元模型层模型层用户模型层,27,1.3.3 UML的构成,UML的核心构成视图:表达系统的某一个方面特征的UML建模元素的子集;图:对建模系统的抽象表示,用于描述视图内容;模型元素:包括事物和事物之间的联系;通用机制:为模型元素提供额外信息。,28,1.3.4“统一”的意义,UML的含义为统一建模语言,那么“统一”在UML中的含义具有一些相关联的含义,具体表现在以下几个方面:在以往出现的方法和表示法方面在软件开发的生命期方面 在应用领域方面在实现的编程语言和开发平台方面在开发过程方面在内部概念方面,30,1.4 UML视图,在对复杂的工程进行建模时,系统可由一个单一的图形来描述,该图形精确地定义了整个系统。但是,单一的图形不可能包含系统所需的所有信息,更不可能描述系统的整体结构功能。UML中使用视图来划分系统各个方面,每一种视图描述系统某一个方面的特性。一个完整的系统由不同的视图从不同的角度共同描述,这样系统才可能被精确定义。UML中具有多种视图,细分起来共有五种:用例视图、逻辑视图、并发视图、组件视图和部署视图。,31,构成系统模型的几种视图,组件视图,1.用例视图,用途:描述系统应该具备的功能,即被称为参与者的外部用户所能观察到的功能。用例视图是几个视图的核心,它的内容直接驱动其他视图的开发。,2.逻辑视图,用途:描述用例视图中提出的系统功能的实现。逻辑视图既描述系统的静态结构,也描述系统内部的动态协作关系。使用者:主要是设计人员和开发人员。组成:静态结构在类图和对象图中进行描述;动态模型在状态图、时序图、协作图以及活动图中进行描述。,3.并发视图,用途:考虑资源的有效利用、代码的并行执行以及系统环境中异步事件的处理。使用者:主要是开发人员和系统集成人员。组成:状态图、协作图和活动图。,4.组件视图,用途:描述系统的实现模块以及它们之间的依赖关系。组成:组件图。使用者:主要是开发人员。,5.部署视图,用途:显示系统的物理部署,并描述位于节点实例上的运行组件实例的部署情况,还允许评估分配结果和资源分配。组成:部署图。使用者:开发人员、系统集成人员和测试人员。,1.5 UML图,每一种UML的视图都是由一个或多个图组成的,一个图就是系统架构在某个侧面的表示,所有的图一起组成了系统的完整视图。UML1.x提供了九种不同的图,可以分为两大类:一类是静态图,包括用例图、类图、对象图、组件图和部署图;另一类是动态图,包括序列图、协作图、状态图和活动图。,38,UML1.X与2.0的比较,对UML1.X进行了一些扩充。用更为受限的通信图代替了协作图。增加了交互概览图、定时图、组合结构图等新图。,1.6 模型元素,UML中每一个模型元素都有一个与之相对应的图形元素。模型元素的图形是表示使UML的模型图形化,图形语言简明和直观使用其成为人们建模的有力工具。模型元素包括事物和事物之间的关系,是UML中重要的组成部分。,40,1.6.1 事物,事物是UML模型中面向对象基本的模块,它们在模型中属于静态部分,代表物理上或概念上的元素。UML中的事物可分为四种,分别是结构事物动作事物分组事物注释事物,41,1.结构事物,UML模型中最基本的结构化事物,包括:类接口协作用例活动类组件节点,(1)类,对具有相同属性、方法、关系和语义的对象的抽象。,(2)接口,为类或组件提供特定服务的一组操作的集合。描述了类或组件的对外可见的动作。,(3)协作,定义了交互操作,一个给定的类可能是几个协作的组成部分。代表构成系统的模式的实现。,(4)用例,描述系统对一个特定角色执行的一系列动作。组织动作事物。,(5)活动类,类对象有一个或多个进程或线程的类。,(6)组件,实现了一个接口集合的物理上可替换的系统部分。,(7)节点,在运行时存在的一个物理元素。代表一个可计算的资源。通常占用一些内存和具有处理能力。,2.动作事物,UML模型中的动态部分,包括:交互状态机,(1)交互,一组对象在特定上下文中,为达到某种特定的目的而进行的一系列消息交换组成的动作。,(2)状态机,由一系列对象的状态组成。,3.分组事物,UML模型中组织的部分。分组事物只有一种:包。包是一种将有组织的元素分组的机制。包只存在于开发阶段。,4.注释事物,UML模型的解释部分。,1.6.2 关系,关联依赖泛化实现聚合,1.7 通用机制,通用机制使得UML更简单和易于使用通用机制可以为模型元素添加注释、信息或语义,还可以对UML进行扩展。通用机制中包括了修饰、注释、规格说明和扩展机制等四种。,56,1.修饰,修饰(Adornment)为图中的模型元素增加了语义,建模时可以将图形修饰附加到UML图中的模型元素上。例如,当一个元素代表某种类型时,名称显示为粗体;当同一元素表示该类型的实例时,该元素名称显示为下划线修饰。,57,2 注释,以自由的文本形式出现的。信息类型是不被UML解释的一个字符串。示例:,3 规格说明,UML 中预定义的特性:文档(Documentation)职责(Responsibility)永久性(Persistence)并发性(Concurrency),4 扩展机制,构造型标记值约束,(1)构造型,由建模者设计的新的模型元素。新的模型元素的设计要以UML已定义的模型元素为基础。示例:,(2)标记值,附加到任何模型元素上的命名的信息块。示例:,(3)约束,用某种形式化语言或自然语言表达的语义关系的文字说明。示例:,1.8 使用UML建模,UML可用于任何面向对象系统开发建模,不仅可以为使用UML进行软件建模,同样可以使用UML对其他非计算机领域系统进行建模,UML常进行以下应用:信息系统(Information System)技术系统(Technical System)嵌入式系统(Embedded Real-Time System)分布式系统(Distributed System)商业系统(Business System),64,建模步骤,需求分析分析设计构造测试,UML建模工具,绘图工具Microsoft的Visio手绘CASE(Computer Aided Software Engineering,计算机辅助软件工程)工具IBM Rational的Rational Rose Sparx Systems的Enterprise Architect(EA)开源项目StartUML,CASE工具,UML建模CASE工具允许我们应用规范的面向对象分析和设计的方法与理论,远离纠缠不清的源代码,达到构建和设计变得更直观,更容易地理解与修改的层次。在大型项目中,使用CASE工具更重要。通过使用CASE工具,开发者能快速地将模型转变为一个可运行的应用程序,寻找类和方法的子集,以及理解它们如何交互。,本章完,