第1章 类.图.docVIP

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第1章 类图1.1 概述 类图(class diagram)用来表示系统内部的静态结构(static structure)。具体来说,开发人员可以通过类图的设计,将数以万行的程序代码分门别类,以构成系统内部的静态结构。 过去,开发人员在写程序时,需要分模块(module)、定功能(function)、定义变量,这些动作在面向对象(Object-Oriented)技术中,一样都没少。 现在,观念上有两个显著的改变: 1. 新术语。模块变成类(class)、功能变成操作(operation)、变量变成属性(attribute)。新术语并不是旧酒换新瓶,而是在分类、定操作、定义属性基础之上,有新的划分方法。 2. 新的划分方法。以前的做法是从功能的角度,把大功能、大流程分成数个模块;再把功能模块分成小功能、小流程,定出功能;然后在编写功能时,定义所需的变量。新的分法是,拿用户的领域术语当类,然后确定相关的操作和属性,最后将其封装在同一个类中。 所以,再回过头来看,系统的内部结构是由一个个类所组成的,类内部有操作和属性,类和类之间有静态关系(static relationship)。由于类里头同时包含了静态数据(属性),数据之间会有关联的需要,这种以数据为主的关联,即为“静态关系”。也就是说,类图不仅规范了程序代码,其实还同时规范了数据库的数据结构。 在UML中,类图的元素相当繁杂,分析师当然不需要全学,所以在接下来的1.2节中,我们仅谈论分析师必学的元素。 1.2 分析师必学元素 1.2.1 类 想象一下,将系统数以万行的程序代码划分为一个个的区块,每一个区块即为一个类。每一个类中,包含有操作和属性;操作内部放置与逻辑运算相关的程序代码,属性则是所需的局部变量。 分析师不能自己随意定义类,必须寻找领域术语作为类名称。比如,一谈到订房,我们就会想到打算预订什么样的房间,这里会找到两个领域概念: 1. 房间。真正住进去,特定房号的房间。 2. 房型。顾客在订房时,通常是预订某个房型的房间。 类的图标为矩形,通常矩形内部会分为三格:顶格放置类名称、中格放置属性、底格放置操作,如图1-1所示。说明如下: ? 属性。属性是数据项,所以需要指定它的类型(type),属性名称后接冒号隔开类型。如果,属性有默认值的话,也可以在类型后面加上等号,然后标出默认值。 操作。操作名称后面以小括号括起输入参数,然后可以在小括号后接冒号,标出返回参数的类型。 可见性。特别注意到,属性名称前面有个加号、操作名称前面也有个加号,这个符号称为“可见性(visibility)”。由于属性和操作封装在类中,所以需要使用可见性来标示它们的访问等级。UML 2设置了4种可见性,分析师只要掌握“私有(private)”和“公有(public)”两种就可以了。 私有。属性的可见性通常会设成私有等级,除了所属类内部的操作可以直接访问之外,其他类内部的操作不可以访问私有等级的属性。 公有。操作的可见性通常设为公有等级,不仅所属类内部的其他操作可以调用(call),其他类内部的操作也可以调用公有等级的操作。 1.2.2 关联 很多分析师都有设计“实体关系图(Entity-Relationship Diagram,ERD)”的经验,我们会在表(table)之间建立关系,这样才能关联不同表内的数据。 比较一下,表跟类最大的区别在于,表只包含数据,但是类同时包含了数据(属性)和操作。也就是说,类其实具备表的静态结构特性,但是又多了一份动态行为特性。至于原先在表之前的关系(relationship),对应到类之间,则称为“关联(association)”。 分析师可以借用以前实体关系图的概念,来认识类图,简单对照如表1-1所示。虽然,记录的概念可以对应到对象,但只能对应到半个对象,因为一个对象同时含有属性值和操作,但是一条记录只含有字段值。 表1-1  实体关系图与类图 ? 表之间的关系可分为一对一关系、一对多关系、多对多关系,用来表示一条记录能够关联到另一个表中的几条记录。类之间的关联中,同样也这样的概念,叫做“多重性(multiplicity)”,用来表示一个对象能够结合到另一个类中的几个对象。 关联的图标是实线,两个结合端点可以标示多重性。多重性的下限为0,上限是无限大(*),下限标示在前面,上限标示在后面,两个数字之间使用两个点(..)隔开。如图1-2中的例子,表示一个房型可能连接一到多个房间,而一个房间则一定被限定连接到某一个房型。 ? 在多对多的处理上,也参照关系型数据库的经验,由于处理起来太复杂,所以通常会将多对多拆解成两个一对多的结构。比方说,一次订房可能预订多种房型,而每一种房型也可能跟多个不同的订房事务有关,两者之间形成多对多的关联,如图1-3所示。 ?

文档评论(0)

xiaofei2001128 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档