面向对象开发思想
2020年03月15日22:19:22
要真正理解面向对象设计,学习C++不是一个好的方式。他太大太杂了。
类和对象的关系可以理解为鸡蛋和土鸡蛋的关系。
当你想做西红柿炒鸡蛋的时候,你脑子里只有鸡蛋的概念,这就是类,当真正做的时候,手里拿的是土鸡蛋,这就是被实例化的类--对象。
类的本意是实现概念抽象,其本质是自定义类型,代表了需要申请的内存空间。所以使用的时候需要先实例化类,这样做就是先找到一个内存地址,然后开辟了类大小的内存空间。没有实例化的类是没有起始地址的,也就是没有在内存中存在。
面向对象编程也是面向接口编程,接口作为模块间的通信方式。通信包括对象间通信和进程间通信,无论什么通信都要有接口。
功能逻辑分离,功能只实现功能,代理类实现业务和逻辑,调用功能模块,这样做的好处是可以复用功能模块,职责清晰。
2020年03月22日20:45:59
面向对象的主要思想是:重用,抽象,面向接口。
与面向过程不同的是,面向对象注重的是数据组织形式,而不是功能的实现。
重用导致数据会以最小单元存在,然后以继承关系重新组织。
一些原始的无任何继承的数据,可以通过建立新的类包含他们,并让新的类继承同一个虚基类,这样这些最小单元数据就有了逻辑上的统一性。通过继承不同的虚基类,可以让这些最小单元实现不同的组织形式。
以上也是抽象的一部分功能,即在逻辑上将最小单元抽象统一。
面向接口也是抽象。面向对象一般会通过一个抽象的接口来传递所有子类,这就导致去了解某一个功能时看不懂他在干什么,所以要完全了解接口,恐怕要完全了解他传递了哪些子类。
有些看不懂的代码,多了很多参数,要么是作为传递一类数据的接口使用的,这就必然给其他一些子类带来了多余的参数;要么就是该类或函数是某人的调试中的类或函数。所以从这两方面理解是个突破口。
面向接口编程,功能逻辑分离!
2020年03月28日22:40:09
语言的学习方法:
1.数据类型
数据型,字符串
2.容器
容器及其方法
3.特殊机制
每种语言都有其独特的内置机制。
4.库函数
语言只是一种工具,掌握库函数才能实现具体功能。
2020年04月06日20:17:20
事件就是状态变更;
对标和参考,是快速学习的有效方式,
2020年04月16日19:29:56
在面向对象编程中,能调用方法的只有对象.
2020年04月22日06:29:52
编程语言学习思路
- I/O
- 数值
- 字符串
- 集合/容器
- 关键字/特殊机制
- 标准库
- 多线程
- 进阶
2020年04月24日07:02:53
中间层,一般是抽象层,例如dbus,先融合再分发,
还有一种中间层,是应对复杂的接口的,即实现处理相同事情的各种类型;
还有一种中间层是将一种数据结构解析为另一种数据结构,
2020年05月10日12:25:54
面向对象编程核心思想:
- 面向接口编程
- 功能逻辑分离
- 生命周期管理
- MVC架构
- 通信
- 分层
- 权限
随笔
建立多层函数的目的:1.为了形式上统一;2.为了有效性检测并进行逻辑处理(逻辑层);3.转换函数名
软件设计思想:分层思想
使用boost好处:可以在低版本的C++中使用高版本C++的功能。
学习使用boost官网资料
整理工程中应用的boost库
语言的灵魂是库
通过重载()运算符获取类型。
通过建立空结构体来表示类型。
每个函数添加有效性判断。
解析也是一种转换,将一种格式转换为另一种格式。解析常用于对不可读的信息转化为可读信息,转换常用于将一种格式适配成另一种格式。
如何看懂一个变量/函数?
全局搜索这个变量的初始化,赋值,被调用,销毁的地方。
建立多层函数的目的:1。为了形式上统一;2.为了有效性检测并进行逻辑处理(逻辑层);3.转换函数名
对于没有返回值的函数,要么是设置了出参,要么是设置了全局变量,要么就是print
使用boost好处:可以在低版本的C++中使用高版本C++的功能。
(void *) 可以作为接口传入任何指针。其实(void *) 就是保存了首地址而没有保存长度的指针,因此可以传递任何指针,但是想恢复数据就需要将(void *) 转换为正确的类型才行。
成员变量同时也是该类的全局变量。
判断有效性的目的有:
1.提高兼容性,使任何输入都会得到处理,而不产生崩溃;
2.有些模块在使用时才启动,如果启动的慢,则调用不了它,所以必须判断他可用时再调用,不然会崩溃。
STD与STL的关系
STL即标准模板库(Standard Template Library),它包括五大类组件:算法、容器、迭代器、函数对象、适配器。
STL是C++标准库的一部分,但不是全部。C++标准库是std名字空间中的所有内容,就是那些不带.h的头文件,如、。如std::string,及IO流都不属于STL,但它们是STL兼容的,可以应用迭代器,算法等。虽然std::string和IO流也是模板类,但并不属于STL。
STL的实现,如STLPort中包括了IO流,string类等,其实不能确切的称为STL实现,而是比STL更大的库实现。但是某些STL类没有在标准库中实现,如hash map,STLPort中实现了。C++标准库包含一个STL的实现,但该实现是标准STL的子集。
C/C++标准库主要包含3部分: STL、IO流及本地化、C的函数库。
标准库不是STL,STL是标准模板库,是标准库的一个子集。它是一个可复用的组件库,其中包含了很多实用的算法和数据结构。stl是一个泛型思维的集中体现。