过程论认为:数据和逻辑是分离的、独立的,程序世界本质是过程,数据作为过程处理对象,逻辑作为过程的形式定义,世界就是各个过程不断进行的总体。
对象论认为:数据和逻辑不是分离的,而是相互依存的。相关的数据和逻辑形成个体,这些个体叫做对象,世界就是由一个个对象组成的。对象具有相对独立性,对外提供一定的服务。所谓世界的演进,是在某个“初始作用力”作用下,对象间通过相互调用而完成的交互;在没有初始作用力下,对象保持静止。这些交互并不是完全预定义的,不一定有严格的因果关系,对象间交互是“偶然的”,对象间联系是“暂时的”。世界就是由各色对象组成,然后在初始作用力下,对象间的交互完成了世界的演进。过程论和对象论不是一种你死我活的绝对对立,而是一种辩证统一的对立,两者相互渗透、在一定情况下可以相互转化,是一种“你中有我、我中有你”的对立。如果将对象论中的所有交互提取出来而撇开对象,就变成了过程论,而如果对过程论中的数据和逻辑分类封装并建立交互关系,就变成了对象论。
过程论相对确定,有利于明晰演进的方向,但当事物过于庞大繁杂,将很难理清思路。因为过程繁多、过程中又有子过程,容易将整个世界看成一个纷繁交错的过程网,让人无法看清。对象论相对不确定,但是因为以对象为基本元素,即使很庞大的事物,也可以很好地分离关注,在研究一个对象的交互时,只需要关系与其相关的少数几个对象,不用总是关注整个流程和世界,对象论更有助于分析规模较大的事物。但是,对象论也有困难。例如,如何划分对象才合理?对于同一个驱动力,为什么不同情况下参与对象和交互流程不一样?如何确定?其实,这些困难也正是面向对象技术中的困难。
C++用类来描述对象,类是对现实世界中相似事物的抽象,比如同是“双轮车”的摩托车和自行车,有共同点,也有许多不同点。“车”类是对摩托车、自行车、汽车等相同点的提取与抽象。
本章主要讲解C++相较于C一些独有的比较重要的知识点。
C++源文件后缀名.cc/.cpp,头文件后缀名.hh/.hpp
安装g++命令:sudo apt install g++
编译命令 g++ 文件名.cc/.cpp [-o name]
可以按如下方式设置代码预设片段,减少一点重复性的工作
首先从我们最常见到C++的hello,world代码入手,来认识一下C++语言
cpp展开代码#include <iostream>using namespace std;int main(int argc, char * argv[]){ cout << "hello,world" << endl; return 0;}
可能会产生这样的一些疑问
(1)iostream是C++标准库头文件,为什么没有后缀?
—— 模板阶段再作讲解
(2)using namespace std是什么含义?
—— 命名空间的使用
(3) cout << “hello,world” << endl; 实现了输出hello,world的功能,如何理解这行代码?
—— C++输出流的使用
C++基础部分
C++提升部分
框架
+
→ New repository
,输入仓库名(如 pic-bed
),选择 Public(必须公开),勾选 Add a README file
。Settings
→ Developer settings
→ Personal access tokens
→ Generate new token
。PicGo-Token
)。No expiration
(永不过期)。repo
(完全控制仓库)。图床设置
→ GitHub图床
,填写以下信息:
用户名/仓库名
(如 daowuya399/pictures
)。main
或 master
(与仓库实际分支一致)。img/
(为空则上传至根目录)。https://cdn.jsdelivr.net/gh/用户名/仓库名@分支
(通过 jsDelivr CDN 加速)。设为默认图床
并保存。关系型数据库:MySQL就是典型的关系型数据库,使用表结构。
非关系型数据库:redis是典型的非关系型数据库,存放数据的时候,使用键值对的形式。
基于键值对 key-value类型:Redis,memcached 列存储数据库 Column-oriented Graph:HBase 图形数据库 Graphs based:Neo4j 文档型数据库: MongoDB,MongoDB是一个基于分布式文件存储的数据库,主要用来处理大量的文档。
远程字典服务器。使用C语言进行编写的,开源的,性能比较高。主要用作数据库、缓存和消息中间件,是基于内存运行的,并且支持持久化。
redis中文官网:http://www.redis.cn/( redis英文官网:https://redis.io/