好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

se4第二章软件建模语言.ppt

72页
  • 卖家[上传人]:tian****1990
  • 文档编号:73800959
  • 上传时间:2019-01-26
  • 文档格式:PPT
  • 文档大小:2.89MB
  • / 72 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第 2 章,软件建模语言——UML,软件工程学 之,用工程化的方法来开发软件,©Copyright FJNU,2,5 类图,类图概述 类 类之间的静态关系 使用类图的建议,©Copyright FJNU,3,5 .1 类图概述,类图技术是面向对象方法的核心技术 它定义了很多的概念,并提供了丰富的表示法 类图的表达能力强,应用范围广©Copyright FJNU,4,5 .1 类图概述,类图描述了系统中的类及其相互之间的各种关系,其本质是反映系统中包含的各种对象类型以及对象间的各种静态关系 类之间的静态关系主要有: 关联(聚集和组成是两种特殊的关联) 泛化 实现 依赖,©Copyright FJNU,5,5 .1 类图概述,在UML中,可从三个不同的抽象层次来看待类图 概念层:概念层类图描述的是应用领域中的概念或事物概念层类图与实现它的软件没有直接的联系 说明层:说明层类图主要关注的是软件的接口部分,而不是软件的实现部分 实现层:实现层类图揭示了软件实现体的构成情况 类图的三个抽象层次,对于画类图和理解类图都是至关重要的©Copyright FJNU,6,5 .1 类图概述,建立类图的过程实际上是对现实世界的一个抽象过程。

      它可以对现实世界中与问题有关的各种对象及其相互之间的各种关系进行分类描述 通过分类,可以有效地发现复杂问题的内在规律,更深刻地了解问题的本质,进而找到解决问题的有效方法©Copyright FJNU,7,5 .1 类图概述,,,©Copyright FJNU,8,5.2 类,类和对象 属性 操作 类的种类,©Copyright FJNU,9,5.2.1 类和对象,对象 是对应用问题中或软件系统中事物或概念的一种抽象描述 所有对象都是独立的实体,都有其唯一的标识 同类对象具有相同的特征©Copyright FJNU,10,5.2.1 类和对象,类 是对一类具有相同特征的对象的描述 类的特征包括属性和行为 任何对象都是某个类的实例 用类的概念来划分问题中涉及的各种对象,并组织系统的结构©Copyright FJNU,11,5.2.2 属性,在三个不同的抽象层次,属性也具不同的含义以客户名称这一属性为例: 在概念层,仅表示客户具有名称这一属性仅仅是概念) 在说明层,表示客户对象能把自己的名称告诉给其它对象,并拥有一些设置名称的方法从概念到职责) 在实现层,表示为客户名字安排一个物理存储区 (从职责到实现),©Copyright FJNU,12,5.2.2 属性,UML定义属性的语法: 可见性 名称:类型=缺省值{约束特性} 可见性:表示该属性对于类外的元素是否可见。

      公有 UML表示“+” 保护 UML表示“#” 私有 UML表示“-” 名称:一个字符串,表示属性的名字 类型:定义属性的种类,基本类型或自定义类型 缺省值:属性的初始值 约束特性:用于描述对属性的约束如{只读},©Copyright FJNU,13,5.2.3 操作,在概念层,用操作去定义类的职责,而不是接口 在说明层,主要描述重要的公有操作 在实现层,主要描述一些私有的和受保护的操作©Copyright FJNU,14,5.2.3 操作,类职责是从高层次描述的类的目的,它从对属性和方法的描述中摆脱出来,用几句话来定义类的目标 对每项职责而言,可指定其它类作为 协作者来完成类的此项职责 CRC卡片(Class-Responsibility-Collaborator ,“类-职责-协作者”)可用于在概念层定义类的职责©Copyright FJNU,15,CRC卡片,CRC卡片是由美国Tektronix实验室两位著名的Smalltalk程序员在80年代末设计 的 不是用图,而是用卡片来描述类 不是描述类的属性和方法,而是描述类的职责©Copyright FJNU,16,CRC卡片,CRC卡片实例,©Copyright FJNU,17,CRC卡片,何时使用CRC卡片 在软件开发的早期,清理问题领域所涉及的类的时候。

      当类缺乏清晰定义的时候 当开发人员在定义类时,过早地陷于到太多的细节中的时候©Copyright FJNU,18,5.2.3 操作,在UML中,操作的语法定义: 可见性 名称(参数表):返回类型 {约束特性} 可见性:表示该操作对于类外的元素是否可见 公有 UML表示“+” 保护 UML表示“#” 私有 UML表示“-” 名称:是一个字符串,表示操作的名称 参数表:操作所需的参数 返回类型:返回值的类型 约束特性:描述对操作的约束前置、后置条件),©Copyright FJNU,19,5.2.3 操作,操作的基本类型 获取型操作,不改变类状态的操作 设置型操作,改变类状态的操作 区别操作与方法 在具有多态性的定义中,操作只有一个,方法却有多个©Copyright FJNU,20,5.2 类,类和对象 属性 操作 类的种类,©Copyright FJNU,21,5.2.4 类的种类,接口 抽象类 模板类 关联类 嵌套类 主动类,©Copyright FJNU,22,接口,OO方法十分注意接口和类的区别,将接口本身称作类型,将接口的实现称作类以强调这种区别 但面向对象程序设计语言通常将接口和类混为一团。

      新的OO语言,如Java、C#和CORBA就改变了这种状况©Copyright FJNU,23,接口,接口的两种表示方法,©Copyright FJNU,24,接口和抽象类,一个接口是一个不带实现的类,它 只规定类的外部特性 接口可通过抽象类来描述 UML用斜体表示抽象元素(包括类、属性、方法等)的名称©Copyright FJNU,25,接口和抽象类,©Copyright FJNU,26,参数化类,参数化类就是模板,特别适合定义抽象的集合主要用在说明层和实现层 实例,class Set { void insert (T newElement); void remove (T newElement); … } Set empolyeeSet empolyseeSet.remove(…),,©Copyright FJNU,27,5 类图,类图概述 类 类之间的静态关系 关联 泛化 依赖 实现 使用类图的建议,©Copyright FJNU,28,5.3 .1 关联,关联表示类之间存在的某种关系,它是对对象之间存在的某种具体关系的抽象 在概念层,属性与关联可以互换即一个概念既可以用属性来表达,也可以用关联来表达。

      如客户名字,可以用属性来表示;也可以在建立名字对象之后,用客户对象与名字对象之间的关联来表达 在说明层和实现层,有时出于优化的目的,将概念层的属性定义为关联并用指针或成员函数来实现©Copyright FJNU,29,5.3 关联,关联可从以下几方面进行刻画: 名称 角色 多重性 导航 限定,©Copyright FJNU,30,关联的名称,关联的名称用于描述关联的性质,可以使用动词或动词短语给关联命名在含义十分明显时,名字可以省略©Copyright FJNU,31,关联的角色,关联的两个端点被称为角色,表示关联所连接的两个类各自在此关联中的作用©Copyright FJNU,32,关联的多重性,关联的角色可以具有多重性一个角色可以由多个对象来扮演关联的多重性表示参与角色的对象的数目的上下界©Copyright FJNU,33,关联的导航性,在关联上增加一个箭头表示导航性导航主要用于 说明层和实现层,在概念层中用处不大 说明层:学生对象知道自己学习了哪些课程,但课 程对象不需要知道哪些学生对象学习它 实现层:学生对象包含指向课程对象的指针数组, 但课程对象没有指向学生对象的指针数组。

      ©Copyright FJNU,34,关联的限定符,通过在关联的一方添加限定符,明确地标识在关联的另一方出现的多个对象中的每一个对象限定符可以是关联另一方的某个属性或是一个表达式©Copyright FJNU,35,关联类,有时需要为关联设置一些属性、操作及其它特性UML用建模元素“关联类”来表示 UML规定:在任何两个相关的对象之间,只能存在关联类的一个实例©Copyright FJNU,36,关联类,关联类也可以用普通(正式)的 类来表示 这种表示在描述一个对象与另一个对象之间,需要有多于一个的关联类实例时,是可行的此时使用关联类是不行的,因为那样就违反了UML的规定),©Copyright FJNU,37,有两种特殊的关联关系,它们是聚合关系和组合关系 聚合关系 组合关系,两种特殊的关联关系,,,注意: ①聚合与组合的图符不同 ②组合关系中部分对象与整体 对象共存亡©Copyright FJNU,38,5 类图,类图概述 类 类之间的静态关系 关联 泛化 实现 依赖,©Copyright FJNU,39,5.3.2 泛化,在概念层,泛化表示类与子类的关系 在说明层,泛化意味着子类型的接口必须包括父类型接口中的每个元素。

      在实现层,泛化与程序设计语言中的继承有一定联系泛化可以用两种技术来实现 类继承技术 授权技术,©Copyright FJNU,40,继承,用继承机制实现泛化关系的条件 一个父类的任何子类都必须具有其父类的所有行为这种行为的一致性要求类中的操作不仅在语法上一致,而且在语义上也要一致 语义上的一致意味着每个对象都应该是其父类的一个对象,父类中的所有属性和操作都完全适用于子类对象©Copyright FJNU,41,继承,即便子类重载父类中的操作,必须保证这个操作提供与父类操作同样的服务只不过服务的内容可以更多更具体一些 但是程序员在很多时候,没有严格确保子类与父类在语义上的一致性往往违背语义的一致性,采用继承机制借用一个类的部分行为,导致行为继承的错误©Copyright FJNU,42,授权,授权就是把原来属于类A的职责或任务转交给类B来完成类B成为类A不可分割的一个组成部分 复杂的泛化关系,如多元继承、动态继承等不宜用继承关系来实现©Copyright FJNU,43,授权,©Copyright FJNU,44,5.3.3 实现关系,实现关系用于在说明层和实现层表示类与被该类实现 的接口之间关系。

      ©Copyright FJNU,45,5.3.4 依赖关系,依赖关系表示一个类以某种形式依赖另一个类常见 的依赖关系有:,(1)使用依赖,(2)抽象依赖,,(3)绑定依赖,©Copyright FJNU,46,5 类图,类图概述 类 类之间的静态关系 使用类图的建议,©Copyright FJNU,47,5.4 使用类图的建议,不要在一开始,就试图使用类图中所有的模型元素,应先易后难,逐步添加 在项目的不同阶段,应按不同的抽 象层次构造不同的类图 不要为每个概念或事物都画一个类图,只画几张关键的类图 类图应随着开发过程的进展,而不断地更新©Copyright FJNU,48,小结,类图的三个抽象层次:概念层、说明层和实现层 类 属性 操作 CRC卡 类的种类:接口、抽象类、模板类、关联类、嵌套类和主动类,©Copyright FJNU,49,类之间的静态关系 关联 泛化:继承和授权两种实现方式 实现:接口和实现类之间的关系 依赖,小结,聚合关系 组合关系,,,©Copyright FJNU,50,6 类图的高级概念,构造型 多值分类 动态分类 派生关联和派生属性 引用对象和值对象 约束规则,©Copyright FJNU,51,6.1 构造型,构造型 是UML提供的在一种已定义的模型元素的基础上,构造一种新模型元素的机制。

      被构造出的元素被称为构造型元素 构造型元素可以扩展基元素的语义,但不能扩展基元素的语法结构©Copyright FJNU,52,6.1 构造型,构造型适用于。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.