IBM Rational Rose读书笔记 (3)

来源:互联网 发布:多益网络忘记密码 编辑:程序博客网 时间:2024/06/04 20:07
 
第六章 类和包
介绍类本身及如何组成包。
寻找类的方法
两种方法:
1.       从用例的事件流发现类。事件流中的名次分为角色、类、类属性和其它四类。
2.       从Interaction框图发现类。通过框图中对象的共性寻找类。框图中的每个对象都有映射到相应的类。
对应这两种方法,存在先建立类框图和先建立Interaction框图两中建模路径。
1.       先建Interaction框图:优点是可以一步一步认真检查完成事件流所需要的对象,确保使用每个类。Sequence框图是很好的组织方法,可以根据需要创建与删除对象,不限于已经定义的类清单。缺点是不同小组使用不同方法设计框图,导致类责任的重叠。
2.       先建Class框图。优点是在生成Sequence框图之前确定体系结构层和通讯模式。后面生成Sequence框图,只要符合Class框图,就不会破坏体系结构。但限制太严。
个人认为,个体开发可以使用方法1,因为便于理清思路,形成所需要的类。而且从事件流到Sequence框图过渡会比较自然。
类的版型
版型机制可以将类进行分类。分析过程中,可以根据功能将类进行分类。UML中有三种基本类版型用于分析:边界、实体和控制。
边界类
边界类位于系统和外界的交界处、包括所有窗体、报表、打印机、扫描仪等硬件的接口以及与其它系统的接口。
要寻找和定义边界类,可以检查Use Case框图。每个角色/用例交互至少要有一个边界类。边界类使角色能与系统交互。
并非每个角色/用例对都要创建唯一边界类,可以共用。
实体类
实体类保存要放进永久存储体的信息。可以查看事件流中的名词,其中许多都是系统中的实体类。另一种方法是检查数据库结构。如果已经完成数据库设计,则可以看表名。每个表要创建一个实体类。表中永久保存记录信息,而实体类在系统运行时在内存中保存信息。
控制类
      负责协调其它类的工作,每个用例通常有一个控制类,控制用例中的事件顺序。
      控制类本身不完成任何功能,其它类并不向控制类发送许多消息,而是由控制类发出许多消息。控制类只是向其它类委托责任。控制类有权知道和执行机构的业务规则,可以运行其他流和知道在发生错误时如何处理。为此,控制类也称为管理者类。
      控制类可以被多个用例共用。
类的类型
除了一般类外,还有
1.       参数化类
2.       实例化类
3.       类实用程序
4.       参数化类实用程序
5.       实例化类实用程序
6.       接口
类的其它特性
可见性
1.       Public
2.       Protected
3.       Private

4.       Package或Implementation

类基数

      表示类的实例数

类的存储需求

      表示每个类对象要求的相对或绝对内存量。

类持续性
1.       Persistent:类对象存放在数据库或别的永久存储体横纵

2.       Transient:类对象不存放在永久存储体中

类并发性
1.       Sequential:只有一个控制线程时,类会正常工作。不保证多线程仍然正常工作。
2.       Guarded:存在多个线程时,类正常工作。但不同线程中的类应该相互协作,保证不会相互干扰。
3.       Active:类有自己的控制线程
4.       Synchronous:存在多个线程,类正常工作不需要与其它类协作,因为类本身能处理互斥情形。
抽象类属性

使用包将功能相近的类集合在一起,可以便于管理。

使用Rose建立和管理类/包的技巧
1.       Format->Layout Diagram可以对齐框图中的项。Format->Autosize All可以调整框图中项的大小。
2.       浏览包含类的Interaction框图的方法:Report->Show Instances
第七章 属性与操作
寻找属性的方法
属性的来源包括事件流、需求文档、用例文档、数据库结构。
属性的规范
数据类型

      可以是内置数据类型,也可以是用Rose模型中定义的类名。

属性版型
属性初始值
属性可见性
1.       Public:所有其它类可以访问
2.       Private:其它类无法访问
3.       Protected:类及其子孙类可以访问
4.       Package或implementation:表示对该包内的类公开。
属性控制

描述属性如何存放在类中

1.       By value:属性存放在类中
2.       By Reference:属性放在类外,属性的引用或指针存放在类中
3.       Unspecified:未指定。
静态属性
派生属性
      派生属性是从一个或几个属性创建出来的属性。UML中,派生属性前加/。
寻找操作的方法
      寻找操作很简单,创建SequenceCollaboration框图时,就完成了寻找操作的主要工作。要考虑四种不同类型的操作:实现者、管理者、访问和帮助器。
1.       实现者操作:每个操作来自Interaction框图中的消息,而这些消息来自事件流的细节,事件流来自用例,用例来自需求。
2.       管理者操作。管理者操作管理对象的创建和构造。
3.       访问操作。用来获得属性和修改属性。
4.       帮助器操作。类完成任务所需的操作,其它类不需要知道这个操作。
操作的规范
操作版型
1.       Implementor:实现某种业务逻辑的操作
2.       Manager:构造器、析构器和内存管理操作
3.       Access:让其它类浏览或编辑属性的操作
4.       Helper:一个类的专用或保护操作,其它类无法访问
它们都不是Rose自动提供的,需要自己设置。
操作可见性
1.       Public
2.       Private
3.       Protected
4.       Package或implementation
变元默认值
操作协议
操作协议描述客户可以对对象进行操作,以及操作执行的顺序。
操作限定
      指定操作的语言特定限定。
操作异常
      操作Exceptions字段可以列出操作可抛出的异常
操作长度
      Size字段指定操作运行时所需的内存量
操作时间
      执行该操作所需的大概时间量
操作并发性
      指定多控制线程中的操作行为。有三个选项:
1.       Sequential:只有一个控制线程时,操作正常工作。另一个操作运行前,这个操作必须完成。
2.       Guarded:存在多个控制操作,但不同线程中的类应相互协作,保证不出现干扰,操作才能正常运行。
3.       Synchronous:存在多个控制线程时,操作正常运行。调用时,操作在一个线程中运行到完成,但其它操作可以在其它线程中同时运行。类正常工作,不需要与其它类相互协作,因为类本身处理互斥情形。
操作前提条件

      运行操作之前必须符合的条件。

操作事后条件
      运行操作之后要符合的条件。
操作词法     

      指定操作的工作。可以使用伪代码,或文字说明。或一个Interaction框图。

使用Rose处理属性和操作的方法
1.       默认属性可见性图标是Rose图标而不是UML图标。修改办法是:Tools->Options->取消Visibility as Icons。
2.       将操作映射为Collaboration图中消息的方法:先决条件是消息指向的对象必须已经映射到某个类。在消息操作规范中指定name为目标类的一个操作或者右键消息中选择目标类的一个操作。新建消息对应的操作可以在类中新建,也可以右键消息,然后选择<new operation>。
3.       显示/隐藏属性的方法:
1)       显示所有属性:右键类弹出菜单,Options->Show All Attributes
2)       显示类的所选属性:右键类弹出菜单Options->Select Compartment Item,Edit Compartment窗口的所要属性。
3)       抑止一个类的属性:右键类弹出菜单,Options->Suppress Attributes。抑止与隐藏的区别是前者连分隔线也不显示。
4)       改变显示属性的默认选项:Tools->Options->Diagrams->用Suppress Attributes和Show All Attributes复选框设置默认选项。
5)       对操作的显示/隐藏方法类似。
4.       类的右键菜单中Options下面还可以设置可见性、版型的显示/隐藏。
 
原创粉丝点击