c++类之间的关系
我们知道,表达方式分为很多种,对于同一种事物,比如爱情,画家用图画和色彩表达爱恋;音乐家用音符和节奏表达喜爱之情,作家用文字表现爱慕。
而程序员怎么办?
程序员构建类,用类来表达单身之苦。因此,类就是描述特定事物的计算机语言表达方式。
类通常由成员变量和成员函数组成。成员变量用来描述个人的性别、身高、姓名、学历等信息。成员函数用来描述个人动作信息,如待人接物的反应,头脑的灵活运用,语言风趣幽默等动作。有了这两个方面的描述,一个单身人的各方面的条件就差不多描述丰富了,就等待姑娘们是否青睐了。
姑娘们是否青睐,就涉及到了两者之间的关系了。用计算机表达,就是类与类之间的关系。
总体上,类与类之间的关系可以分为两种:纵向关系和横向关系。
一、纵向关系
就是继承关系或实现关系,此处有时间再讲。
二、横向关系
关系强弱:依赖关系<<平等关系<<聚合关系<<组合关系
依赖关系: A uses B。A的功能依赖与B,但A并不持有B。
平等关系:A has B。 A和B平等,就像人和人之间一样,可以拥有对方,但不可占有对方。
聚合关系:A owns B. A拥有B,B属于A,但B还可以被其它人分享。如公司和员工,人和家。
组合关系:B is a part of A。A 占有B,且A消亡B必定消亡。如人和心脏,地球和生命。
计算机语言表达这几种关系的方式:将B对象作为A的成员变量或者将B作为参数传入A的成员函数中。
总结:类与类之间发生关系不过以下几种方式:
1.类A对象作为类B的成员变量。
2.类A对象作为类B的成员函数的参数。
类要有用,必须要向外暴露接口。这个接口要么能够返回数据,要么能够处理一些工作,否则如果类完全封闭,不暴露给别人能够使用的接口,那跟废物有什么区别呢?
暴露接口就是给别人利用自己的机会,也是实现自己价值的必要手段。
类是一种设计蓝图,而对象才使蓝图成活。繁复的大千世界和事物的关系,可以用图画描述,可以用语言描述,更可以用类来描述。
脑海里一定要有用类来描述各种事物,各种事物之间复杂关系的能力的模型,这是学好计算机语言的第一步。
c++类之间的关系的更多相关文章
- Java 中类与类之间的关系
在java中类和类之间的关系基本上有依赖.关联.聚合.组合等 一.继承关系 继承指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力.在J ...
- 从零开始学C++之RTTI、dynamic_cast、typeid、类与类之间的关系uml
一.RTTI Run-time type information (RTTI) is a mechanism that allows the type of an object to be deter ...
- oc之封装与类之间的关系
1. 面向对象的特征-封装? 封装: 现实生活中的封装: 将很多的小东西 塞在1个大口袋里面. 好处: a. 对外部屏蔽. b. 方便管理. 代码的封装: 函数/方法 就是1种封装的体现: 将一段代码 ...
- java 类与类之间的关系 及uml图
类与接口之间的关系 : 继承 类与类之间的关系 :继承关系 包含关系 类与对象之间的关系 : 实例 UML 类图中类与类之间的关系: 泛化关系(generalization) 关联关系(associ ...
- 全面解释java中StringBuilder、StringBuffer、String类之间的关系
StringBuilder.StringBuffer.String类之间的关系 java中String.StringBuffer.StringBuilder是编程中经常使用的字符串类,在上一篇博文中我 ...
- 【47】java的类之间的关系:泛化、依赖、关联、实现、聚合、组合
java的类之间的关系:泛化.依赖.关联.实现.聚合.组合 泛化: • 泛化关系(Generalization)也就是继承关系,也称为"is-a-kind-of"关系,泛化关系用于 ...
- python之路--类与类之间的关系
类和类之间的关系 在我们的世界中事物和事物之间总会有一些联系. 在面向对象中. 类和类之间也可以产生相关的关系 1. 依赖关系 执行某个动作的时候. 需要xxx来帮助你完成这个操作. 此时的关系是最轻 ...
- Day18--Python--面向对象--类与类之间的关系
1. 依赖关系 在方法中引入另一个类的对象 (最不紧密的一种关系) 依赖关系都是把另一个对象当做参数 class Elephant: def __init__(self, name): self.na ...
- UML类图及类与类之间的关系
原文地址:http://www.uml.org.cn/oobject/201211231.asp 类图用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解,它是系统分析和设计阶段的 ...
- python --- 18 类与类之间的关系, 特殊成员
类与类之间的关系 一.依赖关系 执行某个动作的时候. 需要xxx来帮助你完成这个操作 随时可以更换另外一个东西来完成此操作 此时的关系是最轻的. 二.关联关系(组合关系,聚合关系) 1.一对 ...
随机推荐
- 将Cocos2d-x游戏打包成Android应用程序
1. 打开Eclipse(已经装好CDT.ADT和NDK),导入cocos2d-x的Android项目. 2. 导入后java的源码会出现编译错误,打开cocos2d-x引擎的根文件夹\cocos2d ...
- 转:几款主流pcb软件比较
原理图设计软件:会ORCAD就可以了,支持的Netlist超多,基本是业界标准. PCB Layout 软件 1.Protel,现在推AltiumDesigner.国内低端设计的主流,国外基本没人 ...
- java ConcurrentHashMap 初识
“ConcurrentHashMap是一个线程安全的哈希表“,但是不允许key和value为空: HashTable和ConcurrentHashMap都是线程安全的,但是HashTable是同步容器 ...
- we are experimenting with a new init system and it is fun
http://0pointer.de/blog/projects/systemd.html Rethinking PID 1 If you are well connected or good at ...
- 【转】AngularJs 弹出框 model(模态框)
原文转至 http://blog.csdn.net/violet_day/article/details/17170585 $modal是一个可以迅速创建模态窗口的服务,创建部分页,控制器,并关联他们 ...
- wifi认证Portal开发系列(二):FreeRadius的安装和测试、关联Mysql
注:本次安装是基于FreeRadius 3版本进行安装配置的,在配置Mysql的过程中,与2版本有些不同.操作系统是CentOS 7 一.准备工作 工具的安装 #安装rz.sz命令用于文件上传 yum ...
- 配置Spring的用于解决懒加载问题的过滤器
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" ...
- HDFS源码分析数据块汇报之损坏数据块检测checkReplicaCorrupt()
无论是第一次,还是之后的每次数据块汇报,名字名字节点都会对汇报上来的数据块进行检测,看看其是否为损坏的数据块.那么,损坏数据块是如何被检测的呢?本文,我们将研究下损坏数据块检测的checkReplic ...
- Silverlight 5 Grid组的MouseLeave响应
用Silverlight 5作个用户控件,即是用Grid画几个格子.分别显示几张透明图片.效果是显示中间那张,点击显示的图片后将其他几张图片一起显示出来,鼠标立马这个用户控件范围后自己主动隐藏点击后显 ...
- Oracle学习第二篇—单行函数
1字符函数 length 字符长度 lengthb 字节长度 lower 变为小写 upper 变为大写 initcap 首字母大写 select Lower('xun Ying') 小写,Uppe ...