OOD沉思录 --- 类和对象的关系 --- 使用关系
使用关系
对象A的方法MethodA使用了B的方法MethodB,则表示A对B存在使用关系 使用关系的最关键问题在于,A如何找到B,存在6种方案
方案一:
A包含了B,B作为一个成员定义在A的类中,那么在MethodA中可以直接调用B.MethodB()
如汽车可以包含车轮。
如果汽车需要加油,那么就需要调用"加油站B.加油()"
- class 汽车
- {
- 加油站 m_加油站;
- 加油(...)
- {
- //调用某加油站的加油方法
- m_加油站.加油();
- }
- }
那么关键问题在于,汽车如何知道加油站X?
如果让汽车包含加油站,肯定不合适(太土豪了,呵呵),那么还有以下5种方案:
方案二: 通过形参将加油站传递给调用的方法,那么调用形式就是“加油站.加油()",那么汽车的定义则如下
- class 汽车
- {
- 加油(加油站 X)
- {
- X.加油();
- }
- }
方案三:
通过一个第三方类来获得加油站,如地图类,则汽车的定义如下:
- class 汽车
- {
- 加油()
- {
- 加油站 X=地图.查找一个加油站();
- X.加油();
- }
- }
方案四:
全世界只有一个加油站,那么所有的汽车都到这里来加油,则汽车的定义如下:
- class 汽车
- {
- 加油()
- {
- 加油站.TheInstance.加油();
- }
- }
这种情况就是单件模式的例子,还记得它吗?
方案五:
对款爷来说,随时修一个加油站,加完油就推平,这种情况在大部分领域行不通(代价太高),但是在软件领域可以(因为代价很低)
这种情况下,汽车的定义如下:
- class 汽车
- {
- 加油()
- {
- 加油站 X=new 加油站();
- X.加油();
- delete X;
- }
- }
方案六:
汽车制造商在汽车的玻璃上明确标注了,此车只能在名叫"XX加油站",则汽车的定义如下:
- class 汽车
- {
- string 加油站名="XX加油站";
- 加油()
- {
- 加油站 X=企业黄页.查找(加油站名);
- X.加油();
- }
- }
这种方案,在有的地方叫弱引用,汽车并不直接包含加油站,但是包含加油站的一个标示
转载于:https://www.cnblogs.com/stst/p/4909620.html
OOD沉思录 --- 类和对象的关系 --- 使用关系相关推荐
- 《软件开发沉思录》之对象健身操
2019独角兽企业重金招聘Python工程师标准>>> 最近看了一部分<软件开发沉思录>, 感觉里面的"对象健康操"还是蛮有意思的,在这记录下,希望以 ...
- 类和对象的定义和关系
1.面向过程: POP(procedure oriented Programming) c语言 汇编语言 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现, ...
- 是什么事类,什么是对象,类和对象之间有什么关系?
什么是类 类的概念:类是具有相同属性和服务的一组对象的集合.它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分.在面向对象的编程语言中,类是一个独立的程序单位,它应该有一个类 ...
- 非常易于理解‘类'与'对象’ 间 属性 引用关系,暨《Python 中的引用和类属性的初步理解》读后感...
关键字:名称,名称空间,引用,指针,指针类型的指针(即指向指针的指针) 我读完后的理解总结: 1. 我们知道,python中的变量的赋值操作,变量其实就是一个名称name,赋值就是将name引用到一个 ...
- 类和对象、实例的关系理解
类可以理解为一种类型,对象是类中的一种实例.用类创建对象的过程叫做实例化.所以实例和类基本就是同一个概念.最常见的举例是:类Class:鸟 类的方法(函数):(鸟)会飞 类的属性(变量):爪子,翅膀实 ...
- 不能将brassplus类型的值分配到brass类的实体_Java 基础 - 类与对象
类.对象和引用的关系 类和对象的关系 类是对象的模版,对象是类的一个实例,一个类可以有很多对象 一个Java程序中类名相同的类只能有一个,也就是类型不会重名 一个对象只能根据一个类来创建 引用和类以及 ...
- Java 入门知识学习笔记 (类和对象)
一.类和对象的定义及关系 1.类是同一类别对象的抽象定义:可以理解为是某一类具体对象的模子,确定对象将会拥有的特性,包括该类对象具备的属性和方法. 2.对象是对类的一种具体化的客观存在,是对类的具体实 ...
- php类与对象的基本概念
php面向对象设计 对象相比数组的优点:不仅可以存储多个数据,还可以将函数存在对象中 对象的三大特性:封装.继承.多态 面向对象编程(object oriented programming 即oop) ...
- 面向对象-类和对象、构造方法、封装
目录 面向对象 一.类和对象 1.定义 2.关系 3.类的组成 4.创建对象的格式 5.使用对象成员变量的格式 6.使用对象成员方法的格式 二.对象内存图 1.单个对象内存图 2.两个对象内存图(方法 ...
最新文章
- 2022-2028年中国电商物流行业投资分析及前景预测报告
- git submodule 使用场景汇总
- 别再打字聊bug了,GitHub支持“视频留言”!手机也可以的那种
- mysql的所有权限
- 使用OpenCV进行相机标定
- java更改背景_java – 使用jquery更改menue的背景颜色
- Mybatis的缓存机制Cache
- java 注解 target_详解JDK 5 Annotation 注解之@Target的用法
- CryptoQuant CEO:OKEx暂停提款对比特币价格影响不大
- lisp如何绘制梯形_建筑考研 | 如何用数据库思维拓宽设计思路?(以清华考研快题为例)...
- PostgreSQL 之 CREATE FUNCTION
- NERO9注册机使用
- idea 格式化代码怎么才能不格式化代码注释?
- ios safari 描述文件 跳转到_iOS系统在线下载安装ipa文件,以及跳转描述文件信任证书的实现...
- FYI | Brain-Art Competition 2018 开始投稿了
- 计算机系统相机怎么卸载,如何卸载摄像头驱动
- 使用beautiful soup解析xml
- 打造“沉浸式体验”展厅 智能讲解机器人云帆演绎新玩法
- S@Kura的PHP进阶之路(一)
- picker插件 vue 移动端_基于 vue 的 picker 组件 vue-awesome-picker