
类

属性和方法:
例如

public abstract class Vehicle
{public abstract int Start();public abstract int Stop();public abstract int Run(float fSpeed);private float fMaxSpeed;
}
接口
一组操作的集合,只有操作的声明而没有实现

抽象类
不能被实例化的类,一般至少包含一个抽象操作

模板类
一种参数化的类,在编译时把模版参数绑定到不同的数据类型,从而产生不同的类

关联关系
描述了类的结构之间的关系。具有方向、名字、角色和多重性等信息。一般的关联关系语义较弱。也有两种语义较强,分别是聚合与组合。


例如

public class Dialog{ private Button btnOK;private Button btnCancel;private TextBox txtInfo;}public class Button{...
}public class TextBox{...
}
聚合关系
特殊关联关系,指明一个聚集(整体)和组成部分之间的关系,箭头指向部分,菱形指向整体。


聚合关系整体与部分的生命周期是可以不一致的,且部分可以脱离整体存在。
// 汽车类
public class Car {private Engine engine = null; // 一辆车存在一个引擎private List tyres = null; // 一辆车存在四个车轮}
// 引擎类
class Engine {...
}
// 轮胎类
class Tyre {...
}
组合关系
语义更强的聚合,部分和整体具有相同的生命周期,箭头指向部分,菱形指向整体。


// 人类
public class Person {private Head head = null; // 一个人有一个大脑private List hands = null; // 一个人有一双手}
// 大脑类
class Head {...
}
// 手类
class Tyre {...
}
泛化关系
在面向对象中一般称为继承关系,存在于父类与子类、父接口与子接口之间



例如

public class SavingsAccount extends Account{...
}
实现关系
对应于类和接口之间的关系


例如

// Shape类
public interface Shape{ public abstract void Draw();}// Circle类
public class Circle implements Shape{public void Draw();private Point ptCenter;private int nRadius;}
依赖关系
描述了一个类的变化对依赖于它的类产生影响的情况。有多种表现形式,例如绑定(bind)、友元(friend)等



例如

class FloatStack{ private int size;public int Push(float elem);public int Pop();public float GetTop();
}
图形编辑器

演出售票系统
在用例驱动的开发过程中,通过分析各个用例及参与者得到类图。分析用例图的过程中需要根据面向对象的原则设计类和关系,根据用例的细节设计类的属性和操作

