UML之深入浅出类图

所需积分/C币:9 2016-01-19 23:27:04 2.02MB PDF
1
收藏 收藏
举报

1.综合N多高效、公司类图讲义; 2.研究生课堂使用效果极佳。
第四章 建立基本模型一一类图 按照面向对象的封裝和信息隐蔽原则,一个对象的属性和操作时紧密结合的,对黎的属性应该只由这 个对象的操作存取 (2)类是对具有相同属性、操作、关系和语义的对象集合的描述,也就是说它为属于该类的全邰对象 提供∫统一的抽象措述。对象是类的实例 个类的所有对象具有相同的属性,是指所有对象的属性的个数、名称、数据类型都相同,但各个对 象的属性值可以互不相同,并且随着程序的执行而变化。操作对」一个类的所有对象都是一样的,即所有 的对象共同使用他们类的定义中给出的操作方法 (3)类和对象的关系 类是一组对象,这些对象具有共同的属性和共同的行为 类是创建对象的模板 类可捕获对象的本质 类是对象的抽象,而对象则是类的实例,或者说是类的具体表现形式 如同个模具与用这个模具铸造出来的铸件之间关系。根据实际需要,通过对具有相同性质的事物的 抽象,构造岀模具,再用模具生产出具有这样性质的铸件。 类 实例 @70 图42类和对象的关系 在面向对象方法中,通过对具有相同性质的对象的抽象,构造出类,进而使用类构造出系统模型;在 系统运行时,又由类创建出对象。正是所创建的这些对象在计算机中的运行,完成了用户所要求的功能 4.1.5类的种类 1.抽象类 在进行类设计时,如果一些具体类具有相同的方法或属性,我们可以把这些相同的方法或属性从这些 具体类中抽取出来,把它们封装到一个抽象类中,然后,通过扩展抽象类,重新定义这些具体类。 抽象类是一种不能直接实例化的类,也就是说不能用抽象类创建对象。 在UML中,抽象类和抽象方法的表小是将其名字用斜体表小。但是由于斜体字在草图中不容易表现, 因此推荐用《 abstract》构造型来表示。图4-7中列出这两种不同的表示方法 Shape abstract, Shape ◆义 abstract》 drawin: Graphics) getBoundingAreat): in abstract》 geaRed:irt getBoundingAreai; int Square Cire quare Circle ◆:×g:Gi:hEs! Drew,g: GraphIcs 鲁 getAe彐):int treal: Ir UML标准表示法(用于蓝图 构造型表示法(适用于草图) 图4-7抽象类的2种表示方法 第3页共22页 第四章 建立基本模型一一类图 抽象类 shape(图肜)中定乂三个方法, drewO、 geared()是抽象方法, getboundingarea(是具体 方法。在 squre(正方形)和 circle(圆形)两个子类中,没有定义 getboundingarea(),确定义了drew( 和 getarea()方法 抽象类 shape定义的draw()和 setaria()是抽象操作,在不同的子类中,其实现方法是不同的 即,在 square和 circle类中,对上面两个抽象方法,有不同的实现。 2主动类 从运行的角度来看,还有一种特殊的类一主动类,主动类的实例称为主动对象,一个主动对象拥有 个控制线程并且能够控制线程的活动,具有独的控制权。 例如,命令处理程序就是一个主动类的例子,它从外面接受命令对象,然后在自身的控制线程内执行 命令。在第二章中,曾经说明UML1.0中主动类的表示方法(普通类的基础上加上粗边界),但是在UM2.0 中修改了主动类的表示法(在类的两边加上垂直线)。 3.模版类 在注入c十这样语言中,提供了一种叫做参数化类( parameterized class)的机倒,或叫做模版 〔 template)。例如,我们需要一些能过处理整型、浮点型、字符串的数组,普通的做法是为它们各创建 个类,这三个类除了数据类型不同之外,其他的都是相同,但是仍然要定义三次。 模版就是用来解决这个问题,可以根据占位符或者参数来定乂类,而不用说明属性、方法返回值和方 法参数的实际类型。通过实际值代替占位符即可创建新类。这样,就可以采用如图4-8所小的设计方案。 elements 20]: int <<bind>>add Element(e: int):void tElement(i: int): int Omnip oten ceArray Relements(size]:T ≤<hind>> String Array add Element(e: T): void string. 30) Element[30]:sting ° getElement(:int:T eLement(e: string void ≤<bind> getElement(: int): string (1oat,10) elements 10]: float CaddElemento getElemento 图4-8樸板类 4嵌套类 在诸如Java的语言中,允许你将一个类的定义放在另一个类定义的内部,这就是嵌套类,在Java中 也称为内层类。嵌套类是声明在它的外层类中的,因此只能够通过外层类或外层类的对象对它进行访问 在UML中,可以采用个描图标来衣示这种关系,如图4-9所示。 A 锚图标 图4-9嵌套类表示法 4.2属性与操作 UL中,表示一个类,主要是标识它的名称、属性和操作。如图4-3所示,类由一个矩形表示,它包 含3栏,在每栏中分别写入类的名称、类的属性和类的操作。 第4页共 第四章 建立基本模型一一类图 Order- 类名 borderDale 属性 desta"e彐 可见性 匙prce 属性 &pay ment tvpe 擐作 ispatch 可见性 close( 操作 图4-30rder类 用一个水平线划分成三个分栏的实线矩形表示类。在最上面的那个分栏放类名,中的分栏放属性列表, 最下面的分栏放操作列衣,每个属性和操作都各占·行,下图(a)给出的是衣示般类的符号。由于对象 是类得实例,一个炎的各个对象所拥有的操作都是相同的,因此对于对象只需描述对象名和其属性,下图 (b)给出的是表示对象的符号。 类名 对象名:类名 属性列表 属性 操作列表 图(a) 图(b 1.名称 锊个类都必须有一个有别于其他类的名称,类名部分是不能省略的,其他组成部分可以省略。名称 (Name)是一个文本串,表示方法有两种: (1)简单名:如图4-3中的0rder(订单),它就只是一个单独的名称 (2)全名:也称为路径名,就是在类名前面加上包的名称,例如java::awt:: Rectangel、 businessrule:: order等。 对于类的命名规范要求,由字符、数字、下划线组成的惟一的字符串即可。但在实际应用中,有一个 普遍采用的命名原则:采用 Came l case格式(大写字母廾头、混合大小写,每个单词以大写开始,邐免使 用特殊符号),尽可能避免使用缩写 2.属性 属性描述了类的静态特征,在面向对象编程中,把属性表示为成员变量。例如,在图4-3所示的 Order 类中,列出了 orderDate(下订单时间)、 destarea(送货区域)、 price(订单总价格)、 paymentType(支 付类型)四个属性,它们是用来描述每个具体的订单对象的。 在属性的前面有一个修饰,用来表示属性的可见性,属性的可见性一般都是 private,这样才符合面 向对象的“封裝”思想。通常属性名的第·个字母是小写的 3操作 操作是类所提供的服务,是对象被要求执行的服务。通俗地说,操作就是定义了对象所能做的事情。 在面向对象编程语言中,它通常表示为成员方法。对」操作的图示,有以卜儿点需要说明: ()操作名的命名规范也未硬性规定的,人家习惯采用和属性名相同的命名规则。 对于操作,也经常会提供可见性修饰,只是通常应该声明为pub1ic,否则它难以向其他类提供服务 (2操作在表示时可以只写出操作名,乜可以将操作拥有的参数也写出来,即写成员方法的完整签名 (3)属性和架作名之前可附加的可见性修的符: 第5页共22页 第四章 建立基本模型一一类图 加号(+)表示pub1C(共有的); 减号(-)表示 private(私有的); #号表示p0 tected(受保护的); 号表小包范国的 省略这些修饰符表示具有 package(包)级别的可见性。如果属性或操作名具有下划线,则说明它 是静态的。 4职责 职责指类承担的责任和义务。在矩形框中最后一栏中写明类的职责。如图4-4所示。 Str f nur ber of nations 手frd created Resporsiilty 图4-4职责的表示 5约束 约束指定」类所要满足的一个或多个规则。在UML中,约束是用花括号括起来的自由文本。如图3-4 所 Title bn st burbot of reception 图4-5约束的表示 举例如下 Class clock public: old seEme〔 int New: int ne则, int News} v0 id showtime〕 private int hour-Minute- second } vUi山Cuuk;ˉ SuLTIIH〔inL硎,⊥nLw,inLw3 { Hour=NewH Minute=NewM Second=news void clock : ShowTime(y cout<<Hour<<:<<inute<<.<<second<<endl } 其对应的类操 作、实例操作的表示法为 第6页共22页 第四章 建立基本模型一一类图 属性名 属性类型 类名 Clock hour int Minute. ir 访问模式 Sccond int 属性 SetTime(in NewH: int, in NewM: int, in News: int): void Show Time(: void 方法名称 参数名 参数类型 图4-6类图表示示例 4.3类图中的关系 类不是孤立存在的,因此,类与类之问创建了一种关系。按照关系的性质,把关系分为4种,它们是 泛化关系、关联关系、聚合关系、依赖关系。 关联 泛化 接凵和实现 类关系 依赖 组合 聚合 图4-10类关系 下面分别说明其语义 4.3.1泛化关系 定义:如果类A具有类B得全部属性和全部操作,而且还具有自己特有的一些属性或者操作,则A卬 做B的特殊类,B叫做A的一般类,A与B之间的关系称为继承关系。 继承关系又叫做一般一特姝关系,在UML中把继承关系称为泛化关系。 是从特殊元素到一般元素的分类关系称为泛化关系。模型元素可以是类、用例以及其他。表示法:继 承可衣示为从特殊类到般类的·条实线,在般类的那端有个空心三角。如图4-11所示 超类或父类 子类 泛化 图4-11泛化关系 继承是一种使用户得以在一个类的基础上建立新的类的技术。新的类自动继承旧类的属性和行为特 征,并可具备某些附加的特征或某些限制。新类称作旧类的子类,旧类称作新类的超类 继承的优点:能有效地支持软件构件的重用,使得当需要在系统中增加新的特征时,所需新代码最少 继承机制的强有丿之处还在于它允许稈序设计人员可重用一个未必完全符合要求的类,允许对该类进行修 改而不至于在该类的其它部分引起有害的副作用。继承性是 面向对象程序设计语言不同于其它语言的最主要特点是其它语言所没有的。 第7页共22页 第四章 建立基本模型一一类图 结构 说明 语法 泛 化 泛化 它是较一般类和较具体类之间的分类关系 标识 各个 类之间的共同性。 ⑨指明特化类(子类)的对象可取代泛化类(父类)的对象 是 关系 详解泛化关系如下图所示: 由象类 形状 父类 泛化关系 子类 圆圈 PrinteR ColorPrinter BlacktwhitePrinter t br It 图4-12泛化关系(打印机) 4.32关联关系 1.基本概念 定义:如果·个类的对象与另·个类的对象之间有语义连接关系,那么这两个类之间的语义关系就是 关联。 表示法:把∵元关联表示成连接两个类符号的实线。在关联的实线上,可以给出关联的名称,可以在 关联的端点上给出关联的一些性质。关联可以有方向,如果耍限制关联的访问方向,就要在关联上加上 个表示方向的箭头 如图所示 人 汽车 关联是类之间的一种关系,在类实例化后,这种关系将落实到每一组具有这种关系的对象之间。例如, 类“教师”和类“学生“之间存在着关系“指导毕业论文”这种关系所表达的信息是:类“教师”和类 第8页共22页 第四章 建立基本模型一一类图 “学生”之间存在着关系“指导毕业论文”,这种关系所表达的信息是:类“教师”的对象和类“学生” 的对象之间存在一种联系,其语义是表明某个(些)教师为某个(些)学生指导毕业论文。至于谁给谁指 导毕业论文,要到实现时才能确定,甚至要到系统交付使用后由用户指定。把类之间的这种静态关系称为 关联 把二元关联( binary association)表示成连接两个符号的实线。为了避免与其他图符号交叉,可 以把实线划成折线。表示关联的实现的两个端点可以连接到相同的类或不同的类,但是端点是不同的,因 此要在各个端点的实线上可以给出关联的名称。 如果没有对关联指定方向,从关联的任意一段都可以访问另一端,即通过关联的访问是双向的。如果 要限制关联上的访问方向,就要在关联上加上一个表小方向的箭头。如下图所小: 用户1 *口令 单向关联的表示法示例 如上图所示,给定一个用户就能找到他可能拥有的口令,但反过来给定一个口令就不需要去找响应的 用户。这种导向是单项性,就是通过“冂令”类的那端在关联线上加个箭头来说明的。 匚职员* 公司 2.多重性 如下图所小: 学生*拥有1.*[成绩单 通常在关联的两端写有表小数量约束的数字或符号,把他们称为关联的多重性( multiplicity)。关 联的另一端上的多重性是指,本段的一个对象所可能需要的另一端对象的个数。 上图所示含义:·名学生拥有份或多份成绩单,份成绩单只能被·名学生所拥有 个多重性描述的数量范围可由一系列的正整数区间来指明,各区间由逗号分开。区间的格式为 下限..上限 其中的卜限和上限均可为上整数值,下限也可为0,上限也可为*。如果多重性由单个的“*”构成, 那么它表明的范围为任意的正整数范围,它等价于0.*。 示例:假设左类为A,给定A的个对象a,右侧关联类为B 1表示a恰好与类B的一个对象关联; 0.1表示a最多与类B的一个对象关联 1..*表示a与类B的一个或多个对象关联; 0.*表示a与类B的零个或多个对象关联。 如下图: 关张角色 「教师1任系主任0.1□系 说明:一名教师可以是一个系的系主任,也可以不是任何系的系主任;一个系只有一名教师作为其系 主任。 第9页共22页 第四章 建立基本模型一一类图 3关联角色 在关联的每一个端点上可以有一个名字,用以表示与该关联的端点相连接的类所扮演的角色,把这个 名字称为关联角色名。 通常用名词为关联的角色命名。如上图红色标记的关联角色为“任系主任”。使用关联角色有助于理 解关联。 4关联类 在应用当中,我们发现两个类之间具有多对多的关系,并且有些属性不属于关联两端任何一个类,例 如,在某个应系统中有两个类: person(人)和 institute(协会),显然 person可以属于多个 institute, 而每个 institute肯定会吸纳很多 person。因此它们之间很显然就是一个多对多的关系 如果要记录每个 person在所属的 institute所担任的职务,应该把这个职务属性放在哪个类中呢? 这个属性既不属于 person,也不属于 insti tute。显然,这个属性应该放在关联类中(Role),如图4-12 所 Personn n institute Role Depart place 图4-12关联类R 实际上关联类既是关联又是类,它不仅象关联那样连接两个类,而且可以定义一组属」关联木身的特 注意:只有关联每一端的对象是1:1对应时,才能创建关联类。 结构 说明 语法 ( association)是类之间的种连接。是对象 关联 之间的长期关系。通常是双向的 ①识别类之后,需要识别关联 2)如果类与类之间的联系是单向的,则称为单向关联(导航关联) ③多重性( multiplicity)定义有多少对象参与了某个关系 小例如下: 雇员 部门 公司 示例:“雇员为公司工作” Can Person 0.1+g0( star tEngine ( 图4-13单向关系 关联关系是比较抽象的髙层次关系,为了对关联进一步具体化,我们需要了解关联的属性。关联的属 第10页共22页

...展开详情
试读 22P UML之深入浅出类图
立即下载 低至0.43元/次 身份认证VIP会员低至7折
抢沙发
一个资源只可评论一次,评论内容不能少于5个字
  • GitHub

    绑定GitHub第三方账户获取
  • 签到新秀

    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 技术圈认证(专家版)

    博客专家完成年度认证,即可获得
关注 私信 TA的资源
上传资源赚积分or赚钱
    最新推荐
    UML之深入浅出类图 9积分/C币 立即下载
    1/22
    UML之深入浅出类图第1页
    UML之深入浅出类图第2页
    UML之深入浅出类图第3页
    UML之深入浅出类图第4页
    UML之深入浅出类图第5页

    试读结束, 可继续读2页

    9积分/C币 立即下载 >