《Object-Oriented Programming With ANSI-C》之序言

ANSI-C面向对象程序设计

       前言

 


没有万能的编程技术

没有只产生正确的结果的编程语言

不是每个项目的编程都是从零开始的

 

 


面向对象程序设计几乎是当今包治百病的——虽然它已经发展了超过10年之久。作为一种核心语言,一些技术专家对它的研究已经付出很多,从而形成了很好的编程规则,这些规则我们一直引以为鉴了长达20年之久。C++EiffelOberon-2Smalltalk… 由你选择)是一种新的编程语言,因为它是面向对象的——尽管你不需要使用它或许你不想用(或不知道怎么用),但是你却能够使用平凡的ANSI-C (标准化)像使用这些面向对象语言一样的方便。在项目当中,仅仅面向对象语言允许代码重用——虽然一些子程序的思想就像计算机的发展历史一样久远,好的程序员却总是会利用工具箱或库来使用这些子程序。

       这本书的本意并不是赞扬面向对象程序或批判老的编程规则。我们只是简单的使用ANSI-C来发掘面向对象语言是怎么实现的,技巧方法是什么,为什么它能够帮助我们解决比较大的问题,和我们怎么能利用普遍性方法和编程来更早的捕获错误。沿着这么一个宗旨,我们会邂逅一些行话类,继承,实例,链接,方法,对象,多态等等不过我们剥去其神奇的外衣,看如何转化为一种我们一直都知道和做过的事情。

       我很乐意的发掘ANSI-C(标准化)是一种全面的面向对象语言。为了能够分享这种乐趣,在你开始之前,你需要适当的对ANSI-C 有一定的流利程度熟悉结构体,指针,原型,并且掌握函数指针是必须的。贯穿全文,你会遇见所有的新说法 依照OrwellWebster的话:“设计是为了缩小思想的广度”并且我会尽力证明它是怎样的结合所有的这些你一直想连续使用的好的方法,结果,你很可能成为一个精通ANSI-C的程序员。

       前六章建立ANSI-C面向对象程序设计的基础。我们将以一个隐藏抽象数据结构的很精确的信息开始,然后通过结构体的扩展,基于动态链接和代码继承的方式来增加功能属性。最终把他们放到一起构成一个可继承的类使得代码更加容易维护。

       编程需要规则。好的程序遵循很多规则,大量的规则,标准,自我防御的方式往往能使事情做对做好。程序员要学会使用工具。优秀的程序员编写工具去处理日常一些编程例程。ANSI-C 面向对象程序要求有一定数量固定的代码 即名称改变,数据结构没有变。因此,在第七章我们建立了一个小的预处理器创建一个必须的样板,它更像另外一种新的面向对象语言(也许是yanoodl)但是它并不被如此看待,OOC(面向对象程序设计ANSI-C)拓新而出,更让我们专注于在解决问题上使用创造性方面的一种新技巧。OOC有很强的可塑性。我们设计出它,理解它并且可改变它,能够依照我们的意愿去写ANSI-C代码。

       接下来的章节中将精炼我们的技术。在第八章节,我们增加了动态类型检查预先的捕获异常。第九章中我们编排了自动初始化机制防止其它缺陷类的产生。第十章,我们介绍了多态以及怎样相互协作达到简化的目的。例如:产生标准主程序的日常事务。更多的章节将与使用类的方法,存储,和加载结构体数据相关联,这些结构体数据遵循一致性策略。并且通过嵌套异常处理器系统来做到一致性错误恢复自愈。

       最终,在最后一章节中,我们避开ANSI-C的局限性并且实现了一个鼠标操作的计算器,首先对于 curses 终端,接下来应用于 X Window 系统(如果你想了解什么事curses x window 查阅相关资料) 这个例子清晰的证明了我们使用类和对象所做的设计和实例的优美性,虽然我们必须处理外在的库和类层次特性。

       在每个章节的前面都有一个概要说明,在这个概要中我会给出一个纲要,来介绍章节中的主要内容和接下来该做什么,这对于略读此章的读者很有帮助。大部分章节建议做一下练习;但是这并不意味着很正规,因为我们是从零开始建立这样的技术。我已经避免制造和使用庞大的类库,即使一些例子这样做似乎很有利。如果你想更好的理解面向对象程序设计,掌握这项技术和考虑代码设计显得尤为重要;依靠其他人的类库来做开发是稍后小菜一碟的事。

       这本书的一个重要的组成部分是附上了代码软盘---- 使用DOS文件系统,包含了单独的SHELL命了来创建所有章节中的代码。软盘上有一个ReadMe 文件----再你生成代码之前先来阅读一下它。编程,就像使用如 diff 的程序,跟踪基类的演变对你会很有好处的。OOC在接下来的章节中会有很好的体现。

       这些技术的描述出自我对C++的觉悟,当我需要使用面向对象技术去实现交互式编程语言时。并且意识到在C++中不能铸造一个便携式的实例。我转向我所了解的,即ANSI-C,我能够完全做我必须做的。我已经在教学过程中把这项技术分享给很多人,包括我的工作场所。而且其他人已经使用这些方法很好了完成了他们的工作。这本书就驻留于此,因为对我的脚注却显得尤为暗淡。Brian Kernighan ,我的出版社,Hans-Joachim NiclasJohn等等,并没有鼓励我出版这些笔记(有机会,在适当的时候会从新组织一次),我感谢他们以及帮助我去继续这本书的人,最后,感谢我的家人——并且,不,面向对象机制不会取代“切片面包”。

Hollage, October 1993

Axel-Tobias Schreiner

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
没有任何一种编程技术能解决所有问题; 没有任何一种编程语言只输出正确的结果; 没有任何一个程序员需要从零开始一个项目。 -----这三句似曾相识? 这是一本17年前的书,写的是用纯C来实现OOP。。。 亘古的C,永远的C。。。 关天C,我没有其它要说的了。 关于这个资源,还有一句:原书+源码,全在这儿 我希望10年后我还在读它,看它。。。 No programming technique solves all problems. No programming language produces only correct results. No programmer should start each project from scratch. Object-oriented programming is the current cure-all — although it has been around for much more then ten years. At the core, there is little more to it then finally applying the good programming principles which we have been taught for more then twenty years. C++ (Eiffel, Oberon-2, Smalltalk ... take your pick) is the New Language because it is object-oriented — although you need not use it that way if you do not want to (or know how to), and it turns out that you can do just as well with plain ANSI-C. Only object-orientation permits code reuse between projects — although the idea of subroutines is as old as computers and good programmers always carried their toolkits and libraries with them. This book is not going to praise object-oriented programming or condemn the Old Way. We are simply going to use ANSI-C to discover how object-oriented programming is done, what its techniques are, why they help us solve bigger problems, and how we harness generality and program to catch mistakes earlier. Along the way we encounter all the jargon — classes, inheritance, instances, linkage, methods, objects, polymorphisms, and more — but we take it out of the realm of magic and see how it translates into the things we have known and done all along. I had fun discovering that ANSI-C is a full-scale object-oriented language. To share this fun you need to be reasonably fluent in ANSI-C to begin with — feeling comfortable with structures, pointers, prototypes, and function pointers is a must. Working through the book you will encounter all the newspeak — according to Orwell and Webster a language ‘‘designed to diminish the range of thought’’ — and I will try to
Object-oriented programming with ABAP Objects(基于ABAP对象的面向对象编程)是SAP开发平台ABAP中的一种编程范例。它利用面向对象的思想,将数据(对象的属性)和行为(对象的方法)封装在一起,以便更好地组织和管理代码。 在ABAP Objects中,可以定义类(class)来描述一个对象的特征和行为。通过类的实例化,可以创建具体的对象,并调用对象的方法来实现特定的功能。这种面向对象的编程模式使得代码更加模块化、可重用,并且更易于维护和扩展。 在ABAP Objects中,支持面向对象的四大特性:封装、继承、多态和抽象。封装可以将对象的内部状态和行为隐藏起来,只暴露必要的接口;继承可以通过创建子类来扩展和重用已有类的特性;多态可以实现在不同的对象上调用相同的方法,产生不同的行为;抽象可以定义接口规范,让具体的类去实现。 通过ABAP Objects,开发人员可以更加灵活地进行程序设计和实现,也能够更好地应对复杂的业务需求。同时,由于ABAP Objects与SAP系统集成紧密,因此可以很方便地访问和操作SAP系统中的数据和服务,为企业的业务流程提供更多的可能性。 总之,Object-oriented programming with ABAP Objects在SAP开发中扮演着重要的角色,它为开发人员提供了更加高效、可维护的编程模式,也为企业的信息化建设带来了更多的价值和机遇。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值