摘要
Programming: Principles and Practice Using C++, Second Edition
一个显示模型
直到20世纪30年代,世界才从黑白变成彩色的。
——Calvin’s dad
本章描述了一个显示模型(GUI的输出部分),并给出了使用方法和一些基本概念,如屏幕坐标、线和颜色等。Line、Lines、Polygon、Axis和Text都是Shape的实例。Shape是内存中的一个对象,我们可以将其显示在屏幕上并进行适当的操作。后面两章将进一步探讨这些类,第18章侧重类的实现,第19章侧重设计问题。
17.1 为什么要使用图形
为什么我们要用四章篇幅介绍图形,一章篇幅介绍GUI(图形用户界面)?毕竟,本书主要讲述程序设计而不是图形学。实际上有很多非常有趣的话题,我们不可能一一讨论,在这里只是介绍与图形有关的内容。那么,为什么要使用图形呢?从本质上讲,图形学是一个学科,在其学习过程中,我们可以对软件设计、程序设计及其语言特性等重要的领域进行深入的探讨。
图形很有用。虽然在使用GUI时,更多工作仍在于程序设计而非图形,更多在于软件设计而非编写代码。但是,图形在很多领域都非常重要,例如,对于科学计算、数据分析或者任何一个量化问题,没有数据图形化功能是不可想象的。第20章给出了一个简单(但通用)的数据图形化工具。
图形很有趣。在多数计算领域中,一段代码的效果是很难立刻呈现出来的,即便最后代码没有bug了,也无法立刻看出来。这时,即使图形没有用,我们也会倾向于使用图形界面来获得即时效果。
图形提供了许多有趣的代码。通过阅读大量程序代码,可以找到一种对代码好坏的判断标准,就像要成为好的作家必须阅读大量书籍、文章和高质量的报纸一样。由于程序代码与屏幕显示有某种直接关系,图形代码比复杂程度接近的其他类别的代码更易于阅读。经过本章几分钟的介绍你就能够阅读图形代码,再经过第18章的学习就能编写图形代码。
图形设计实例非常丰富。实际上,设计和实现一个好的图形和GUI库是很困难的。图形领域中有非常丰富的具体、贴近实际的例子,可供学习设计策略和设计技术。通过相对较少的图形和GUI代码,就能展示包括类的设计、函数的设计、软件分层(抽象)、库的创建等在内的许多技术。
图形有利于解释面向对象程序设计的概念及其语言特征。与传闻相反,面向对象程序最初并不是为了图形化应用所设计的(参见第22章),但它确实很快就应用到图形领域中,而且图形化应用提供了一些非常易于理解的面向对象设计实例。
一些关键的图形学概念不是那么简单直白的。因此应该在教学中进行讲授,而不是留待你靠自己的主动性(以及耐心)去学习理解。如果我们不展示图形和GUI程序的实现方法,你可能会认为它们是不可思议的魔法,这显然偏离了本书的一个基本目标。