Thinking in C++读书笔记【一】---对象导言
来源:互联网 发布:前瞻网数据库可靠吗 编辑:程序博客网 时间:2024/06/03 07:45
最近想要换一个工作环境,去了几家公司面试都被鄙视了,发现自己还有很多东西需要学习。从这本书开始,踏踏实实每一步!
第一卷 标准C++导引
第一章 对象导言
看了第一章就发现原来自己真的差的好远啊,好多东西都不懂。不是平白无故的被鄙视啊!加油!
1 抽象的过程
C++编程的首要特性就是允许我们将问题进行抽象,通过抽象可以将一个大的问题分解成我们更容易理解的对象和对象之间的交互的过程。这样更有利于我们进行编程。以后编程的时候一定要好好进行抽象的工作,这是一个好的程序的开始。
2 uml的学习:
顺便学习一下uml,可以帮助进行抽象,原来根本没有注意过这些,汗!
3 C++为了简化:
实现的隐藏:C++为了屏蔽掉对于某一领域程序员复杂难懂的逻辑,用public、private、protected实现边界的控制。
实现的重用:程序可以通过聚合的方式来让程序变得更加灵活。
继承--接口重用:C++通过继承的机制让程序员能够最大限度的减少代码的冗余。可以让程序更加符合OOP的思想。
具有多态性的可互换对象:同样是继承自一个几类的子类,同时都有一个Move方法,为了简化不让我们为每一种Move进行判断并且编码,多态的机制帮助我 们节省了很多的时间和精力。
关于多态的实现,我们编译器采用的是晚绑定的思想,当调用对象的接口时,在程序运行的时候才去计算被调用函数的地址(具体过程后面讲解)。
4 对象的创建和销毁:
程序创建对象有几种方式(从原理上讲):
栈上创建:通常是在函数内创建,我们们叫做局部变量,在函数返回时销毁。
静态存储区创建(静态存储区是固定的一块内存,程序开始执行以前分配):通常叫做静态变量static,程序执行完销毁。
堆上创建:同常也是在函数内创建,通过new创建,生命周期必须我们通过delete进行控制。
5 异常处理:
可以说C++的异常处理太强大了,原来根本就没有注意到,以后一定要注意程序的异常处理。
C++异常的处理时交给一个异常对象,程序或者是操作系统通过监视这个异常对象的状态来进行出,这和函数的返回码完全是两种概念,函数的返回码可以被忽略,但是异常是不可以忽略的,我们可以通过对异常的处理使程序重新恢复正常。
6 分析与设计:
问题是随着解决问题的过程不断产生的!
⑴制定计划:用尽量少的精炼的词语概括所要做的。
⑵需求制定:明白我们要做的是什么,不要抠细节,弄清主体。可以通过用例图来帮助我们更好的弄清楚需求,划分好边界。
⑶建立对象:一个又去的方法,拿出一些小的卡 片,在卡片上写出对象的名称和接口,当一张卡片上写不下,可能是我们的对象需要细化了。(CRC卡片)
a 对象发现
b 对象装配
c 系统构造
d 系统扩充
e 对象重用(最高目标)
⑷创建核心:将系统的核心建立好,通过项目不断的发展来发现更多对象进行系统扩充
⑸迭代用例:不断的迭代用例来扩展系统。
⑹进化:通过不断的进化来完善我们的程序。
(整个过程和人类的成长有些像!)
7 极限编程(XP):
⑴先写测试:通过测试的方式最贴切的设计出符合测试的程序(别文档好用)
⑵结对编程:一人编写代码一人思考,然后code review
8尽可能的使用库:
这是C++设计的初衷!
- Thinking in C++读书笔记【一】---对象导言
- Thinking in Java 读书笔记(一) --对象导论
- 浅谈面向对象--《Thinking in Java》读书笔记(一)
- 【thinking in java】读书笔记(一)
- Thinking in Java 读书笔记 (一)
- Thinking in java4th读书笔记-第一章 对象导论
- 读书笔记 之《Thinking in Java》(对象、集合)
- Thinking in Java 读书笔记 第一章 对象导论
- 《Thinking in Java》读书笔记(一)
- Thinking in C++读书笔记(一)
- 大象Thinking in UML读书笔记一
- Thinking in java读书笔记-线程(一)
- <<Thinking in C++>> Edition2 Voloum1 读书笔记
- 读书笔记-Thinking in C++-第13章 动态对象的创建
- 读书笔记-Thinking in Java01-对象导论+一切都是对象
- 温习段一:对象导言
- 【Thinking in Java】一:对象导论
- Thinking in Java - - 对象导论(一)
- datagrid的合并单元格(合并行、并列)
- 封装UI和代码利器—Fragment(四)
- 所有的安排都是最好的选择,嘿嘿
- ecnu 1244 积木游戏(黑书)DP
- cin cout
- Thinking in C++读书笔记【一】---对象导言
- C#字符串
- Java导出word
- 常见术语
- 蓝桥杯 第39阶梯 n阶梯 递归
- JAVA输入输出流详解
- IAR--Fatal Error[Lc002]: could not open file "*\build\config files\512KB_Pflash.icf" 的解决方法
- Ubuntu常用软件 --- 截图
- Python数据结构:序列(列表[]、元组())与映射(字典{})语法总结