- 博客(19)
- 资源 (2)
- 收藏
- 关注
Qt源码剖析:信息隐藏(3)
前面我们已经看到了怎样使用标准的 C++ 代码以及 Qt 提供的 API 来达到信息隐藏这一目标。下面我们来看一下 Qt 是如何实现的。 还是以 QObject 的源代码作为例子。先打开 qobject.h,找到 QObjectData 这个类的声明。具体代码如下所示: QObjectData {public: virtual ~QObjectData() = ...
2010-06-19 12:38:56
368
Qt源码剖析:信息隐藏(2)
下面在上一篇的基础上,我们进入Qt的源代码,看看Qt4.x是如何实现 Private Classes 的。正如前面我们说的,或许你会看到很多类似 Q_D 或者 Q_Q 这类的宏。那么,我们来试着看一下这样的代码:void MyClass::setFoo( int i ){ Q_D(MyClass); d->m_foo = i;}int MyClass:...
2010-06-04 13:36:34
320
Qt源码剖析:信息隐藏(1)
如果你阅读了 Qt 的源代码,你会看到一堆奇奇怪怪的宏,例如 Q_D,Q_Q。我们的Qt源码之旅就从理解这些宏说起。 下面先看一个C++的例子。 class Person{public: Person(){} ~Person(){} string name(); void setName(string name); int age(); void s...
2010-06-02 19:08:38
284
Qt源码剖析:从 QObject 开始
本来打算把《Qt学习之路》作为一个类似教程的东西,所以就不打算把一些关系到源代码的内容放在那个系列之中啦。因此今天就先来看一个新的开始吧!这个系列估计不会进展很快,因为最近公司里面要做 flex 的项目演示,所以时间不是很多啦,并且源代码也不是那么容易看的。豆子也不是 C/C++ 出身,因此看起来也会有些麻烦。 《Qt源码剖析》作为一个独立的系列,大致就是对Qt的源代码进行分析。个人以为,...
2010-06-02 13:37:08
273
Qt学习之路(1):前言
Qt是一个著名的C++库——或许并不能说这只是一个GUI库,因为Qt十分庞大,并不仅仅是GUI。使用Qt,在一定程序上你获得的是一个“一站式”的服务:不再需要研究STL,不再需要C++的<string>,因为Qt有它自己的QString等等。或许这样说很偏激,但Qt确实是一个“伟大的C++库”。我们所使用的Qt,确切地说也就是它的GUI编程部分。C++的GUI编程同Java不...
2009-09-08 14:21:15
263
JavaScript面向对象程序设计(8): 优雅的封装还是执行的效率?
优雅的封装还是执行的效率?这是一个悖论。 优雅封装的程序看起来是那么的美妙:每个属性被隐藏在对象之后,你所能看到的就是这个对象让你看到的,至于它到底是怎么操作的,这个不需要你操心。 执行的效率就是另外一回事。就像是C语言和面向对象的C++之间的差别:C++很优雅,但是执行效率,无论是编译后的二进制代码还是运行期的内存的占用,都要比简单的C语言多出一截来。 这个问题在脚本语言...
2009-06-21 11:04:55
237
JavaScript面向对象程序设计(7): 闭包
闭包这个概念看上去很深奥,这个词在离散数学里面的意思确实比较难于理解。在这里,我们先可以把闭包理解成是一种匿名函数或者匿名类。 1. 什么是闭包? 什么是闭包?一种正式的解释是:所谓闭包,指的是一种拥有很多变量并且绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是这个表达式的一部分。 相信很多人都不会理解这个定义,因为他的学术味道太浓了——或许你喜欢从字面的语...
2009-06-16 21:01:21
205
JavaScript面向对象程序设计(6): 封装
封装是面向对象的重要概念之一。如果一个程序没有封装性,也就谈不上什么面向对象。但是,JavaScript并不像其他的语言,比如Java,有公有变量和私有变量等;在JavaScript中只有一种作用域:公有作用域。在本章中,我们将会见识到JavaScript是如何实现封装的特性的。 1. this和公有变量 首先需要理解this关键字。看下面的一段代码,你应该对此感到熟悉: ...
2009-06-12 19:56:01
186
JavaScript面向对象程序设计(5): 类
类是面向对象程序设计的核心概念之一。一个类代表了具有相似属性的一类事物的抽象。从本篇开始,我们将正式的进入JavaScript的面向对象部分。首先需要注意的是,在JavaScript中并没有“类”这一关键字——在大多数语言中都是使用class作为关键字的。所以,这里的类就成了一个概念,它没有明确的语法标志。 1. 类和构造函数 前面说过,在JavaScript中并没有明确的类的概念...
2009-06-10 21:51:08
202
JavaScript面向对象程序设计(4): 函数
在很多语言中,函数(Java里面成为方法)和对象时截然不同的两种东西。函数被定义为对象的动作,或者是全局的(像在C++中的main函数一样)。但是在JavaScript中,函数和对象的界限却显得不那么明显。 1. 函数的定义 JavaScript中有很多种定义函数的方法: function hello() { alert("Hello!"); }var hello1 =...
2009-06-09 13:48:19
173
JavaScript面向对象程序设计(3): 对象
1. 对象 对象是面向对象程序设计的基础概念之一,只需看看这个名字就已经知道了。在我们熟悉的面向对象语言中,比如Java或者C++,都有着类似的对象定义方法。比如,我们想定义一个类,名字叫Person,有两个属性:name和age,另外有一个方法,将显示出这个Person对象的名字和年龄,那么我们可以用下面的代码实现: public class Person { ...
2009-06-08 14:33:07
185
JavaScript面向对象程序设计(2): 数组
或许你会奇怪,面向对象的程序设计为什么从数组开始讲起?这是因为……其间的种种关系吧……嘿嘿,这里先卖个关子,先来看看我们熟悉的数组在JavaScript里面是什么样子的。 1. 创建数组 在JavaScript中有很多创建数组的方法。比如使用Array函数。不过这不是现在我们要讲述的。现在我们使用简单的方括号“[]”的办法来创建数组。 var objAyyar = [...
2009-06-08 14:28:55
145
JavaScript面向对象程序设计(1): 前言
1. 基于对象还是面向对象?面向对象技术是现代软件开发中的重要技术之一。面向对象变成的好处毋庸置疑,现在的主流语言如Java、C++都是面向对象的。现在的面向对象理论更多的是使用Java或C++进行描述,究其根源,在于这些语言都是传统的面向对象语言,具有面向对象理论所指明的一切特性:类、封装、继承、多态等等。 相比而言,一些动态语言如JavaSript就显得不那么面向对象——至少,在JavaScr...
2009-06-08 14:24:13
137
原创 面向对象的JavaScript(3): 函数也是对象
在很多语言中,函数或者方法和对象是两个截然不同的概念。函数是对象可以进行的动作。在面向对象理论中,函数是由对象发起的消息。对象之间的通讯需要通过消息进行,而这个消息就是我们定义的对象。但是在JavaScript中,函数和对象的概念就没有那么明确了。可以这么理解,函数就是具有与之相关联的可执行的代码的对象。先来看一个普通的例子:function foo(name) { alert(
2009-04-22 21:33:00
506
原创 面向对象的JavaScript(2): 对象就是二元组
什么是对象?这里有很多关于对象的定义:对象(object)是一件事、一个实体、一个名词,是可以获得的东西,是可以想象的能够有自己标识的任何东西。对象是类的实例化。对象是一些相关的变量和方法的软件集合。Java和C++里面的对象似乎都要使用class定义之后,然后在new出来一个。很简单,很明了。但是在JavaScript中,却并没有class这个定义。那么,JavaScri
2009-04-21 20:42:00
1894
1
原创 面向对象的JavaScript(1): 序言
学习JavaScript的时候总会说道,JavaScript是基于对象的语言,而不是面向对象的语言。基于对象和面向对象的区别,或许都可以牵扯到哲学的高度,很多人都在讨论,却一直没有定论。倘或不是为了考试或者其他什么,仅仅就实际应用而言,基于对象或者面向对象并没有什么太大的区别:语言就在那里,不管你把它定义为基于对象还是面向对象,你所要做的并没有什么改变。所以,我们就不提到底是基于对象还是面
2009-04-21 20:39:00
581
原创 使用FEST-Swing测试GUI
在Java中最常用的单元测试工具要算JUnit了。FEST-Swing是一个能够与JUnit集成的GUI测试框架。使用FEST-Swing可以更方便的对Swing进行一系列的测试。下面就说一下如何使用FEST-Swing进行测试。 首先到http://code.google.com/p/fest/downloads/list上面下载最新的FEST-Swing文件,一般文件名应该是fest
2009-04-16 13:36:00
2433
原创 MDI子窗口间的数据共享
MDI的子窗口间的数据共享是在设计MDI程序是应当注意的问题。作为MDI程序的GPF,在设计时也需要考虑这一点。GPF中,对于一些绘图工具的设置,可以设置成全局性的。也就是说,当窗口1点击“绘制直线”按钮时,窗口2当前的操作同样更改为“绘制直线”。这时,就有两种方法实现,一个是“送出去”,一个是“取过来”。 所谓“送出去”,是指的由主程序将更改的数据送发给各个子窗口。比如如下的代码
2009-04-15 14:00:00
1015
原创 使用JInternalFrame实现MDI
在Java中使用MDI的处理模式,其中的JDesktopPane和JInternalFrame已经为我们实现了这样的功能。但是,在将JInternalFrame最大化的时候,JDesktopPane和我们熟知的其他软件,如Photoshop等,具有不同的处理方式。此时可以通过这里介绍的内容弥补这一缺点,使Swing的程序更类似于本地实现。 首先先看一下怎么使用JDesktopPane和J
2008-08-28 16:36:00
1216
基于MyEclipse6.0的SSH整合 v1.1
2008-08-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人