类图的绘制

用Rose绘制图书馆管理系统的类图。

一、类图的用途

类图是系统静态视图的一部分,它主要是用来描述软件系统的静态结构。该视图主要支持系统的功能需求,也就是系统要提供给最终用户的服务。当系统分析师以支持软件系统的功能需求为目的设计静态视图时,通常以下述3种方法之一使用类图。

(1)对系统的词汇建模;

(2)对简单协作建模;

(3)对逻辑数据库模式建模。

二、类图建模技术

1. 对简单协作建模

   协同是软件系统的动态交互在软件系统的静态视图上的映射。协同的静态结构是通过类图表达出来的。在对类图的简单协同建模时,不仅要描述类的职责、结构和服务,还要强调类间的关系。

   在协同建模时,要遵循的策略包括:

(1)识别要模拟的机制。一个机制描述了被建模的部分系统的一些功能和行为,这些功能和行为是由类、接口等元素交互作用产生的。

(2)对每种机制,识别参与协作的类、接口和其他协作,并识别它们间的关系。

(3)通过协作的脚本,发现建模的模型是否有被遗漏和语义错误的地方,并更正错误。

(4)得出相应类的对象,并确定具体的属性和操作。

2. 对数据库模式建模

    在为数据库建模时,要遵循的策略包括:

(1)在系统中确定的类,它的状态必须超过其应用系统生命周期。

(2)创建包含这些类的类图,并把它们标记成永久的(persistent)。

(3)展开这些类的结构信息,即详细的描述属性的细节,并注重关联和构造这些类的基数。

(4)观察系统中的公共模式(如循环关联、一对一关联等),它们往往使物理数据库设计复杂化。如果必要,系统分析师需要创建简化逻辑结构的中间抽象。

(5)考虑这些类的行为,扩充那些对于数据存储和数据完整性很重要的操作。

(6)如果可能,用工具来把逻辑设计换成物理设计。

三、实验步骤及记录

1.使用Rose绘制类图的步骤:

  • 创建类图

在浏览器窗口中,右键单击“Logic View”图标,从弹出的菜单中选择New →Class Diagram。此时,在“Logic View”树形结构下多了一个名为“New Diagram”的图标。要改变图标的名称,只要在创建时直接输入即可。还可以右键单击此图标,在弹出的菜单中选择Rename菜单项,可以为类图重命名。


双击类图图标,出现类图的编辑区和编辑工具栏,类图的工作栏及其说明如下图所示。

  • 加入类

单击工具栏中类的图标

,然后在类图编辑区域中某个位置单击鼠标左键,就可以在该类图中绘制一个类。要改变类的名称,只要在创建时直接输入即可。还可以右键单击编辑区域中类的图标,在弹出的菜单中选择Open Specification... 按钮,在出现的对话框里可以对类进行一定的设置,包括设置类的名字、类型等。

  • 增加类的属性

有两种方法可以增加类的属性(即类的成员变量)。

    1. 使用“Class Specification”。按照前面介绍的方法打开“Class Specification”窗口,然后选择“Attributes”选项卡,在窗口空白的地方单击右键,并且单击Insert按钮。
    2. 选择类的图标,单击右键,在弹出的菜单中选择New Attribute按钮。
  • 增加类的方法

类的方法是该类所能进行的操作。增加类的方法与增加类的属性相似,按照前面介绍的方法打开“Class Specification”窗口,然后选择“Operation”选项卡,在窗口空白的地方单击右键,并且单击Insert按钮。还可以选择类的图标,单击右键,在弹出的菜单中选择New Operation按钮。

2.类图绘制

  • CustomerAddress.mdl
    1. 绘制类图;
    2. 用正向工程生成Java代码框架;
    3. 比较代码和模型,分析其含义。

//Customer.java

public class Customer

{

   public Address theAddress;

   public Customer()

   {

   }

}

//Address.java

public class Address

{

   public Address()

   {

   }

}

  • CustomerProduct.mdl
    1. 绘制类图;
    2. 用正向工程生成Java代码框架
    3. 比较代码和模型,分析其含义
    4. 增加关联的多种性,生成Java代码框架,分析其含义。

//Customer.java

public class Customer

{

   public Product theProduct;

   public Customer()

   {

   }

}

//Product.java

public class Product

{

   public Customer theCustomer;

   public Product()

   {

   }

}

//Product.java

public class Product

{

   private Customer theCustomer[];

   public Product()

   {

   }

}

//Company.java

public class Company

{

   private String companyName;

   protected Person employee[];

   public Company()

   {

   }

}

//People.java

public class People

{

   private String name;

   private Integer age;

   public People()

   {

   }

   public void move()

   {

   }

    public void say()

   {

   }

}

//Student.java

public class Student extends People

{

   private String studetNo;

   public Student()

   {

   }

   public void study()

   {

   }

}

  • CompanyPerson.mdl
    1. 绘制类图;
    2. 用正向工程生成Java代码框架
    3. 比较代码和模型,分析其含义。

public class Contract

{

   private Double salary;

   public Contract()

   {

   }

}

public class Person

{

   private String personName;

   protected Company employer;

   public Person()

   {

   }

}

public class Company

{

   private String companyName;

   protected Person employee[];

   public Company()

   {

   }

}

  • GEmployee.mdl
    1. 绘制类图;
    2. 用正向工程生成Java代码框架;
    3. 比较代码和模型,分析其含义。

//GEmployee.java

public class GEmployee

{

   GEmployee manages;

   GEmployee manager;

   public GEmployee()

   {

   }

}

  • .Polygon.mdl
    1. 绘制类图

//Polygon.java

public class Polygon

{

   public Point vertex[];

   private GrahicsBundle bundle;

   public Polygon()

   {

   }

}

//GrahicsBundle.java

public class GrahicsBundle

{

   private int color;

   private int texture;

   private int density;

   public GrahicsBundle()

   {

   }

}

//Point.java

public class Point

{

   public Point()

   {

   }

}

  • People.mdl
    1. 绘制类图;
    2. 用正向工程生成Java代码框架;
    3. 比较代码和模型,分析其含义。

//People.java

public class People

{

   private String name;

   private Integer age;

   public People()

   {

   }

   public void move()

   {

   }

    public void say()

   {

   }

}

/Student.java

public class Student extends People

{

   private String studetNo;

   public Student()

   {

   }

   public void study()

   {

   }

}

//Teacher.java

public class Teacher extends People

{

   private String teacherNo;

    public Teacher()

   {

   }

   public void teach()

   {

   }

}

3. 实例——图书馆管理系统的类图

在图书馆管理系统的实例中,数据类共有7个:Item、Title、Loan、Reservation、Borrower(项目,名称,借出,预定借阅者,5个类之间有一定的关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值