1、流输入输出概念
需要掌握cin、cout和fstream流
2、new与delete(配合类理解)
3、inline函数与#define的区别,学会使用inline
4、类的封装概念
需要掌握:
类的声明与对象定义
类的构造与析构(缺省构造函数,拷贝构造函数,构造函数的调用,如何用构造函数给对象指针赋值)
类的继承与私有、保护、共有成员
类的静态成员——例题:如何建立只有一个实例的类?如何统计类的实例个数?
多重继承下的虚基类
虚函数与对象指针
友元函数与友元类
学习方法:使用Qt编写小程序,以QString和衍生出的QByteArray等类为主
需要思考掌握的概念:
从Qt的框架结构理解【面向对象】和【封装】、【继承】的概念
充分理解【内聚】与【耦合】在程序设计中的重要性,并明白如何将其应用到面向对象编程中(提示:清晰的树状继承,逐步丰富类的特性,而非网状继承,以Qt为例)
类如何实现对象这个概念?对象中的【方法】与普通c的【函数】,在理念上有何区别?
类的封装的优点和特点(对比Qt与windows api的特性,建议使用windows api编写一些小程序,与Qt程序对比)
如何发挥类的继承特性,写出清晰的代码框架?(举例,Qt的类全部从QObject继承下来,逐步分类细化特点,在基类里提供统一的特性进行全局掌控)
类的静态成员如何为这一类对象服务?(以Qt各种类的静态函数为入手点)
题目:
公司员工管理系统
5、string类
需要掌握:
c++ string类的定义、赋值、各种字符串函数、字符串拼接、与char*数组的转换,与整形、浮点之间的转换
Qt的QString类的类似内容
6、STL模板库中的容器类
需要掌握:QList、QMap和iterator迭代器遍历
例题:QList的插入、删除与寻找,QMap的插入、删除与寻找,使用迭代器,用类似for遍历数组的方式遍历QList与QMap
7、模板
需要掌握:
模板变量类型的使用,举例:inline函数编写数学运算、大小对比等函数
8、Socket网络编程
需要掌握:
TCP、UDP服务端、客户端的具体结构和流程
使用Qt的Socket类编写TCP、UDP的服务端和客户端程序,在局域网内进行测试
网络调试工具的使用。具体可搜TCP测试工具
9、COM串口通讯
需要掌握:
485、232串口线路连接(A线、B线、TxD、RxD、共地概念)
串口调试工具的使用。推荐串口猎人
使用QextSerialPort库进行串口通讯编程(该库为用户自行写的Qt4串口类,与Qt官方库属于统一体系,可以被纳入Qt本身库的信号槽管控和垃圾处理机制中)
10、SQL数据库编程
需要掌握:
使用Qt用户扩展库与SQL数据进行连接,实现数据库操作功能(该库我手头上无头文件和文档,需自行查询)
11、运算符重载
需要掌握:
分别使用成员函数和友元函数进行运算符重载
+ - && ^等双目运算符的重载
++ --等单目运算符的重载
+= =等双目赋值运算符的重载
<< >>流控制运算符的重载
练习方式:
QString,Qt的iterator迭代器
扩展内容:
[]下标运算符的重载
<>配合模板类型重载,以自行实现新的容器类
12、XML文件解析
需要掌握:
使用QDocument、QDomElement、QDomNode、QDomNodeList类读取XML配置文件并进行解析
13、Qt信号槽机制
需要掌握:Qt信号槽机制
例题:
使用信号槽进行类之间的通讯,以避免耦合度的提高
使用信号槽进行COM通讯、Socket通讯和数据库通讯
14、Qt多线程编程
需要掌握:QThread类,信号槽在不同线程之间通讯时的同步问题(具体可以进行百度,能搜到csdn博客文章)
例题:将网络编程中,服务端程序进行线程分离,与客户端的通讯位于一个线程,数据处理位于另一个线程
15、QTimer
需要掌握:QTimer定时器类
例题:使用QTimer配合信号槽,定期执行任务函数
16、Qt文件操作扩展
需要掌握:
QDir、QFireInfoList类
例题:
指定文件夹中有一系列规定格式的文件,如【测试01.txt】【测试02.txt】……【测试99.txt】,删除其中编号为25-50的文件
综合题:公司员工管理系统
可实现模块列表:
1、使用类的继承,从上到下实现数据结构,先定义统一基类,提供基础的全局调控,然后分部门、职务、成员三类进行继承,然后根据需求进行更详细的继承
2、使用静态成员,提供基于类的公共函数实现全局功能,如在基础类和具体的子类中分别实现特定功能
3、重写<<输入输出流运算符,使用cout进行数据展示
4、使用容器类储存数据对象
5、将程序分离为服务端与客户端,改写为网络系统。需要同时支持TCP与UDP功能,使用信号槽机制进行实现
6、记录日志文件。编写实现Log日志文件类,实现日志记录的所有功能,外部调用仅需log.LogMessage(QString str)方式即可。自动记录内容到文件中,并在行首加入时间记录,精确到年月日时分秒(QTime、QDateTime)。日志文件名以【文件名 年-月-日-时.txt】进行记录,每小时一个文件。日志类记录时会自动记录到当小时的文件中
7、加入XML配置文件。程序会自动从XML配置文件中读取所需的一切信息,如日志文件名称、数据库名称地址账号密码、服务端监听端口、服务端ip地址等配置
8、使用QTimer定时器定时检查日志文件,自动删除过期文件(过期时间在XML中进行配置,如七天
熟悉1-12,可称为一名熟练的c++工程师,完成绝大部分中小型项目
熟悉13-16,可称为一名熟练的Qt工程师,完成除GUI设计以外的绝大部分项目,包括大型系统
完成综合题所有内容,可作为项目经理独自或带领个位数的开发团队实现软件、嵌入式、网络综合系统的开发
需要掌握cin、cout和fstream流
2、new与delete(配合类理解)
3、inline函数与#define的区别,学会使用inline
4、类的封装概念
需要掌握:
类的声明与对象定义
类的构造与析构(缺省构造函数,拷贝构造函数,构造函数的调用,如何用构造函数给对象指针赋值)
类的继承与私有、保护、共有成员
类的静态成员——例题:如何建立只有一个实例的类?如何统计类的实例个数?
多重继承下的虚基类
虚函数与对象指针
友元函数与友元类
学习方法:使用Qt编写小程序,以QString和衍生出的QByteArray等类为主
需要思考掌握的概念:
从Qt的框架结构理解【面向对象】和【封装】、【继承】的概念
充分理解【内聚】与【耦合】在程序设计中的重要性,并明白如何将其应用到面向对象编程中(提示:清晰的树状继承,逐步丰富类的特性,而非网状继承,以Qt为例)
类如何实现对象这个概念?对象中的【方法】与普通c的【函数】,在理念上有何区别?
类的封装的优点和特点(对比Qt与windows api的特性,建议使用windows api编写一些小程序,与Qt程序对比)
如何发挥类的继承特性,写出清晰的代码框架?(举例,Qt的类全部从QObject继承下来,逐步分类细化特点,在基类里提供统一的特性进行全局掌控)
类的静态成员如何为这一类对象服务?(以Qt各种类的静态函数为入手点)
题目:
公司员工管理系统
5、string类
需要掌握:
c++ string类的定义、赋值、各种字符串函数、字符串拼接、与char*数组的转换,与整形、浮点之间的转换
Qt的QString类的类似内容
6、STL模板库中的容器类
需要掌握:QList、QMap和iterator迭代器遍历
例题:QList的插入、删除与寻找,QMap的插入、删除与寻找,使用迭代器,用类似for遍历数组的方式遍历QList与QMap
7、模板
需要掌握:
模板变量类型的使用,举例:inline函数编写数学运算、大小对比等函数
8、Socket网络编程
需要掌握:
TCP、UDP服务端、客户端的具体结构和流程
使用Qt的Socket类编写TCP、UDP的服务端和客户端程序,在局域网内进行测试
网络调试工具的使用。具体可搜TCP测试工具
9、COM串口通讯
需要掌握:
485、232串口线路连接(A线、B线、TxD、RxD、共地概念)
串口调试工具的使用。推荐串口猎人
使用QextSerialPort库进行串口通讯编程(该库为用户自行写的Qt4串口类,与Qt官方库属于统一体系,可以被纳入Qt本身库的信号槽管控和垃圾处理机制中)
10、SQL数据库编程
需要掌握:
使用Qt用户扩展库与SQL数据进行连接,实现数据库操作功能(该库我手头上无头文件和文档,需自行查询)
11、运算符重载
需要掌握:
分别使用成员函数和友元函数进行运算符重载
+ - && ^等双目运算符的重载
++ --等单目运算符的重载
+= =等双目赋值运算符的重载
<< >>流控制运算符的重载
练习方式:
QString,Qt的iterator迭代器
扩展内容:
[]下标运算符的重载
<>配合模板类型重载,以自行实现新的容器类
12、XML文件解析
需要掌握:
使用QDocument、QDomElement、QDomNode、QDomNodeList类读取XML配置文件并进行解析
13、Qt信号槽机制
需要掌握:Qt信号槽机制
例题:
使用信号槽进行类之间的通讯,以避免耦合度的提高
使用信号槽进行COM通讯、Socket通讯和数据库通讯
14、Qt多线程编程
需要掌握:QThread类,信号槽在不同线程之间通讯时的同步问题(具体可以进行百度,能搜到csdn博客文章)
例题:将网络编程中,服务端程序进行线程分离,与客户端的通讯位于一个线程,数据处理位于另一个线程
15、QTimer
需要掌握:QTimer定时器类
例题:使用QTimer配合信号槽,定期执行任务函数
16、Qt文件操作扩展
需要掌握:
QDir、QFireInfoList类
例题:
指定文件夹中有一系列规定格式的文件,如【测试01.txt】【测试02.txt】……【测试99.txt】,删除其中编号为25-50的文件
综合题:公司员工管理系统
可实现模块列表:
1、使用类的继承,从上到下实现数据结构,先定义统一基类,提供基础的全局调控,然后分部门、职务、成员三类进行继承,然后根据需求进行更详细的继承
2、使用静态成员,提供基于类的公共函数实现全局功能,如在基础类和具体的子类中分别实现特定功能
3、重写<<输入输出流运算符,使用cout进行数据展示
4、使用容器类储存数据对象
5、将程序分离为服务端与客户端,改写为网络系统。需要同时支持TCP与UDP功能,使用信号槽机制进行实现
6、记录日志文件。编写实现Log日志文件类,实现日志记录的所有功能,外部调用仅需log.LogMessage(QString str)方式即可。自动记录内容到文件中,并在行首加入时间记录,精确到年月日时分秒(QTime、QDateTime)。日志文件名以【文件名 年-月-日-时.txt】进行记录,每小时一个文件。日志类记录时会自动记录到当小时的文件中
7、加入XML配置文件。程序会自动从XML配置文件中读取所需的一切信息,如日志文件名称、数据库名称地址账号密码、服务端监听端口、服务端ip地址等配置
8、使用QTimer定时器定时检查日志文件,自动删除过期文件(过期时间在XML中进行配置,如七天
熟悉1-12,可称为一名熟练的c++工程师,完成绝大部分中小型项目
熟悉13-16,可称为一名熟练的Qt工程师,完成除GUI设计以外的绝大部分项目,包括大型系统
完成综合题所有内容,可作为项目经理独自或带领个位数的开发团队实现软件、嵌入式、网络综合系统的开发