C++面向对象程序设计-第10章--类库和C++的标准模板库STL.ppt
《C++面向对象程序设计-第10章--类库和C++的标准模板库STL.ppt》由会员分享,可在线阅读,更多相关《C++面向对象程序设计-第10章--类库和C++的标准模板库STL.ppt(62页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第10章 类库和C+的标准模板库STL10.1 类库的概念10.2 C+的标准模板库STL10.1 类库的概念1.1.1 什么是类库(class library)?1.1.2 如何分析、利用类库?1.1.3 类库的特点1.1.4 类库是面向对象的软件开发环境的核心10.1.1 什么是类库? 类库是类的集合,并且给出了多种类之间的关系描述。 为了便于程序员的开发工作,系统提供了一批可供重用的代码。 (源程序代码) 具体表现为一组类,通过建立彼此间的继承关系形成类库,以类的形式提供给用户重用。什么是类库? ( 续) 在设计和实现面向对象的程序的时候,要用类和类库,才能得到所需的对象,即类的实例。
2、所以,类库是一种预定义的面向对象的程序库。类库的例子 C+ Standard STL library Microsoft Visual C+系统中提供的MFC类库。 MFC Microsoft Foundation Class Borland C+系统中提供的OWL类库。 C+ Builder 系统中提供的VCL类库。 类库为软件重用提供基础 OOP提供的继承机制使得程序员可以在已有类的基础上定义自己需要的新类,从而实现了软件模块的重用。 程序员分工进一步细化 在面向对象的程序设计范型之下,程序员的队伍可能要分为两种,它们都以类作为工作对象 一个队伍主要是设计类和类库,另一个队伍主要是使用类来
3、设计应用程序。 分工细化就意味着进步10.1.2 如何分析、利用类库? 要想发挥面向对象方法的优势,程序员必须知道类库的组织情况。 我们可以通过联机帮助或类库参考手册(类库工作手册)了解: 软件开发系统提供的类库的类层次结构。 可能需要用到的类及其父类的属性和方法。 通过联机文档提供的例子学习有关类的使用方法。 衡量应用程序员能力的标准的变化 结构化程序设计时代的标准:每天编写的源代码行数,程序结构清晰。 面向对象程序设计时代的标准: 衡量一个应用程序员的生产力,要看他是否知道如何来最好地发挥已有类库的功能, 要看他有没有能力将已有的类库与新问题紧密的匹配起来, 还要看他不得不另外编写的代码是
4、不是最少。 10.1.3 类库有什么特点通用性 可扩充性 概念性与层次性 灵活性 通用性 基于重用的目的,选择具有广泛适用性的东西作为类库的内容,并经过全面的考虑,使之适用于较多的情况。可扩充性 在软件开发过程中,可以添加新的类供以后使用。 对已有的类库进行改进时,只要保持接口不变,修改不会引起外部(即应用系统)软件的变化。概念性与层次性 类库中的每个类的概念要明确,易于理解,将具有某些共同性质的类作为基类。 设计类要有一个明确的目标。 一个好的类应该是容易理解和使用的。 10.1.4 类库是面向对象的软件开发环境的核心OOP开发方法只有基于软件重用软件重用的思想,才能真正提高软件开发的效率和
5、质量。类库为软件重用提供了基础,程序设计不必再从零开始。类库不同于传统的子程序库(函数库),它的性能大大优于子程序库。10.2 C+的标准模板库STL10.2.1 名字空间namespace简介10.2.2 C+标准库的构成10.2.3 标准模板库STL简介10.2.4 标准模板库STL应用举例10.2.1 名字空间namespace简介 日常生活中人名相同引起的名字冲突; C+程序中出现相同的名字引起的冲突: 容器类库中有一个List类 窗口类库中有一个List类 如果一个程序中要同时使用这两个类库就会发生名字冲突名字冲突的危害 在同一个源文件(编译单元)中出现的名字冲突可以由编译器 com
6、piler 检查出来: Redefined Symbols ( ambiguous symbol ) (参见example10_2) 在不同编译单元(如目标文件)之间的名字冲突可能由链接器Linker检查出来: Identifier multiply defined 也可能导致错误链接,从而产生运行时错误 runtime error。名字冲突的原因 C+中采用的是单一的全局名字空间全局名字空间(参见参见)。在这单一的空间中,如果有两个类、两个变量或两个函数的名字完全相同,就会出现名字冲突。作用域的概念 scope 局部作用域 local scopes : 块作用域 函数作用域 文件作用域 全局
7、作用域 global scopes 全局标识符号:全局变量名、全局函数名、全局类型名等等 全局名字在整个程序范围内有效名字空间 namespace 使用名字空间来划分全局名字空间可以避免名字冲突。 解决的办法就是将程序中相同的名字定义在两个不同的名字空间中。名字空间 namespace (续) 名字空间就是为解决C+中的变量、函数等的名字冲突而服务的。 程序规模越大,名字空间就越有用。The larger a program is, the more useful namespaces are to express logical separations of its parts.namesp
8、ace又译作 :命名空间、名称空间名字空间的例子/两个在不同命名空间中定义的名字相同的变量namespace myown1string user_name = myown1;namespace myown2string user_name = myown2;名字空间的名字int main()cout n Hello, myown1:user_name . and goodbye!n;cout n Hello, myown2:user_name . and goodbye!n;return 0; (参见example10_3)用命名空间限制符myown1访问变量user_name用命名空间限制符
9、myown2访问变量user_nameint main( )using namespace myown1;cout n Hello, user_name . and goodbye!n;/using namespace myown2;cout n Hello, myown2:user_name . and goodbye!n;return 0; (参见example10_4)用命名空间限制符myown2访问变量user_name无需无需用命名空间限制符myown1访问变量user_name创建名字空间namespace namespacename/ / declaration and defi
10、nitionsl可见,创建名字空间与定义一个类很相似,实际上类名就是一个名字空间的名字。using namespace 关键字 using 将一个名字空间变为可见,实际上只是将该名字空间的名字添加到当前名字空间中。 命令using的作用域从其声明之处开始并持续到当前作用域scope结束。 在使用一个名字空间时,并不会覆盖当前的名字空间。using namespace 的有效范围int main( ) using namespace myown1;cout n Hello, user_name . and goodbye!n;using namespace myown2;cout n Hello
11、, user_name . and goodbye!n;return 0;名字空间小结 一、名字空间解决了C+的名字冲突问题 二、注意名字空间namespace的书写格式,和类class相似或相同。 三、名字空间名必需是唯一的,否则必需在它们的外面再套上一层名字空间,亦即名字空间可以和类一样的嵌套使用 四、同名类在声明实例时必需加上名字空间作用域符“名字空间名:类名” 五、不一定只有类才可加上名字空间的外套,其它如,局部变量、函数等都可加上名字空间外套。10.2.2 C+标准库的构成 基本的运行库 例如支持动态内存分配、运行时类型信息RTTI C语言的标准库 标准模板库(标准模板库(STL)
12、输入输出流类库( I/O Stream)和字符串 数值计算库 例如支持复数的计算C+标准库名字空间#include using namespace std;int main( )std: :cout Hello, world!n;C+的标准库定义在名字空间 std之中.标准库定义在名字空间std#include #include using namespace std; /该编译指示引入std 里的所有符号/使用该编译指示using namespace std;在C+标准类库中定义的名字在本程序中可以使用/否则,iostream,string 等c+标准类就不可见了,编译就会出错。10.2.3
13、 标准模板库STL简介 Standard Template Library ( STL) 包含常用算法和数据结构的通用库 STL的核心内容是3个基本组件: 容器 算法 迭代器STL中的容器类 容器(container)类是用来保存其它对象的,STL中定义了多种不同类型的容器,例如: 向量 vector 线性表 list 队列 queue 映射 map 集合 set 字符串string (还有其他容器类,可以参考其他书籍或者查阅联机手册)常用算法 排序 sort( ) 查找 find( ) 替换 replace( ) 合并 merge( ) 反序 reverse( ) 统计 count( ) 其
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 面向 对象 程序设计 10 标准 模板 STL
限制150内