第5章 集合、常数及运行时类型信息编程.pdfVIP

第5章 集合、常数及运行时类型信息编程.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第 5 章 集合、常数与运行时类型信息编程 定义好的抽象,可以解决许多编程方面的障碍。在面向对象语言中,所谓的抽象就是“创建类”。在 某种程度上确实如此。许多项目的失败就是因为创建的类太少,结果形成了一些庞大的类,它们做的事情 太多,因而难于维护。 好的抽象也可以在较低层次上定义。像 Delphi 这样的强类型化编译器、定义在问题域中有具体意义的 类型等,都可能是有帮助的。一般的,进行较为精确的类型定义,通常可以更好地定义类的属性。大多数 属性的特征可以通过整数和数组进行表达,但相比而言,由内建类型派生而来的集合、范围、常数、数组 以及枚举等更有意义。 Object Pascal 是一种具有很强的表达能力的面向对象编程语言,它有助于定义在特定问题域的上下文 中具有意义的类型。例如,如果只有某个特定范围内的值有意义,就定义范围、集合或枚举类型来命名这 些值所代表的数据。本章示范了如何使用 Object Pascal 中的这些概念,以有助于定义好的抽象。这些技术 可以使您的代码具有更强的可读性,而且比使用内建数据类型所需的错误检查代码要少。 5.1 不可变常数 常数很好用。常数是现存的最为可靠的代码之一。定义常数之后,无论如何其值都是可以依赖的。不 用担心,不存在偶然或有意的误用。在 Delphi 中有许多方法来使用常数,以使得代码更加可靠。 注意:Delphi支持类型化常数,它们的值是可变的。关于可赋值的常数,更多的信息请参见 5.1.3节“使用 const创建静态本地变量”。 5.1.1 全局与本地常数 当变量定义在本地作用域中时,可以访问该作用域的代码均可使用该变量。临时使用全局或本地变量 可能导致有害的问题,特别是对于多线程应用程序,其中一个线程可能依赖于某个值,而另外一个线程正 在改变该值。如果一个值需要保持不变,则应该用 const 来表示。全局常数是定义在单元的接口部分的常 数。而本地常数是定义在实现部分的常数。 另外,可能会在许多地方重用的值应该定义为常数。假定 Pi 的值在您的整个程序中都是有意义的,则 应在接口部分将名字 Pi 作为常数引入,并将其值初始化为具有正确的有效数字位数的 Pi 值,以满足您的 需要。 注意:新的单元 ConvUtils.pas包含有数以百计的常数和转换单元。尽管它包含了秒差距与 米的转换常数值,但并未包含 Pi 的常数值。System.pas 单元中包含了函数 Pi,返回 Pi 值 的 extended类型的浮点值。 我们的目标是在尽可能狭窄的作用域中定义常数。如果一个常数只在过程块中需要,那么该过程就是 合适的作用域。使作用域变窄背后的思想在于,要尽量减少使用代码的程序员在理解代码目的时所需要进 行思考的事物的数目。常数的语法部分依赖于其所定义的上下文。本地、全局、过程常数的通常形式如下: const name = value; 或, const name : type = value; const 是关键字,表示其后是常数。对于一个常数列表中的所有常数,仅需要键入 const 一次。例如, 在实现部分定义三个常数,如下所示。 第 5 章 集合、常数与运行时类型信息编程 108 implementation const I : Integer = 3; S = Bachman Turner Overdrive; F : Double = 4000000000000.0; 有许多途径来使用常数,可以使得程序更加可靠。对于常数的所有变体的语法规则,请察看上下文帮 助,在索引中查找 grammar 。更多的例子见下文。 5.1.2 常数参数 当过程不应改变某个参数的值时,应把该参数声明为常数参数。如果包括了 const 限定符,可以保证 该值不被改变。保证总是难于得到,因此能够得到保证确实不错。常数参数可以有默认值。下面的代码演 示了具有默认值的常数参数。 procedure DisplayBandName( const Value : String = R.E.O. ); begin ShowMessage( Value ); end; Procedure So

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档