UML之C++类间关系总结

UML之C++类间关系总结

记----类作为面向对象编程的绝对核心,理解好类之间的关系对程序设计具有非常重要的意义。通过查阅网上相关资料,笔者将利用VISIO2013作为UML建模工具,对类之间进行阐述整理。

类的关系有非常多种,但是总体可以划分为横向关系和纵向关系,纵向关系主要是指继承关系,横向关系有依赖关系、关联关系、聚合关系以及组合关系,他们的强弱关系为:依赖关系<关联关系<聚合关系<组合关系。下面对各个关系进行详细的阐述。

 

横向关系

1、依赖关系

UML关系图


解释:人要生存就必须进行呼吸,而呼吸就需要新鲜的空气,所有说空气是作为人生产的一种工具,而人不拥有这种工具

代码:

#include<Air.h>
class Human
{
       void breathe()
       {
              Air fleshAir = new Air();
              fleshAir.releaseAir();            
        }
}

关联关系类似朋友的关系,可以分为双向关联,单向关联以及自身关联。

a.    双向关联


解释:应聘者和职位之间的关系就是双向关联的关系,双方都知道对方的存在,并且可以调用对方的公共属性及方法。双向关联在代码的表现为双方都拥有对方的一个指针,引用或者是值。

代码如下:

class Employee
{
public:
    Position* position;
};
 
class Position
{
public:
    Employee* employee;
};

b.    单向关联

单向关联类似明星和粉丝的关系,粉丝肯定知道明星,但是明星就不认识粉丝。表现出了一种引用的关系。

解释,订单中含有商品的所有信息,而商品中对订单信息完全不清楚

代码:

class Order
{
public:
    Product* product;
};
 
class Product
{
public:
};

c.    自身关联

对自身的引用,

3.聚合关系

当类关系中涉及到整体和部分的时候,就可以使用聚合或者组合,当对象A被加入到对象B中,成为对象B的组成部分时,对象B和对象A之间为聚合关系。

解释:公司的老板和其员工是一种聚合的关系,当老板不存在的时候,员工可以独立存在。

代码:

class Employer
{
public:
    Preson preson;
};
 
class Preson
{
public:
};
4、组合关系

组合是一种非常强的关系,其UML类图表示如下:

解释:公司和部门就是一种组合关系,但公司消失的时候,部门也会随之消失。

代码:同聚合!

纵向关系

5、继承关系

如果两个类存在泛化的关系时就使用,例如父和子,动物和老虎,植物和花等。

解释:鱼也是一种动物,其会继承动物的属性,

代码:

#include"animal.h"
class Fish :public Animal
{
};

最后,总结下面向对象编程的常用术语:

编号

术语

原文

1

Class

2

对象

Object

3

实例

Instance

4

属性

attribute

5

操作(成员函数)

operation

6

关系

relationship

7

UML

Unified Modeling Language

8

类图

Class diagram

 

感悟:发现很多概念很容易理解,但是真要用文字表达出来还是有点困难,上述总结可以有些不足和错误。另外,总结也能不断思考问题,一天结束,回去洗洗睡了。

 

文中参考的地址:

http://www.360doc.com/content/11/0614/14/935385_126863863.shtml

http://pleasetojava.iteye.com/blog/1062520

http://blog.csdn.net/qmroom/article/details/3083928

 

 

2015年12月11日星期五

重庆大学

行者无疆

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值