您的位置:首页 > 编程语言 > C语言/C++

C++与QT学习路线

2015-04-23 10:52 218 查看
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设计以外的绝大部分项目,包括大型系统

完成综合题所有内容,可作为项目经理独自或带领个位数的开发团队实现软件、嵌入式、网络综合系统的开发
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: