UML类图用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解,它是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据。所以建议大家可以学习一波UML类图,对于自己,可以理清楚自己设计的系统中类与类之间关系。对于其他人,只需要观看你的UML类图就能理解你的设计思路。
UML类图可见性符号的表示
可见性:
公有(public) “+”
受保护(protected) “#”
私有(private) “-”
类与类之间的关系主要有六中:继承、实现、组合、聚合、关联和依赖,这六种关系的箭头表示都不一样
继承关系
继承:继承指的是建立一个新的派生类,从一个或多个先前定义的类中继承数据和函数,可以重新定义或加进新数据和函数,从而建立了类的层次或等级。
实现关系
接口实现:实现关系(Implementation),主要用来规定接口和实现类的关系。
组合关系
组合关系(Composition):整体与部分的关系,但是整体与部分不可以分开。
组合关系表示类之间整体与部分的关系,整体和部分有一致的生存期。一旦整体对象不存在,部分对象也将不存在,是同生共死的关系。
例如:人由头部和身体组成,两者不可分割,共同存在。
head = $head;
}
public function setBody(Body $body)
{
$this->body = $body;
}
public function show()
{
$this->head->eye();
echo " ";
$this->body->tummy();
}
}
聚合关系
聚合关系(Aggregation):整体和部分的关系,整体与部分可以分开。
聚合关系也表示类之间整体与部分的关系,成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。
例如:汽车 = 发动机+轮子。当汽车报废时,发动机和轮子不一定会报废,可能会进入二手市场。
聚合和组合的关系有点微妙~
engine = $engine;
}
public function setWheel(Wheel $wheel)
{
$this->wheel = $wheel;
}
public function show()
{
$this->engine->getEngine();
echo " ";
$this->wheel->getWheel();
}
}
关联关系
关联(Association)关系是类与类之间最常用的一种关系,它是一种结构化关系,用于表示一类对象与另一类对象之间有联系,如汽车和轮胎、师傅和徒弟、班级和学生等等。
(1)双向关联
默认情况下,关联是双向的。例如:顾客(Customer)购买商品(Product)并拥有商品,反之,卖出的商品总有某个顾客与之相关联。因此,Customer类和Product类之间具有双向关联关系。
(2)单向关联
类的关联关系也可以是单向的,单向关联用带箭头的实线表示。例如:顾客(Customer)拥有地址(Address),则Customer类与Address类具有单向关联关系。
(3)自关联
在系统中可能会存在一些类的属性对象类型为该类本身,这种特殊的关联关系称为自关联。例如:单例模式。
(4)多重性关联
多重性关联关系又称为重数性(Multiplicity)关联关系,表示两个关联对象在数量上的对应关系。在UML中,对象之间的多重性可以直接在关联直线上用一个数字或一个数字范围表示。
对象之间可以存在多种多重性关联关系,常见的多重性表示方式如表1所示:
表示方法
多重性说明
1..1
表示另一个类的一个对象只与该类的一个对象有关系
0..*
表示另一个类的一个对象与该类的零个或多个对象有关系
1..*
表示另一个类的一个对象与该类的一个或多个对象有关系
0..1
表示另一个类的一个对象没有或只与该类的一个对象有关系
m..n
表示另一个类的一个对象与该类最少m,最多n个对象有关系 (m≤n)
例如:一个界面(Form)可以拥有零个或多个按钮(Button),但是一个按钮只能属于一个界面,因此,一个Form类的对象可以与零个或多个Button类的对象相关联,但一个Button类的对象只能与一个Form类的对象关联。
依赖关系
依赖关系(Dependence):假设A类的变化引起了B类的变化,则说名B类依赖于A类。
大多数情况下,依赖关系体现在某个类的方法使用另一个类的对象作为参数。依赖关系是一种“使用”关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系。
例如:例如:驾驶员开车,在Driver类的drive()方法中将Car类型的对象car作为一个参数传递,以便在drive()方法中能够调用car的move()方法,且驾驶员的drive()方法依赖车的move()方法,因此类Driver依赖类Car。
move();
}
}
class Car
{
public function move()
{
}
}
以上所述就是小编给大家介绍的《UML类图看这篇文章就够了》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 我们 的支持!