全部对外公开了,那么你这个类存在就无任何意义了。
属性:
类与类之间传递数据,我推荐使用属性property而不是直接用变量来传递。
例如:TControl类的Left、Top、Width、Height四个属性,如果它是以变量的方式来提供给外部直接使用的话,我们设想一下一个这样的需求:假如我们要改变一下组件宽度,并且改变宽度后要在组件最右边绘制一张位图,那么当外界改变了组件宽度时,由于这个变量是直接供外界读写的,它在被写而发生改变的时候,组件无法得到通知,因此也就无法实现重画位图的需求了。
而在属性定义的时候,你必须指定一个read限定符和一个write限定符(read 或 write 都可选但你至少必须指定一个限定符),当你为一个属性的write限定符指定了一个方法(Delphi中必须是一个过程)时,当你执行如:TControl.Width:= 0;这样的代码时,编译器会自动为你调用write指定的方法,这样我们就可以在属性发生改变的时候让类去执行一些有关的操作,换言之就是类可以得到属性值被修改的通知而做出相应的动作。
同样,当我们需要让外部访问类中私有部分的一个变量但不允许改动的时候,我们可以为类添加一个属性,并只指定read限定符来指向这个变量,不用write限定符,从而限制为只读。
其他:
我们在工作中,往往接到的需求是一个复杂的庞大的问题,而我们首先要做
的就是分解这个
问题,把一个大的问题分解成若干个小的问题,并把他抽象的提取出来,这就是我们类功能的雏形。
举个简单的例子,比如工程师建房子,房子有一层的小平房,有一百层大厦,但是我们可以换个角度去看这个问题:不管你建多少层楼,房子都是由X个房间组成的,区别只在于房间数量的不同而已。这就是他们的共性。
这里,再说一句,接到一个新的项目以后,第一件事不是立即兴奋的开始写代码,而是首先要做规划。
继续拿做房子来说(-_-|)任何一个工程师,在接到新的工程的时候,应该不会有任何一个人会先考虑怎么砌砖吧。或许你会因为项目小而放弃准备期,但是我想说一下,项目不分大小,准备工作是必不可少的。
曾经我听过一个小笑话:说有一个人,做一个鸟笼子,由于他只看过一次鸟笼子,而在他开始做之前又没有去实际的看过笼子的成品,而导致他的鸟笼做完后,竟然发现他犯了一个最离谱的错误——笼子上没有门。
这个小笑话其实也说明了预先的准备工作的重要性了。