
类

属性和方法:
例如

- 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();
- }
图形编辑器

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

