« 上一篇下一篇 »

抽象的过程

所有的编程语言都提供抽象,甚至可以这么说,你能解决问题的复杂程度直接与抽象的种类与质量相关。我们所说的种类是指:你到底抽象了些什么。汇编语言是对计算机的抽象,随后许多所谓的命令语言(C和BASIC等)是对汇编语言的抽象。这些语言较汇编语言有了巨大的进步,但这仍然是一种初级的抽象,仍然要求你从计算机的角度,而不是从待解决的问题的角度来思考。程序员必须在机器模型与待解决的问题的模型之间建立关联。处理这种映射所带来的压力,以及编程语言对此无能为力的现实,就是所谓的编程方法的行业。

面向对象的方法则更进了一步,它为程序员提供了能在问题空间表述各种元素的工具。这种表述是非常通用的,这样程序员就不会被限制在某类特殊问题上了。我们将问题空间的元素同它在解决空间的表述称为对象。这一思想要点是,通过往程序里添加新的对象,可以让它适用于问题的各种变例。于是当你阅读代码的时候,它也在向你讲述它要解决的问题,这比我们见过的语言抽象更为强大。

因此,oop允许你以问题的角度,而不是以要解决问题的计算机的角度来描述问题。不过它与计算机还是有联系,每个对象看上去都像计算机——它有状态,有可以让你来执行的操作。但看上去这种对真实世界的模拟还不算太糟——在真实世界中对象也都有自己的特点和行为。

« 上一篇下一篇 »