万象云档 本次搜索耗时 1.515 秒,为您找到 223 个相关结果.
  • 第5章 隐藏实现过程

    第5章 隐藏实现过程 第5章 隐藏实现过程 “进行面向对象的设计时,一项基本的考虑是:如何将发生变化的东西与保持不变的东西分隔开。” 这一点对于库来说是特别重要的。那个库的用户(客户程序员)必须能依赖自己使用的那一部分,并知道一旦新版本的库出台,自己不需要改写代码。而与此相反,库的创建者必须能自由地进行修改与改进,同时保证客户程序员代码不会受到那些变...
  • 5.2.4 图形的事件处理

    5.2.4 图形的事件处理 5.2.4 图形的事件处理 面向对象的概念是和事件驱动编程联系在一起的。所谓事件是指在程序执行过程中发生的事情,例如点击了鼠标左键、按下了键盘上的回车键之类。某个对象可以与特定事件绑定 在一起,这样当特定事件发生时,可以调用特定的函数来处理这个事件。 画布及画布上的图形都是对象,都可以与交互事件绑定,这样用户可以利用键盘、...
  • 4.1 有序数组的查找

    4.1 有序数组的查找 题目描述 分析与解法 总结 4.1 有序数组的查找 题目描述 给定一个有序的数组,查找某个数是否在数组中,请编程实现。 分析与解法 一看到数组本身已经有序,我想你可能反应出了要用二分查找,毕竟二分查找的适用条件就是有序的。那什么是二分查找呢? 二分查找可以解决(预排序数组的查找)问题:只要数组中包含T(即要查找的值...
  • 6.5 几种高级数据结构*

    6.5 几种高级数据结构* 6.5 几种高级数据结构* 以上介绍的各种数据集合体都是 Python 直接提供的数据类型,属于基本的数据结构。 本节介绍几种高级数据结构,编程语言不直接支持它们的表示和操作,需要程序员自己实现。
  • 6.6 累积开发

    6.6 累积开发 6.6 累积开发 继承的一个好处是它支持“累积开发”,允许我们引入新的代码,同时不会为现有代码造成错误。这样可将新错误隔离到新代码里。通过从一个现成的、功能性的类继承,同时增添成员新的数据成员及方法(并重新定义现有方法),我们可保持现有代码原封不动(另外有人也许仍在使用它),不会为其引入自己的编程错误。一旦出现错误,就知道它肯定是由于...
  • 6.4 到底选择组合还是继承

    6.4 到底选择组合还是继承 6.4 到底选择组合还是继承 无论组合还是继承,都允许我们将子对象置于自己的新类中。大家或许会奇怪两者间的差异,以及到底该如何选择。 如果想利用新类内部一个现有类的特性,而不想使用它的接口,通常应选择组合。也就是说,我们可嵌入一个对象,使自己能用它实现新类的特性。但新类的用户会看到我们已定义的接口,而不是来自嵌入对象的接...
  • 7.1 向上转换

    7.1 向上转换 7.1.1 为什么要向上转换 7.1 向上转换 在第6章,大家已知道可将一个对象作为它自己的类型使用,或者作为它的基类型的一个对象使用。取得一个对象引用,并将其作为基类型引用使用的行为就叫作“向上转换”——因为继承树的画法是基类位于最上方。 但这样做也会遇到一个问题,如下例所示(若执行这个程序遇到麻烦,请参考第3章的3.1.2小节...
  • 第16章 设计模式

    第16章 设计模式 第16章 设计模式 本章要向大家介绍重要但却并不是那么传统的“模式”(Pattern)程序设计方法。 在向面向对象程序设计的演化过程中,或许最重要的一步就是“设计模式”(Design Pattern)的问世。它在由Gamma,Helm和Johnson编著的《设计模式》一书中被定义成一个“里程碑”(该书由Addison-Wesley...
  • 1.4 方案的重复使用

    1.4 方案的重复使用 1.4 方案的重复使用 创建并测试好一个类后,它应(从理想的角度)代表一个有用的代码单位。但并不象许多人希望的那样,这种重复使用的能力并不容易实现;它要求较多的经验以及洞察力,这样才能设计出一个好的方案,才有可能重复使用。 许多人认为代码或设计模式的重复使用是面向对象的程序设计提供的最伟大的一种杠杆。 为重复使用一个类,最简...
  • 2.2.4 数学库模块 math

    2.2.4 数学库模块 math 2.2.4 数学库模块 math 对于数值类型,除了加减乘除等基本运算之外,Python 还以“数学库”的形式提供了 很多数学函数,以丰富编程所需的数学计算手段。所谓“库”其实是专业程序员编写的 Python 模块,其中定义了很多有用的函数,应用程序可以使用库中的函数,就好像是应用程序自己 定义的函数一样。 为了使用...