动物 | ||
+ 有生命 | ||
+新陈代谢(in 氧气;in水) +繁殖 |
abstract class Animal
{
public:
Life life;
public:
void metabolism(Oxygen oxygen,Water water);
void reproduce();
}
如上图所示这个矩形框代表一个类。类图分三层: 第一层为类的名称,如果是抽象类,就用斜体显示,第二层是类的特性:通常是类的字段和属性,第三层是类的操作,通常是方法和行为。前面的符合,“+”代表是public,"-"代表的是private,"#"代表的是protected.
《interface》 飞翔 | |
+飞() |
如上图所示,它表示一个接口图,与类图的区别是顶端有一个《interface》显示。第一行是接口名称,第二行是接口方法。
动物,鸟,鸭,唐老鸭之间的关系是继承关系 。继承关系的符合用空心三角线加实现来表示。如下图:
而大雁是最能飞的,实现了飞翔接口。实现接口用空心三角加虚线表示。如下图:
class Bird : public Animal{}
class WideGoose : public IFlay{}
而企鹅和气候两个类,企鹅是很特别的鸟,会游泳不会飞,它与气候有很大的关联。可以用关联,关联关系用实现箭头表示,如下图:
class Penguin : public Bird
{
private:
Climate climate;
}
大雁与雁群,大雁是群居动物,每只大雁都是属于一个雁群,一个雁群拥有多只大雁。它们之间满足聚会关系。聚合是一种弱的‘拥有’关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。聚会关系用空心的菱形+实现箭头来表示。如下图所示:
组合关系是一种强的拥有关系,体现了强的部分和整体的关系,部分和整体的生命周期一样,鸟和其翅膀就是组合关系。它们是部分和整体的关系,且生命周期是相同的。组合关系用实心的菱形+实现箭头表示。
组合关系的两端还有两个数字“1” 和数字“2”,这被称为基数。表明一端的类可以有几个实例,很显然一个鸟应该有两个翅膀,如果一个类有无数个实例就用‘n’来表示。
class Bird
{
private:
Wing wing;
public:
Bird()
{
wing = new Wing();// 在bird类中,初始化时,构造函数里面实例化Wing,它们同时存在。
}
}
翅膀类是鸟类的一部分,所以在初始化鸟类时,要将翅膀类作为鸟类的成员属性,在构造里要实例化它,使它与Bird类一起存在。
动物依赖于水和氧气,它们之间是依赖关系。用虚线箭头来表示。如下图: