第6章 UML图

第6章 UML图

本书中的模式图都采用建模语言UML绘制。
基本的UML图由表示类的框图组成。

public class Person{
 private string name;
 private int age;
 public Person(string nm,int ag)
  name=nm;
  age=ag;
 }
 public string makeJob(){
  return "hired";
 }
 public int getAge(){
  return age;
 }
 public void splitNames(){
 }
}
我们用UML表示这个类,如图:
 Person
name string
age int
Person(nm,ag)
makeJob()string
getAge() int
splitNames() void

Person类给出了私有变量和公有方法

框图的顶层包含了类名和包名(如果有的话),中间层列举出类中的变量,底层列举出类的方法。
名字前面的符号表示成员的可视性,其中“+”表示公有的,“-”表示私有的,“#”表示受保护的。
静态方法带有下划线,抽象方法写成斜体或带有"abstract"标签。

在必要时,也可以在UML图中给出全部的类型信息。

UML不要求给出类的所有属性,通常只给出那些讨论中涉及的部分。还可省略方法的一些细节。

6.1 继承

考虑到一个Person类,它具有公有,受保护的及私有的变量和方法,以及一个由它派生出的Employee类。在基类Person中,将方法getJob声明为抽象的,也就是说要用关键字abstract来声明它.

public abstract class Person{
 public abstract string getJob();
} //must override
接下来由它派生出Employee类,并为getJob方法填充代码:
public class Employee:Person{
 public Employee(string nm,int ag);
 base(nm,ag){
 }
 public override string getJob(){
  return "Worker";
 }
}
用一条实线和一个空心箭头表示继承。
对Employee类来说,它是Person类的一个子类.

6.2 接口

若FileExit类实现了Command接口,则类FileExit虚线箭头指向接口Command

6.3 组合

多数时候,类层次结构的UML表示里应当包括对象如何包含在其他对象里的内容.
例如,某个类Company可能包括一个Employee和一个Person实例(可能表示承包人).
public class Company{
 private Employee emp;
 private Person prs;
 public Company(){}
}
类之间的线段表示Company中有0-1个Person实例,0-1个Employee实例,菱形框表示Company类为类的聚集。

如果一个类中有某个类的多个实例,如Employee数组
public class Company{
 private Employee[] emps;
 private Employee emp;
 private Person prs;
 public Company(){}
}
则我们把对象组合表示成一条标有一个"*"或一个"0"的线段。

6.4 图注

要注释UML图很方便,可以将注释放置在UML图中的任何地方。
注释可以放在带折角的方框中,或者就写成文本形式.
注释常和箭头线段放在一起,表示被调用方法的出处.


6.5 用WithClass绘制UML图

本书的所有UML图用MicroGold的WithClass程序绘制.
该程序读入被编译过的类,生成这里给出的UML类图.

6.6 C#项目文件

本书的所有程序都用VS.net编写成项目文件。读者可以加载项目并进行编译.

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值