类图1.docx
- 文档编号:30463956
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:33
- 大小:1.80MB
类图1.docx
《类图1.docx》由会员分享,可在线阅读,更多相关《类图1.docx(33页珍藏版)》请在冰豆网上搜索。
类图1
Rose模型的Logical视图
本章介绍Rose模型Logical视图中存放的一些项目。
上一章曾介绍出。
以在Logical视图中创建Sequence框图和Collaboration框图。
可以加进Logical视图的其他项目包括:
·Classes(类),包括属性和操作
·Packages(包)
·Class框图
·UseCase框图
·Associations(关联)
·Statechart框图与状态/活动模型
我们首先创建类和Class框图,下面几章将介绍增加Class框图的细节,包括增加属性与操作、类与包的关系。
Class框图
Class框图显示系统中的类与包,提供系统组件及其相互关系的静态图形。
在Rose中,Class框图旁边有下列符号:
一个系统通常要创建几个Class框图。
有些显示类及其关系的子集。
有些显示类的子集,包括属性和操作。
还有一些显示类包及包之间的关系。
可以对系统创建多个Class框图。
默认情况下,有一个主Class框图,直接放在Logical视图下面(Main)这个Class框图显示模型中的类包。
每个包中有另一主框图,包含这个包中的所有类。
在Rose中,双击Class框图中的包自动打开其主Class框图。
如果主Class框图不存在,双击包可以创建主Class框图。
说明:
在Rose.ini配置文件中,设置AutoConstructMainDiagrams=Yes,自动创建每个包的packageOverview框图。
Class框图是项目小组的良好设计工具.有助于开发人员在编码之前显示和计划系统结构,保证系统一开始就设计合理。
图6.1是Class框图的一个例子。
创建Class框图
在Rose中。
Class框图在Logical视图中创建。
可以创建多个Class框图以完整描述你的系统。
创建新模型时,Rose自动在Logical视图中创建一个MainClass框图。
通常,这个框图显示模型中的类包。
其他Class框图可以直接在Logical视图中创建,也可以在现有包中创建。
在Rose2002中,可以对每个包设置默认Main框图,一即使框图标题不是Main。
在浏览器中,右单击要作为默认的框图,并选择SetasDefaultDiagram选项。
要访问主Class框图:
1、单击浏览器Logical视图旁边的“+”号将其打平。
2、将出现主Class框图。
注意Rose的Class框图右边有下列图标:
3、双击打开主Class框图。
说明:
首次启动Rose和装入模型时,主Class框图自动打开(即Main)。
要创建新Class框图:
1、右单击浏览器中的Logical视图。
2、选择弹出菜单中的New→Classdiagram。
3、输入新框图名。
要更改名时可右击“NewDiagram”选择“Rename”。
4、双击打开浏览器中的框图。
要打开现有Class框图:
1、找到浏览器Logical视图中的Class框图。
2、双击打开框图。
或
1、选择Browse→ClassDiagram,出现图6.2所示窗口。
2、在Package列表框中,选择要打开的框图所在的包。
3、在ClassDiagrams列表框中,选择要打开的框图。
。
4、按OK。
要将项目加进Class框图,用Class框图工具栏按钮将项目加进Class框图。
或选择
Tools→Create并选择要创建的项目。
下面几节介绍如何将各种项目加进Class框图。
从框图中删除项目有两种方法。
要从当前框图删除项目:
(例如删除一个类)
l、选择框图中的项目。
2、按Delete键。
要从模型中删除项目:
1、选择框图中的项目。
2、选择Edit→DeletefromModel或按Ctrl+D。
或
1、右单击浏览器中的项目。
2、选择弹出菜单中的Delete。
删除Class框图
在模型中增加和删除类时,可能要删除一些已创建的删除Class框图。
Rose中可以用浏览器删除Class框图。
删除Class框图时,框图中的类并不删除,它们仍然在浏览器和其他框图中。
要删除Class框图:
1、右单击浏览器中的删除Class框图。
2、选择弹出菜单中的Delete。
在Class框图中组织项目
框图中加进越来越多类和关系后,会变得很乱很难看。
Rose提供了在框图中自动排列所有类的选项。
将属性和操作加进类中时或调整框图中的尺寸时,类可能变得太大或太小。
Rose还可以自动调整所有类的尺寸以适合其中的文本。
利用这两个选项,可以将图6.3所示框图变成图6.4的样子。
要布置Class框图中的项目,选择Format→LayoutDiagram,Rose自动在框图中对齐类。
要缩放Class框图中的项目选择Format→AutosizeAll,Rose可以自动调整框图中所有类的尺寸以适合其中的类名、属性和操作。
Class框国工具栏
如果工具栏中看不到所有这些按钮,可以右单击工具栏并选择Customize框中,可以增加表6.1所列的每个按钮。
使用类
创建Class框图后,下一步要将类加进模型中。
可以加进几种类:
普通类、参数类、实例类、类实用程序。
增加类
首先增加一个标准类,可以用工具栏、浏览器或菜单增加。
新类可以加进浏览器中,这里它可用于其他框图,但不是一开始就在框图中。
也可以将新类加进框图中。
如果将新类加进框图中,则它自动加进浏览器中。
要将新类加进框图中:
1、选择Class工具栏按钮。
移动框图时,光标变为加号(+)。
2、单击Class框图中任一位置,新类取名为NewClass。
双击出现ClassSpecificationforNewClass选项卡,可在其中添写关于类的详细信息,
3、Rose显示所有现有类清单。
要将现有类加进框图中,双击清单中的现有类,如图6.5。
要创室新类,将NewClass换成新类名。
注意新类自动加进浏览器的视图中。
说明:
如果创建与不同包中的类同名的类,则可以打开规范窗口和输入类名。
出现一个警告,表示多个包中有同名的类。
或
l、选择Tools→Create→Class。
2、单击Class框图中任一位置以放上新类,新类名为NewClass。
3、Rose显示所有现有类清单。
要将现有类加进框图中,双击清单中的现有类。
为了创建新类,将NewClass换成新类名。
注意新类自动加进测浏览器的Logical视图中。
说明:
也可以用Tools→Create菜单创建新的参数化类、实例化类、类实用程序、参数化类实用程序、实例化类实用程序,详见下面几节。
要用Interaction框图加进新类:
l、打开Sequence框图或Collaboration框图。
2、右单击框图中的对象。
3、从弹出菜单选择OpenSpecification。
4、在Class下拉列表框图中选择<New>。
Rose打开新类的规范窗口。
5、在类规范窗口中的Name字段输人类名。
说明:
由于Interaction框图在浏览器UseCase视图中,用这个命令创建的新类在UseCase视图中创建。
要移Logical视图中,在浏览器中拖放这个类。
要将现有类加进Class框图:
将类从浏览器中拖动到打开的Class框图中。
或
1、选择Query→AddClasses,出现AddClasses对话框,如图6.6。
2、在Package下拉列表框中选择要加进框图的类所在的包。
3、将要加的类从Classes列表框移到SelectedClasses列表框。
要增加所有类,按All按钮。
4、按OK按钮。
5、Rose将所选类加进打开的框图中。
要将类加进浏览器中:
1、右单击浏览器中的Logical视图。
要将类加进包中,右单击包名。
2、从弹出菜单选择New→Class。
要加进类实用程序或接口,选择New→ClassUtility或New→Interface。
新类NewClass出现在浏览器窗口中。
3、选择新类并输入新类名。
4、然后要将新类加进Class框图时,从浏览器窗口拖动到打开的框图中。
类规范
类的大多数选项在类规范窗口巾设置,如图6.10。
例如,这个窗口可以设置类的版型、可用性和持续性。
下面几节介绍窗口中每个标签的选项。
如果检查Java、XML或CORBA类的规范,则类规范窗口稍有不同.如图6.11。
这个窗口的所有选项也可以通过标准规范提供。
要打开类规范窗口:
1、右单击Class框图中的类。
2、从弹出菜单选择OpenSpecification。
或
l、右单击浏览器中的类。
2、从弹出菜单选择OpenSpecification。
或
l、选择Class框图中的类。
2、选择Browse→Specification或按Ctrl+B。
命名类
Rose模型中的每个类应有惟一名称。
大多数机构都有一定的类命名规则。
但一般来说,类用单数名词命名。
例如,在我们的航空订票系统中有个Flight类,还有个Airplane类,而不称为flights和Airplanes。
类名通常不包括空格,这样能提高可读性,大多数编程语言不支持类名中的空格。
类名应尽可能短。
尽管ListOfEmployeesThatAreOnProbation能很好地描述类的作用,但会使代码可读性变差,用EmployeeList可能更好些。
使用大写或小写取决于机构的类命名规则。
例如员工表的类可以命名为employeelist、Employeelist、EmployeeList或EMPLOYEELIST。
每个公司通常有一个命名规则,但已确定的方法应当用于所有类。
要命名类:
1、选择浏览器或Class框图中的类。
2、输入类名。
或
1、打开类规范窗曰。
2、在Name字段中输入类名。
要将文档加进类中:
1、选择浏览器中的类。
2、在文档窗口输入类文档。
(主要是对类的一些说明)
或
1、打开类规范窗口。
2、在规范窗口的Documentation区输入信息。
设置类可见性
Visibility选项确定在包外能否访问这个类。
通过规范窗口中的ExportControl字段控制。
有三个类可见性选项:
Public系统中所有其他类都能访问这个类。
Protected或Implementation这个类可以在嵌套类、朋友或同一个类中访问。
Package或implementation这个类只能由同一包中的其他类访问。
要设置类可见性:
1、右单击浏览器或Class框图中的类。
2、从弹出菜单中选择OpenSpecification。
3、将输出控制设置为Public、Protected、Private或Implementation。
如果类的可见性为Protected、private或package,则其他包中的类无法访问。
下列情形发生访问错误:
·不同包中的两个类之间有关系,但包本身没有依赖性关系。
·不同包中的两个类之间有关系,··············
Rose中,打开Class框图和选择Report→ShowAccessViolations可以检查这两个问题。
设置类基数
Multiplicity字段可以设置类的实例数。
而控制类的基数通常为1。
运行应用程序时,可能只要一个安全管理器。
在Rose中,下拉列表框提供下列基数选项:
Multiplicity(基数)含义
n(默认)多
0..00
0..10或1
0..n0或多
1..11
1..nl或多
也可以用下列格式输入基数:
格式含义
<number><number>
<number1>..<number2><number1>到<number2>
<number1>..n<number>或多
<number1>,<number2><number>或<number2>
<number>,<number2>..<numberl>或<number2>到<number3>
<number3>
<number>..<number2>,<number>到<number2>或<number3>到
<number3>..<number4><number4>
要设置类的基数:
1、打开类规范窗口。
2、选择Detail标签。
3、在Multiplicity下拉列表框中,选择基数,或输入下拉列表框中没有的基数选项。
浏览类属性
要浏览类属性:
l、打开类规范窗口。
2、选择Attributes标签,其中列出类的属性,包括属性可见性、版型、名称、数据类型和默认值。
浏览类操作
要浏览类操作:
l、打开类规范窗口。
2、选择Operations标签,其中列出类的操作,包括操作可见性、版型、签名和返回类型。
浏览类关系
要浏览类关系:
1、打开类规范窗口。
2、选择Relations标签,其中列出这个类参与的所有关系。
使用嵌套类
在Rose中,一个类可以依套另一个类,嵌套类中又可以取套类,深度随意。
要创建嵌套类:
l、打开父类的类规范窗口。
2、选择Nested标签。
3、右单击Nested标签中任一空白处。
4、从弹出菜单中选择Insert。
5、输入嵌套类名称。
或
1、创建与命名父类。
2、生成与命名嵌套类的类。
3、在浏览器中,将嵌套类拖放到父类。
(直接拖即可)
要在Class框图中显示嵌套类:
l、打开Class框图。
2、选择Query→AddClasses。
3、将嵌套类从Classes列表框移到SelectedClasses列表框。
嵌套类的显示格式为parentClass:
:
NestedClass。
4、单击OK,嵌套类出现在框图中,父类名放在括号内。
要从模型中删除嵌套类:
l、打开父类的类规范窗口。
2、选择Nested标签。
3、右单击要删除的嵌套类名。
4、从弹出菜单选择Delete,即可从所有Classes框图中删除嵌套类。
或
l、右单击浏览器中的嵌套类。
2、选择Delete。
浏览包含类的Interaction框图
要改变类时,最好知道这个类在系统中的位置。
两种Interaction框图:
Sequence框图和Collaboration框图可以知道每个类的位置和用法。
可以用Report菜单显示哪个Sequence框图和Collaboration框图包含特定类的对象。
要浏览包含某个类的所有Sequence框图和Collaboration框图:
1、选择Class框图中的类。
2、选择Report→ShowInstances。
3、Rose显示包含该类对象的所有Sequence框图和Collaboration框图,如图6.12。
要打开一个框图,在清单中双击这个框图或单击Browse按钮。
增加属性
标识属性之后,下一步要将其加进Rose模型中。
每个属性有三条主要信息:
属性名、数据类型和初始值。
生成模型代码前,必须提供每个属性的属性名和数据类型,初始值是可选的。
增加属性的方法有三种,可以直接将属性加进Class框图,用浏览器增加属性或用类规范窗口增加属性。
增加属性后,可以将文档加进其中。
通常,属性文档包括属性的简短说明或定义。
属性文档显示为模型所产生的代码中的说明语句。
只要开始建档属性就开始了代码建档。
要将属性加进类中:
1、右单击Class框图中的类。
2.选择New→Attribute。
(即可直接输入以下信息)
3.输人属性名,用Name:
DataType=InitialVaule格式。
例如:
Address:
String
IDNumber:
Integer=0
要生成代码,必须提供每个属性的属性名和数据类型,初始值是可选的。
4、要增加更多属性,按Enter并直接在Class框图中输入新属性。
或
1、右单击浏览器中的类。
2、选择New→Attribute。
3、浏览器的类中出现新属性默认为name。
输入新属性名。
数据类型与默认值可以不在
浏览器中输入,而是到Class框图中再输入,见稍后介绍。
或
1、打开属性类的类模范窗口。
2、选择Attributes标签。
如果已经有一些属性,则会在这里列出。
3、右单击属性区任一位置,如图7.1。
4、从弹出菜单选择Insert。
5、输入新属性名。
6、在相应列输入可见性、版型、数据类型和初始值。
下面几节将介绍这些细节。
要将文档加进属性中:
1、选择浏览器中的属性。
2、在文档窗口中输人属性文档。
或
1、选择Class框图中的属性。
3、在文档窗口中输人属性文档。
(对属性的一些细节说明)
或
l、右单击浏览器中的属性。
2、从弹出菜单中选择OpenSpecification。
。
3、在类属性规范窗口中的Documentation区输入属性文档。
或
l、打开属性类的类规范窗口。
2、选择Attributes标签。
3、选择属性。
4、在文档窗口中输人属性文档。
删除属性
有时要删除前面创建的属性例如系统需求改变时可能要删除某个属性。
Rose中删除属性的最简单方法是通过浏览器,但也可以用Class框图删除。
从Class框图删除属性时,Rose自动从模型中和其他Class框图将其删除。
要删除类属性:
1、右单击浏览器中的某个属性。
2、从弹出菜单选择Delete。
或
l、选择Class框图中的某个属性。
2、用退格键删除框图中的属性名、数据类型和初始值。
3、单击框图中任一位置。
4、Rose先确认删除,再删除属性。
或
l、打开属性类的类规范窗口。
2、选择Attributes标签。
3、右单击要删的属性。
4、从弹出菜单选择Delete。
(会弹出确认窗口)
5、Rose先确认删除,再删除属性。
设置属性规范
和其他Rose模型元素一样,可以在属性中增加许多细节规范,如属性可见性、版型、数据类型和初始值。
下面几节将介绍每个规范。
所有规范均在图7.2所示的属性规范窗口中可以浏览和改变。
要打开属性的规范:
1、右单击浏览器中的属性。
2、从弹出菜单中选择OpenSpecification。
或
1、打开属性类的类规范窗口。
2、选择Attributes标签。
3、双击相应属性。
说明:
在下面几节中,Java、COM或CORBA类打开不同的规范窗口。
要打开标准规范窗口,右单击浏览器中的属性并从弹出菜单中选择OpenStandardSpecification。
设置属性数据类型
属性要指定的信息之一是数据类型。
数据类型是特定语言的类型,如sing、integer、long或Boolean。
要产生代码,首先要设置属性数据类型。
设置属性数据类型时,可以用内置数据类型(string、integer、long等等),也可以用Rose模型中定义的类名。
要在下拉列表框中显示定义的类,选择ShowClasses复选框。
要设置属性数据类型:
1、右单击浏览器中的属性。
2、从弹出菜单中选择OpenSpecification。
Rose打开类属性规范窗口。
3、从Type下拉列表框中选择数据类型或输人新的数据类型。
或
1、选择Class框图中的属性。
2、在属性名后面输入冒号和数据类型。
例如,要把属性Address设置为字符串,输入
Address:
String。
设置属性版型
和角色、使用案例与类一样,属性也有版型。
属性版型可以将属性进行分类。
例如,有些属性映射数据库中的字段,有些则不映射。
为此可以定义两种版型。
在Rose中,不需要对属性指定版型。
没有属性版型也能生成代码。
但版型可以提高模型的可读性和可理解性。
要设置属性版型:
1、右单击浏览器中的属性。
2、从弹出菜单选择OpenSpecification。
Rose打开类属性规范窗口。
3、从下拉列表框图选择版型或输人新版型。
或
l、选择浏览器中的属性。
2、单击属性名进行编辑。
名称前面出现<<>>:
3、在<<>>中输人版型。
设置属性初始值
许多属性有相关的默认值。
例如,Order类保存公司购买订单的信息和行为。
Order类的属性TaxRate表示购买时的销售税率。
在你所在的城市税率为7.5%,因此你的大多数订单用税率7.5%。
可以将0.075指定为属性TaxRate的默认值。
和属性版型一样,初始值也不是生成代码所必须的。
但如果设置属性初始值,则Rose产生初始化属性的代码。
要设置属性初始值:
1、布单击浏览器中的属性。
2、从弹出菜单中选择OpenSpecification。
Rose打开类属性规范窗口。
3、在Initial字段中,设置属性默认值。
或
l、选择Class框图中的属性。
2、在属性数据类型后面,输人等于号和默认值。
默认情况下,如果整数属性EmployeeID要设置属性初始值为0,则Class框图如下:
设置属性可见性
面向对象编程的核心概念之一是包装。
每个类用属性和操作包装一些信息和行为。
这种方法的一个好处就是能够生成小块自我包含代码。
例如,Employee类具有与员工有关的所有信息和行为。
可以把类看成如下:
专用属性包含在类中,其他类看不到。
由于属性包含在类中,就要定义哪个类能浏览和改变这个属性,称为属性可见性。
属性可见性选项有四个,下面一一举例。
假设有个Employee类带Address属性和Company类。
Public表示这个属性可以在所有其他类中访问。
任何其他类都可以浏览或修改这个属性的值。
这里,Company类可以浏览或修改Employee类的Address属性值,公共属性的UML图注为加号。
Private表示这个属性不能在其他类中访问。
Employee类知道Address属性的值,并可修改这个值,但Company类无法浏览或修改Address属性。
如果Company类要浏览或修改Address属性,则要请求Employee类浏览或修改属性。
这边常通过公共操作进行。
本章操作部分将介绍这个问题。
专用属性的UML图注为减号。
Protected类及其后代可以访问该属性。
本例中,假设有两种员工,计时工和固定工资员工。
HourlyEmp和SalariedEmp继承Employee类。
如果Address属性为保护可见性,则可以由Employee、HourlyEm和SalalledEmp类浏览和修改,但Company类不能浏览和修改。
保护属性的UML图注为英镑号。
Package或implementation表示属性是公共属性,但只对同一包中的类公开。
本例中,假设Employee类的Address属性为包可见性。
则只有Compan
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 类图