1、UML面向对象建模基础UML面向对象建模本课程内容安排:本课程内容安排:1、面向对象概念与、面向对象概念与UML介绍:介绍:2、类建模与类图介绍:、类建模与类图介绍:3、用例与用例图介绍:、用例与用例图介绍:4、顺序图介绍:、顺序图介绍:5、状态图介绍:、状态图介绍:6、活动图:、活动图:7、协作图与构建图与部署图介绍:、协作图与构建图与部署图介绍:8、UML在软件开发实例中的具体应用。在软件开发实例中的具体应用。1、面向对象的分析和设计(OOAD)1.1、面向对象程序设计的引入:随着信息技术的发展,软件复杂性的增长 使软件开发越来越困难应用软件网络操作系统软件可能是人类制造出来的最复杂的实体
2、软件可能是人类制造出来的最复杂的实体1.2、面向对象的分析和设计(OOAD)面向对象的方法按照人类的自然思维的方式,面对客观世界建立软件模型。充分体现了对复杂系统进行分解、抽象、模块化等思想 OOAOOA依照用户所理解的真实世界中的对象概念,发现和分依照用户所理解的真实世界中的对象概念,发现和分析对象的内部构成和外部关系,建立准确而简洁的软件析对象的内部构成和外部关系,建立准确而简洁的软件系统的对象模型。系统的对象模型。OOD OOD 是根据已建立的系统对象模型,运用面向对象技术,是根据已建立的系统对象模型,运用面向对象技术,进行软件设计。进行软件设计。2、面向对象的基本概念。面向对象的基本概
3、念类与对象抽象封装继承多态2.1 类和对象的概念多边形对象多边形对象多边形类多边形类属性属性顶点边的颜色填充颜色方法方法绘制擦除移动抽象为属性 1方法 1属性 3方法 22.2类和对象的关系:抽象考察特定应用程序相关问题的某些方面的过程2.3类的特性:封装信息隐藏的过程有选择的数据隐藏防止意外的数据破坏更易于隔离和修复错误类的特性:封装 封装是允许有选择地隐藏类中的属性和方法的过程在类的外部不能访问在类的外部可以访问私有公有类2.4类的特性:继承超类是有其他类继承其特征和行为的类继承其他类的类称为子类动物动物2.5类的特性:多态性 同样的函数在不同的类上有不同的行为类:类:形状方法:方法:绘制
4、移动 初始化子类子类对各个子类实现的方法 将产生不同的结果2.6 类的其他知识 接口:接口是一个收集方法和常数表单的契约。当类执行一个接口,它就许诺声明在那个接口中执行所有的方法。在不同类中实现取用相同参数的同名成员函数 契约,设计的灵魂 重载在同一类中实现取用不同参数的同名成员函数 消息对象之间的交互包含三个方面的内容:消息的接收者;接收对象应采用的方法;方法所需要的参数3、模型与建模3.1什么是模型 模型是现实的简化模型提供了系统的设计图。模型可模型提供了系统的设计图。模型可以包含详细的规划,也可以包含概括性的以包含详细的规划,也可以包含概括性的规划,这种规划高度概括了正在考虑的系规划,这
5、种规划高度概括了正在考虑的系统。好的模型包括那些具有高度抽象性的统。好的模型包括那些具有高度抽象性的元素元素。模型有助于按原样或根据需要使系统可视化通过模型可以详细说明系统的结构或行为模型可以提供一个指导我们构建系统的模板模型可以记录已经做出的决策3.2、为什么要建模建模是为了让我们更好地理解将要开发的系统。User Interface(Visual Basic,Java)Business Logic(C+,Java)Database Server(C+&SQL)3.3、建模要实现的目的模型有助于按原样或根据需要使系统可视化。通过模型可以详细说明系统的结构或行为。模型可以提供一个指导我们构建系
6、统的模板。模型可以记录已经做出的决策。3.4、建模的原则 选择创建什么模型对于如何处理问题以及如何形成解决方案有很深远的影响。每一种模型可以在不同的精度级别上表示。最佳模型与现实情况是紧密相连的。一个模型不足以全面地反映实际情况。每个具有一定规模的系统都是通过一组几乎独立的模型来表示的。4、UML的基本概念。4.1UML 简介 统一建模语言UML(Unified Modeling Language)是一种绘制软件蓝图的标准语言。可以用UML对软件密集型系统进行可视化、详述、构造和文档化。从企业信息系统到基于Web的分布式应用,甚至严格的实时嵌入式系统都适合于用UML来建模。它是一种富有表达力的
7、语言,可以描述开发所需要的各种视图,然后以此为基础开发系统基础开发系统。4.2UML的语义与语法:1.UML语义语义描述基于UML的精确元模型定义。元模型为UML的所有元素在语法和语义上提供了简单、一致、通用的定义性说明,使开发者能在语义上取得一致,消除了因人而异的最佳表达方法所造成的影响。此外UML还支持对元模型的扩展定义。2 UML表示法表示法定义UML符号的表示法,为开发者或开发工具使用这些图形符号和文本语法为系统建模提供了标准。这些图形符号和文字所表达的是应用级的模型,在语义上它是UML元模型的实例 4.3在不同系统中的应用信息系统信息系统:与数据库有关的系统与数据库有关的系统技术系统
8、:处理和控制技术设备技术系统:处理和控制技术设备嵌入式系统:控制像移动电话这样的设备以嵌入式系统:控制像移动电话这样的设备以及家用设备及家用设备分布式系统:使用分布式系统:使用 CORBA CORBA 和类似的面向对和类似的面向对象机制分布在不同系统上的象机制分布在不同系统上的数据库系统数据库系统系统软件:操作系统和编写系统实用程序系统软件:操作系统和编写系统实用程序业务系统:与工作流有关的系统业务系统:与工作流有关的系统5、UML的组成。5.UML的组成 标准建模语言UML的重要内容可以由下列五类图(共9种图形)来定义:类图:类图描述系统中类的静态结构。不仅定义系统中的类,表示类之间的联系如
9、关联、依赖、聚合等,也包括类的内部结构(类的属性和操作)。类图描述的是一种静态关系,在系统的整个生命周期都是有效的。以洗衣机为例:类图如右下:对象图:对象图对象图是类图的实例,几乎使用与类图完全相同的标识。他们的不同点在于对象图显示类的多个对象实例,而不是实际的类。一个对象图是类图的一个实例。由于对象存在生命周期,因此对象图只能在系统某一时间段存在。如下面:左图指明对象和它对应的类名;右图尽管指明了对象所属类,但并未提供一个具体的对象名,这是匿名对象。用例图用例图:是从用户角度描述系统功能,并指出各功能的操作者。以洗衣机系统如下:状态图状态图是对类图的补充。在实用上并不需要为所有的类画状态图,
10、仅为那些有多个状态其行为受外界环境的影响并且发生改变的类画状态图。如下为一洗衣过程的状态图。顺序图顺序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互。活动图活动图描述满足用例要求所要进行的活动以及活动间的约束关系,有利于识别并行活动协作图协作图描述对象间的协作关系,协作图跟顺序图相似,显示对象间的动态合作关系。除显示信息交换外,协作图还显示对象以及它们之间的关系。构件图构件图描述代码部件的物理结构及各部件之间的依赖关系。一个部件可能是一个资源代码部件、一个二进制部件或一个可执行部件。它包含逻辑类或实现类的有关信息。部件图有助于分析和理解部件之间的相互影响程度
11、。部署图配置图定义系统中软硬件的物理体系结构。它可以显示实际的计算机和设备(用节点表示)以及它们之间的连接关系,也可显示连接的类型及部件之间的依赖性。在节点内部,放置可执行部件和对象以显示节点跟可执行软件单元的对应关系。下面为不同品牌计算机的通信部署图:UML中几个图的关系用例图需求类图(复杂)状态图顺序图类图(简单)活动图协作图UML应用领域 最常用的是为软件系统建模,但不限于软件系统建模。UML还可用来描述其他非软件系统,如一个机构的组成或机构中的工作流程等。UML应用-需求分析阶段 UML 的用例视图可以表示客户的需求,通过用例建模可以对外部的角色以及它们所需要的系统功能建模。UML应用
12、-分析阶段 分析阶段主要考虑所要解决的问题。可用UML 的逻辑视图和动态视图来描述,类图描述系统的静态结构;协作图、状态图、顺序图和活动图描述系统的动态特征。在分析阶段,只为问题领域的类建模,不定义软件系统的解决方案的细节(如用户接口的类数据库等)。UML应用-设计阶段在设计阶段把分析阶段的结果扩展成技术解决方案,加入新的类来提供技术基础结构-用户接口,数据库操作等。分析阶段的领域问题类被嵌入在这个技术基础结构中,设计阶段的结果是构造阶段的详细的规格说明。UML应用-构造阶段在构造(或程序设计)阶段把设计阶段的类转换成某种面向对象程序设计语言的代码。UML应用-测试阶段对系统的测试通常分为单元
13、测试、集成测试、系统测试和接受测试几个不同级别。不同的测试小组使用不同的UML 图作为他们工作的基础。单元测试使用类图和类的规格说明;集成测试典型地使用组件图和协作图;而系统测试实现用例图来确认系统的行为是否符合这些图中的定义。6、一个UML案例 顺序图案例 刘备孔明关羽求战请拟策略张飞请防守荆州请防守荆州前线孙权曹操请联络孙权请孙权领兵相助借东风火攻火攻曹军刘备的责任?刘备求战请拟策略请防守荆州请联络孙权我必须 迎战曹操!使用UML表示 孔明请拟策略请联络孙权请孙权领兵相助借东风火攻火攻曹軍孔明拟定策略联合孙权借东风火攻使用UML表示 关羽张飞请防守荆州请防守荆州前线关羽防守荆州张飞防守荆州
14、前线 关羽防守荆州张飞防守荆州前线刘备迎战曹操孔明拟定策略联合孙权借东风火攻UML的类图 使用C#刘备迎战曹操写C#程序class 刘备public 迎战曹操()孔明拟定策略联合孙权借东风火攻写C#程序class 孔明public 拟定策略()public 联合孙权()private 借东风火攻()class 刘备public 迎战曹操()使用C#class 孔明public 拟定策略()public 联合孙权()private 借东风火攻()class 关羽public 防守荊州()class 张飞public 防守前线()写C#程序内容 刘备求战请拟定策略请防守荆州请联络孙权写C#程序cl
15、ass 刘备孔明 k new 孔明关羽 g new 关羽public 迎战曹操()k.拟定策略 g.防守荆州 k.联合孙权写C#程序内容 孔明请拟定策略请联络孙权请孙权领兵相助借东风火攻借东风火攻写C#程序class 孔明孙权 s new 孙权public 拟定策略()public 联合孙权()s.请领兵相助 借东风火攻()private 借东风火攻()写C#程序内容 case endclass 刘备孔明 k=new 孔明关羽 g=new 关羽public 迎战曹操()k.拟定策略 g.防守荆州 k.联合孙权class 孔明孙权 s new 孙权public 拟定策略()public 联合孙权()s.请领兵相助 借东风火攻()private 借东风火攻()小结:1、熟悉面向对象分析的概念。2、建模的含义与用途。3、UML的含义与组成。end