1. 友元类
例如,以下语句说明类B是类A的友元类:
class A{
…
public:
friend class B;
…
};
经过以上说明后,类B的所有成员函数都是类A的友元函数,能存取类A的私有成员和保护成员。
使用友元类时注意:
(1) 友元关系不能被继承。
(2) 友元关系是单向的,不具有交换性。若类B是类A的友元,类A不一定是类B的友元,要看在类中是否有相应的声明。
(3) 友元关系不具有传递性。若类B是类A的友元,类C是B的友元,类C不一定是类A的友元,同样要看类中是否有相应的申明
表示关系的UML标记有如下四种:
1、聚类 (A聚合了B,B是A的一部分)
2、组合 (A是由B组成的,A包含B菱形的对象)
3、继承 (B攀升自A,A泛化了B)
4、依赖 (A依赖于B,A使用B)

1、is-a关系
图2-2中,Shap类下面的箭头的意思是,指向Shape的那些类派生自Shape类。
2、has-a关系
有两种不同的has-a关系。一个对象可以拥有另一个对象,其中被包含的对象是包含对象的一部分——或者不是。

图2-3中,表示出Airport“拥有”Aircraft。Aircraft并不是Airport的一部分,但仍然可以说Airport拥有aircraft,这种关系成为聚类 。
此外,图中还表示了Aircraft要么是Jet(喷气式飞机),要么是Helicopter(直升飞机)。也就是说,Airport可以拥有Jet或Helicopter,但它是以相同方式对待他们的(当作Aircraft)。Airport类右边是空心的(未填充的)菱形表示聚类关系。
另一种has-a关系是包含,被包含对象是包含对象的一部分,这种关系也称为组合 。
图2-4现实了Car(轿车)拥有Tire(轮胎),后者是它的一部分(也就是说,Car有Tire和其他东西组成),这种has-a关系,称为组合关系(composition),用实心菱形表示。此图上还显示了Car使用了GasStation(加油站)类,这种使用关系用带箭头的虚线表示,也称依赖关系(dependcncy relationship)。
组合和聚类都有“一个对象包含一个或多个对象”的意思,但是,组合意味着“被包含对象是包含对象的一部分”,而聚类意味着被包含对象更像是一个集合。我们可以认为组合是一种非共享的关联,被包含对象的生存周期由包含对象控制。
756

被折叠的 条评论
为什么被折叠?



