温习段一:对象导言
(转载请注明出处 CSDN xxyyboy 有问题请留言)
A:纯面向对象的5个特征:
1. 万物皆对象。
2. 程序就是一组对象,对象之间通过消息通知做什么。
3. 每一个对象都有它自己的由其他对象构成的存储区。 (怎么理解?)
4. 每个对象都有一个类型。(如果该类型本身就是一个对象,而对象又是一个对象的抽象,这不是没完没了吗)
5. 一个特定的类型的所有对象都能接收相同的消息。(个人觉得相同的行为更合适)
B:隐藏:
C++中使用3个明确的关键字来设定了界限:public private protected
Public :随后的定义对所有人都可用。
Private:除了该类型的创建者和内部成员之外,任何人都不能访问。
Protected:继承类型可以访问。
C:is-a & is-like-a
圆形 is-a 图形
改造后还能播放MP3的空调 is-like-a 空调
有时候需要向一个已经之类中添加新的接口,这样就扩展了之类的接口并且本身就是一个新的类型,这个新类型应然可以代替基类,但是这个代替是不完美的。这就是is-like-a
D:virtual
写了一堆的程序使用到了virtual了吗?如果没有,我认为没有使用到OO概念,之所以我这么认为,这是因为面向对象采用的晚捆绑思想。
1. 早捆绑early binding,编译器会对特定的函数名产生调用,而连接器讲这个调用解析为要执行的代码的绝对地址。
2. 晚捆绑 late binding,程序运行时,编译器才能确定执行代码的地址,当给对象发送消息时,在程序运行时才去确定被调用的代码。
C++编译器在真正调用的的方插入一段特殊的二进制代码,通过存放在对象自身中的信息,这段代码在运行时计算被调用函数函数体的地址。(到底是什么东西?)
E:桟,堆,静态存储区
1. 桟,内存中的一个区域,可以直接由处理器在程序执行期间存放数据,在桟中的变量成为自动变量或局部变量。
2. 静态存储区,简单的说是内存的一个存储块,在程序开始执行之前分配。
3. 动态的创建对象对应new delete
3者不同:使用1,2可以快速的分配和释放,但是牺牲了3个灵活性。因为3是动态管理的,所以在堆上所需要的时间比桟上时间长的多。对于一般程序,灵活性是最主要的。
F:异常处理
异常处理保证程序的健壮性,不会因为一个非常小的错误导致程序飞掉。以及最重要的在大型项目中的日志板快。
G:对象设计
1. 对象发现
2. 对象装配
3. 系统构造
4. 系统扩充
5. 对象重用
这些可以做为我们最基本的OO设计时的一些尺干。可以发现那部分还做的不够。