类:用矩形框表示(类图分三层)
第一层显示类的名称;(如果是抽象类,就用斜体显示)
第二层是类的特性,通常就是字段和属性;
第三层是类的操作,通常是方法或行为。
(注意前面的符号,“+” 表示 public,“-” 表示 private,“#” 表示 protected)
接口:(接口有两种表示方法)
方法一:矩形表示法(矩形表示法与类图的区别主要是顶端有《interface》显示)
顶端有《interface》
第一行:接口名称
第二行:接口方法
方法二:棒棒糖表示法(小圆圈加一竖线)
圆圈旁为接口名称
接口方法在实现类中出现(这样好像看不出来类里面的哪些方法是继承自接口的)
接下来就可以讲类与类,类与接口之间的关系了:
继承关系:
继承关系用空心三角形 + 实线来表示;(从子类指向父类)
class Bird : Animal { }
类实现接口:
空心三角形 + 虚线(从类指向接口)
class WideGoose : IFly { }
关联关系:(在一个类中引用到了另一个类的对象,换句话说就是,以被引用类的对象作为一个字段或属性 -- 这里是一种“需要知道”的关系,而不像合成关系中有初始化与实例化的限制)
关联关系用实线箭头来表示; (指向字段或属性类)
class Penguin : Bird { private Climate climate; //关联关系体现在:在企鹅 Penguin类中,引用到气候 Climate对象 }
聚合关系:一种弱的“拥有”关系,体现的是 A 对象可以包含 B 对象,但 B 对象不是 A 对象的一部分(如:在“雁群”类中有“大雁”数组对象)
聚合关系用空心的菱形 + 实线箭头来表示;
class WideGooseAggregate { private WideGoose[] arrayWideGoose; //聚合关系体现在:在雁群类中,有大雁“数组对象” }
合成关系:一种强的“拥有”关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。(鸟和其翅膀就是合成关系,因为它们是部分和整体的关系,并且翅膀和鸟的生命周期是相同的 —— 在“鸟”类中,初始化时需要实例化翅膀类)
合成关系用实心的菱形 + 实线箭头来表示;(另外,合成关系的连线两端还有一个数字 “1” 和另外一个数字,这被称为基数,表明这一端的类可以有几个实例。如果一个类可能有无数个实例,就用“n”来表示)(聚合关系也可以有基数)
class Bird { private Wing wing; public Bird() { wing = new Wing(); //除了说字段中包含Wing类对象,初始化时还需要实例化翅膀Wing } }
依赖关系:类的方法中需要以别的类的对象作为参数
依赖关系用虚线箭头来表示。
class Animal { public void MetaBolism(Oxygen yangqi,Water shui) { } }
编程是一门技术,更加是一门艺术,不能只满足于写完代码运行结果正确就完事,时常考虑如何让代码更加简练,更加容易维护,容易扩展和复用,只有这样才可以真正得到提高。