您的位置:首页 > 编程语言 > C语言/C++

UML之C++类间关系总结

2015-12-11 22:35 375 查看

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日星期五

重庆大学

行者无疆
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  uml visio c++ 类关系 关联