1.1.2 C++(www.cppentry.com)中的API
严格来说,API只是简单描述了如何与组件进行交互。也就是说,它对某个组件进行抽象,并提供功能说明。事实上,许多软件工程师更喜欢将API这个缩写扩展为Abstract Programming Interface(抽象编程(www.cppentry.com)接口),而非Application Programming Interface。
在C++(www.cppentry.com) 中,API一般包括一个或多个头文件(.h)以及辅助文档。某个特定API的具体实现通常是可以被链接到最终用户程序中的库文件,它也可以是静态库,如Window操作系统下的.lib文件,Mac OS X和Linux下的.a文件;又或者是动态库,如Windows操作系统下的.dll文件,Mac操作系统下的.dylib文件,或Linux下的.so文件。
C++(www.cppentry.com) API通常会包含如下的元素。
(1) 头文件:一组.h头文件。头文件定义了接口,使得客户端代码能够针对该接口进行编译。开源API还包括API实现的源代码(.cpp文件)。
(2) 类库:一个或多个静态库或动态库文件,它们提供了API的具体实现。客户端可以把它们的代码和这些库文件进行链接,从而为它们的应用程序添加相应的功能。
(3) 文档:如何使用API的概述信息,通常包括为API中所有的类和函数自动生成的文档。
微软的Windows操作系统API(通常被称为Win32 API)就是一个非常知名的API,它是C函数、数据类型和常量的集合,可用来编写在Window平台下的应用程序。它包括文件处理函数、进程与线程管理函数、创建图形用户界面的函数、与网络交互的函数等。
Win32 API是纯C API,而非C++(www.cppentry.com) API。可以在C++(www.cppentry.com)程序中直接使用C API,C++(www.cppentry.com) API中的杰出代表是STL(Standard Template Library,标准模板库)。STL包含了一组容器类、对容器中元素进行遍历的迭代器以及作用于容器的各种算法(Josuttis, 1999)。例如,该算法集合中包括很多高级操作,比如std::search()、std::reverse()、std::sort()和std::set_intersection()。因此,STL提供的是操作元素集合任务的逻辑接口,且没有暴露每个算法内部的实现细节。
提示
API是软件组件的逻辑接口,隐藏了实现这个接口所需的内部细节。