冒号和他的学生们(连载23)——数据抽象 - 编程入门网
ueue_add(Queue, ItemType);
/** 移除队列头部。成功返回0,否则返回-1。*/
int queue_remove(Queue, ItemType*);
/** 队列是否为空?*/
int queue_empty(Queue);
/** 队列长度 */
int queue_length(Queue);
/** 返回(但不移除)队列头部。成功返回0,否则返回-1。 */
int queue_head(Queue, ItemType*);
冒号和他的学生们(连载23)——数据抽象(2)时间:2011-07-03 BlogJava 郑晖冒号解释:“特意用C语言是为了表明ADT不独OOP专有。由于C不支持异常(exception),因此用非零返回值来表示错误发生。我们尚未定义队列类型QueueType,其核心是队列的成员集合。无论是用数组来实现,还是用链表来实现,用户根本不需关心。这便是队列的抽象所在——用户不应知道也不必知道它的具体实现,只能通过指定接口来进行‘暗箱操作’。这样经过数据抽象,队列的本质特征由API展现,非本质特征则屏蔽于客户的视野之外。” 问号问道:“这种数据抽象与前面提到的参数抽象和规范抽象有何关系?” “参数抽象使得数据接口普适化,规范抽象使得数据接口契约化。”冒号的回答简明扼要,“此外,一个完整的数据抽象除了对每个接口作规范说明外,还需对该数据类型作整体规范说明,OOP中的类注释文档即作此用。” 逗号要求:“能不能给出完整的实现代码?光有接口没实现,似乎不太过瘾。” 冒号戏言:“我感觉你在把程序当烟抽——光有烟嘴的接口,没有香烟的实现,的确不太过瘾。” 众笑。 冒号借题发挥:“许多程序员都有一个通病:重实现,轻接口。在编写代码时表现为:不等接口设计好就技痒难忍,揎拳捋袖地开始大干;在阅读代码时表现为:看到API文档便恹恹欲睡,看到代码便两眼放光。务必谨记:接口是纲,实现是目。纲若不举,目无以张。也就是常说的:‘Programming to an Interface, not an Implementation’。不过为满足你们的要求,我还是写了一段基于循环数组的实现代码。” 逗号正感当靶子的滋味不好受,一见代码便心旌摇荡,宠辱皆忘了。 /* 队列类型定义*/
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |