C++程序设计:原理与实践(进阶篇)17.1 为什么要使用图形

简介:

摘要

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程序的实现方法,你可能会认为它们是不可思议的魔法,这显然偏离了本书的一个基本目标。

相关文章
|
1月前
|
C++
【C++】深入解析C/C++内存管理:new与delete的使用及原理(二)
【C++】深入解析C/C++内存管理:new与delete的使用及原理
|
1月前
|
编译器 C++ 开发者
【C++】深入解析C/C++内存管理:new与delete的使用及原理(三)
【C++】深入解析C/C++内存管理:new与delete的使用及原理
|
1月前
|
存储 C语言 C++
【C++】深入解析C/C++内存管理:new与delete的使用及原理(一)
【C++】深入解析C/C++内存管理:new与delete的使用及原理
|
1月前
|
存储 C++
【C++篇】C++类和对象实践篇——从零带你实现日期类的超详细指南
【C++篇】C++类和对象实践篇——从零带你实现日期类的超详细指南
24 2
【C++篇】C++类和对象实践篇——从零带你实现日期类的超详细指南
|
1月前
|
存储 编译器 C语言
C++类与对象深度解析(一):从抽象到实践的全面入门指南
C++类与对象深度解析(一):从抽象到实践的全面入门指南
49 8
|
1月前
|
C++
C++番外篇——虚拟继承解决数据冗余和二义性的原理
C++番外篇——虚拟继承解决数据冗余和二义性的原理
39 1
|
2月前
|
C++
c++继承层次结构实践
这篇文章通过多个示例代码,讲解了C++中继承层次结构的实践应用,包括多态、抽象类引用、基类调用派生类函数,以及基类指针引用派生类对象的情况,并提供了相关的参考链接。
|
5月前
|
关系型数据库 MySQL 测试技术
技术分享:深入C++时间操作函数的应用与实践
技术分享:深入C++时间操作函数的应用与实践
47 1
|
5月前
|
存储 JavaScript 前端开发
程序与技术分享:C++程序设计实验考试准备资料(2019级秋学期)
程序与技术分享:C++程序设计实验考试准备资料(2019级秋学期)
|
5月前
|
C++
技术经验分享:C++程序设计的技巧
技术经验分享:C++程序设计的技巧
38 0
下一篇
无影云桌面