欢迎来到天天文库
浏览记录
ID:20843692
大小:237.50 KB
页数:61页
时间:2018-10-17
《第10章__类库和c++标准模板库stl》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《C++面向对象程序设计》教学内容第1章C++概述第2章类和对象第3章面向对象程序设计概述第4章进一步学习类和对象第5章堆与复制构造函数第6章继承性:派生类第7章运算符重载第8章虚函数和多态性第9章模板第10章类库和C++的标准模板库STL第11章输入输出流第12章异常处理第10章类库和C++的标准模板库STL10.1类库的概念10.2C++的标准模板库STL10.1类库的概念1.1.1什么是类库(classlibrary)?1.1.2如何分析、利用类库?1.1.3类库的特点1.1.4类库是面向对象的软件开发环境的核心10.1.1什么是类库?类库是类的集合,并且给出了多种类之间的关系
2、描述。为了便于程序员的开发工作,系统提供了一批可供重用的代码。(源程序代码)具体表现为一组类,通过建立彼此间的继承关系形成类库,以类的形式提供给用户重用。什么是类库?(续)在设计和实现面向对象的程序的时候,要用类和类库,才能得到所需的对象,即类的实例。所以,类库是一种预定义的面向对象的程序库。类库的例子C++StandardSTLlibraryMicrosoftVisualC++系统中提供的MFC类库。MFCMicrosoftFoundationClassBorlandC++系统中提供的OWL类库。C++Builder系统中提供的VCL类库。类库为软件重用提供基础OOP提供的继承机制
3、使得程序员可以在已有类的基础上定义自己需要的新类,从而实现了软件模块的重用。程序员分工进一步细化在面向对象的程序设计范型之下,程序员的队伍可能要分为两种,它们都以类作为工作对象一个队伍主要是设计类和类库,另一个队伍主要是使用类来设计应用程序。分工细化就意味着进步10.1.2如何分析、利用类库?要想发挥面向对象方法的优势,程序员必须知道类库的组织情况。我们可以通过联机帮助或类库参考手册(类库工作手册)了解:⒈ 软件开发系统提供的类库的类层次结构。⒉ 可能需要用到的类及其父类的属性和方法。⒊ 通过联机文档提供的例子学习有关类的使用方法。衡量应用程序员能力的标准的变化结构化程序设计时代的标
4、准:每天编写的源代码行数,程序结构清晰。面向对象程序设计时代的标准:衡量一个应用程序员的生产力,要看他是否知道如何来最好地发挥已有类库的功能,要看他有没有能力将已有的类库与新问题紧密的匹配起来,还要看他不得不另外编写的代码是不是最少。10.1.3类库有什么特点通用性可扩充性概念性与层次性灵活性通用性基于重用的目的,选择具有广泛适用性的东西作为类库的内容,并经过全面的考虑,使之适用于较多的情况。可扩充性在软件开发过程中,可以添加新的类供以后使用。对已有的类库进行改进时,只要保持接口不变,修改不会引起外部(即应用系统)软件的变化。概念性与层次性类库中的每个类的概念要明确,易于理解,将具有
5、某些共同性质的类作为基类。设计类要有一个明确的目标。一个好的类应该是容易理解和使用的。10.1.4类库是面向对象的软件开发环境的核心OOP开发方法只有基于软件重用的思想,才能真正提高软件开发的效率和质量。类库为软件重用提供了基础,程序设计不必再从零开始。类库不同于传统的子程序库(函数库),它的性能大大优于子程序库。10.2C++的标准模板库STL10.2.1名字空间namespace简介10.2.2C++标准库的构成10.2.3标准模板库STL简介10.2.4标准模板库STL应用举例10.2.1名字空间namespace简介日常生活中人名相同引起的名字冲突;C++程序中出现相同的名
6、字引起的冲突:容器类库中有一个List类窗口类库中有一个List类如果一个程序中要同时使用这两个类库就会发生名字冲突名字冲突的危害在同一个源文件(编译单元)中出现的名字冲突可以由编译器compiler检查出来:RedefinedSymbols(ambiguoussymbol)(参见example10_2)在不同编译单元(如目标文件)之间的名字冲突可能由链接器Linker检查出来:Identifiermultiplydefined也可能导致错误链接,从而产生运行时错误runtimeerror。名字冲突的原因C++中采用的是单一的全局名字空间(参见)。在这单一的空间中,如果有两个类、两个
7、变量或两个函数的名字完全相同,就会出现名字冲突。作用域的概念scope局部作用域localscopes:块作用域函数作用域文件作用域全局作用域globalscopes全局标识符号:全局变量名、全局函数名、全局类型名等等全局名字在整个程序范围内有效名字空间namespace使用名字空间来划分全局名字空间可以避免名字冲突。解决的办法就是将程序中相同的名字定义在两个不同的名字空间中。名字空间namespace(续)名字空间就是为解决C++中的变量、函数等的名字冲
此文档下载收益归作者所有