友元

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)。

组合和聚类都有“一个对象包含一个或多个对象”的意思,但是,组合意味着“被包含对象是包含对象的一部分”,而聚类意味着被包含对象更像是一个集合。我们可以认为组合是一种非共享的关联,被包含对象的生存周期由包含对象控制。


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值