C++ API 设计

C++ API 设计

ID:37695164

大小:1.85 MB

页数:16页

时间:2019-05-29

C++ API 设计_第1页
C++ API 设计_第2页
C++ API 设计_第3页
C++ API 设计_第4页
C++ API 设计_第5页
资源描述:

《C++ API 设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、1.1什么是API11第1章2API简介31.1什么是API4API(ApplicationProgrammingInterface)提供了对某个问题的抽象,以及客户与解决该问题的软件组件之间进行交互的方式。组件本身通常以软件类库形式分发,它们可以在多个应用程序中使用。概括地说,API定义了一些可复用的模块,使得各个模块化功能块可以嵌入到最终用户的应用5程序中去。你可以为自己、为你所在机构中的其他工程师或大型开发社区编写API。它可以小到只包含一个单独的函数,也可以大到包含数以百计的类、方法、全局函数、数据类型、枚举类型和常量

2、等。它的实现可以是私有的,也可以是开源的。有关API的一个重要的基本定义是:API是一个明确定义的接口,6可以为其他软件提供特定服务。现代应用程序通常都是基于很多API建立起来的,而这些API往往又依赖于其他API。如图1-1中示例应用程序所示,该应用程序用到了3个类库(1、2、3)的API,而这3个API中有2个又用到了另外27个类库(4和5)。举例来说,浏览图片的应用程序可能会用到加载GIF图片的API,而该API本身则可能又依赖更底层的压缩或解压缩数据的API。891011图1-1从层次化API中调用例程的应用程序。每个

3、方框代表一个软件类库,灰色部分表示其公共接口,对于类库而言即是其API,白色部分表示隐藏在API后12面的具体实现2第1章API简介API开发在现代软件开发中随处可见,其目的是为某个组件的功能提供一个逻辑接口,同时隐藏该模块内部的实现细节。举例来说,我们用来读取GIF图片的API可能仅仅提供一个LoadImage()方法,后者接收一个文件名作为参数,并返回一个2维的像素数组。所有文件格式和数据压缩的细节全部隐藏在这个看似简单的接口之下。这个概念也在图1-1中进行了说明,即客户端代码只能够通过该API的公有接口访问。API公有接

4、口如图1-1中每个方框顶部的灰色区域所示。1.1.1契约和承包人我们打个比方来对API进行说明。假设你要建造自己的家,如果你想完全靠自己建造房子,可能需要全面理解建筑结构、给排水管道、电气设计、木工技术、石工技术,以及诸多其他知识。而且还需要亲自动手完成每一步工作,并且对每项任务的各个细节都要把握周到,比如是否有足够的木材铺设地板,是否用对与螺丝匹配的螺丝帽等。最后,由于该工程只有你一个人在干,一段时间只能做一件事,因此完成项目的总体时间可能会非常久。另一种解决方案则是,雇用一些专业的承包人来承担关键任务(见图1-2)。你可以

5、雇用建筑师设计房子蓝图,雇用木匠做所有木工活,雇用水管工安装水管和下水道系统,雇用电工安装电气系统。如果采取这种方法,你要分别和每个承包人沟通——告诉他们你希望完成什么工作,并协商确定价格——然后他们便可以为你做这些工作。如果幸运的话,也许你的某个朋友正好是一位承包人,并且他又愿意免费为你提供服务。这样一来,你就彻底从房屋建设所需要掌握的各种琐事中解脱出来,成为一名高层管理者,选择最好的承包人完成你的目标,并确保将每个人的工作整合到一起,这样便可建造出你心中的理想家园。图1-2使用承包人执行特定任务来建造房子1.1什么是API

6、3这个比喻用在API上非常恰当:你可以把所建造的屋子想象成你希望编写的软件程序,并且那些1承包人负责提供给你API,这些API将那些原本需要你完成的每项任务进行了抽象,并隐藏了相关工作的实现细节。你的任务则是为应用程序选择合适的API,并将它们整合到你的程序中。而你的那位技艺娴熟且愿意免费提供服务的朋友就等同于一些开源库,与其对应的还有一些需要收取使用许可费的2商业库。这个比喻甚至还可以继续扩展,如你的承包人还可以再去招聘其他的子承包人,即你使用的API还可以借助其他API完成它们自身的任务。用“承包人”做比喻在面向对象编程中

7、司空见惯。早期的一些业内人员就曾经谈论过,让某个对象为其所提供的服务或者行为定义一个契约。然后,该对象在被客户端程序请求时,这些服务。实现3方式可能是将部分任务转包给幕后的其他对象(Meyer,1987;Snyder,1986)。1.1.2C++中的API4严格来说,API只是简单描述了如何与组件进行交互。也就是说,它对某个组件进行抽象,并提供功能说明。事实上,许多软件工程师更喜欢将API这个缩写扩展为AbstractProgrammingInterface(抽象编程接口),而非ApplicationProgrammingIn

8、terface。5在C++中,API一般包括一个或多个头文件(.h)以及辅助文档。某个特定API的具体实现通常是可以被链接到最终用户程序中的库文件,它也可以是静态库,如Window操作系统下的.lib文件,MacOSX和Linux下的.a文件;又或者是动态库,如Windows

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。