面向对象设计

面向对象的编程

类之间的关系有复合(composition)、委托(aggregation)和继承(extension) 3种.

继承

我里头里面有某种东西;
queue里面的功能有deque来实现;
A拥有B;A的所有功能都有B来实现;
Adapter(适配器);queue,用别的来实现
在这里插入图片描述

内存角度
在这里插入图片描述

构造和析构函数顺序

在这里插入图片描述

委托(Delegation)

指针指向右边的类;
by reference (指针也叫)
在这里插入图片描述
has a :有外部就有内部,一起的
委托:不同步。
左边指针可以指向不同的类,实现不同的功能:
Handle/Body:point to implemention(pimpl)

委托将类的定义与类的实现分隔开来,也被称为编译防火墙.

继承(Inheritance)

在这里插入图片描述

继承方式:public、private、protected
继承与虚函数搭配最有价值

构造函数的析构函数一定是虚函数
构造由内而外:是先调用基类的默认构造函数,然后在调用派生类的构造函数;
析构由外而内:首先调用自己的析构函数,然后才调用基类的析构函数;
在这里插入图片描述

虚函数和多态

数据继承下来成为内存的一部分;

函数的继承继承的调用权;

override(覆写,虚函数)
在这里插入图片描述
纯虚函数必须在子类中重新定义

Template Method
在这里插入图片描述
通过子类对象调用父类的函数

在这里插入图片描述

继承和复合关系下的构造和析构

在这里插入图片描述
上面的子类组合继承父类的构造顺序是:父类、组合类、子类;
下面的父类组合构造顺序为:组合类、父类、子类;
在这里插入图片描述

委托加上继承关系

观察者-设计者模式
在这里插入图片描述

储存数据-----表现数据;
数据有变化,表现的必须也同时变化;
左边有很多的右边

在这里插入图片描述
Composite:
在这里插入图片描述
add函数不能写为纯虚函数,因为primitive不能覆写add函数;

Prototype
在这里插入图片描述
需要一个继承体系;创建未来才能出现的体系;
问题:我现在要创建未来的对象; 派生类自己创建要被基类所看见
LandSatImage:_LAST 静态对象 LandSatImage
'-'负号代表为私有构造函数
’#‘为protected;
’+‘为public;
私有构造函数调用addPrototype(把得到的指针放到自己的父类的容器中去prorotypes)挂到父类;
clone函数:通过调用父类里面的原型,返回自己,

如果没有原型,clone为静态函数,不需要对象就能调用,静态函数的调用一定要知道类名称,但是不知道未来的类名;
子类的开销比较大
在这里插入图片描述
24,25行说明静态成员变量必须在类外定义
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值