星期五, 十一月 24, 2006

Delphi之面向对象程序开发

Delphi之面向对象程序开发
作者:熊建峰 网址:http://www.passtwo.com 邮箱:passtwo@gmail.com
  使用Delphi编程也有一段时间了,Delphi开发程序效率很高,但是一直感觉和VB开发程序没有什么两样,除了语法的区别之外就是在控件、窗体等基础上进行程序开发了,Delphi面向对象开发的特点没有一点体现出来。
  最近在开发一个应用程序的时候对系统代码进行查看,才恍然大悟,其实,基于Delphi的VCL组件下的开发实际上就已经遵循了面向对象的规则。举例说明如下:
例1:一个普通的Delphi窗体
我们利用Delphi进行程序开发的时候,首先就是一个窗体,设置好窗体的属性,好了,我们来看看窗体的代码。如下:
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
private
{ Private declarations }
public
{ Public declarations }
end;
首先看看这段代码,定义了一个类型TForm1,它集成自TForm类,同时有两个属性:Edit1和Button1。同时还有可以添加private和public的地方。从面向对象的角度来讲,这属于面向对象的一个典型应用(使用了集成来生成新的类型)。那么,有人会说,在delphi下本来就是这样,跟我的程序有什么关系?我又怎样才能把面向对象的方法应用到我的程序中来呢?下面我来举一个例子说明。
例2:一个简单的继承
  图1列出了一个大家比较熟悉的继承关系,图中包含三各类:水果,苹果,桔子。水果作为基类,它有两个属性:颜色和重量,另外水果都可以被食用,但是不同的水果有不同的方法,所以在水果类中有一个public abstract void 食用(),所有水果的子类必须实现该方法。苹果和桔子为水果的子类,它们集成了水果的基本特性:颜色和重量,另外它们分别实现了水果的食用()方法。它们的代码看起来如下:
unit Ufruit;

interface

uses
SysUtils, Windows, Messages, Classes, Graphics, Controls,
Forms, Dialogs;

type
TFruit = class(TObject)
private
mColor: Integer;
weight: Integer;
public
procedure eat; virtual; abstract;
end;

TApple = class(TFruit)
public
procedure eat;
end;

TOrange = class(TFruit)
public
procedure eat;
end;


implementation

{
************************************ TApple ************************************
}
procedure TApple.eat;
begin
end;

{
*********************************** TOrange ************************************
}
procedure TOrange.eat;
begin
end;


end.
  以上的代码是继承关系在Delphi下的编写,那么这些东西怎样才能和VCL组件结合起来,形成我们所熟悉的Form展现给用户呢?下面我们举例说明这个问题


图1
例三:使用Form实现水果的集成
有了我们水果的类图,我们使用Delphi的窗体来对水果集成关系做一个界面出来,首先是基类:TFruit,窗体界面如图2:

图2
它的代码如下:
unit UFruit;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TfrmFruit = class(TForm)
mColor: TEdit;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure eat; virtual; abstract;
end;

var
frmFruit: TfrmFruit;

implementation

{$R *.dfm}

procedure TfrmFruit.Button1Click(Sender: TObject);
begin
eat;
end;

end.
接下来我们实现苹果类:选择File->New->Other->project1,如图3所示

图3
点击ok后,将出现苹果类的窗体(有没有感觉和水果类很像呀^_^),更改窗体的caption和name属性,然后实现fruit的eat方法,好了,我们的苹果类就做好了,如图4:

图4
它的代码如下:
unit UApple;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, UFruit, StdCtrls;

type
TfrmApple = class(TfrmFruit)
private
{ Private declarations }
public
{ Public declarations }
procedure eat;override;
end;

var
frmApple: TfrmApple;

implementation

{$R *.dfm}

{ TfrmApple }

procedure TfrmApple.eat;
begin
Application.MessageBox ('我是苹果,吃起来是甜的!','',32);
end;

end.
同样的方法,实现桔子类,程序界面如图:

图5
代码如下:
unit UOrange;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, UFruit, StdCtrls;

type
TfrmOrange = class(TfrmFruit)
private
{ Private declarations }
public
{ Public declarations }
procedure eat;override;
end;

var
frmOrange: TfrmOrange;

implementation

{$R *.dfm}

{ TfrmOrange }

procedure TfrmOrange.eat;
begin
Application.MessageBox('我是桔子,吃起来是酸的!','',32);
end;

end.
小结
以上我们使用Delphi的窗体实现了水果类、苹果类和桔子类,这样,就将实际的业务类和VCL组件类结合起来了。使用同样的方法,我们在进行数据库编程的时候可以首先考虑进行业务建模,然后画出类图,最后使用Delphi的窗体来完成整个程序的开发。我写这篇文章旨在抛砖引玉,欢迎大家一起讨论。

星期一, 十一月 06, 2006

针对URL的SEO方法-随想飞翔

针对URL的SEO方法-随想飞翔: "以下仅是个人经验,未经任何试验验证,请自行判断以下方法是否可行,使用如下方法进行SEO,任何后果自负。

作者:Cloudream http://www.5iya.com/blog/
转载请注明以上信息

匹配指匹配用户搜索关键字。

1. 主域名匹配优于目录名或网页名匹配。
2. 英文关键字之间应使用 - 或 _ 链接。
3. 针对中文关键字,中文目录名和网页名优于英文目录名和网页名。Google、百度可识别中文目录名和网页名,但其它搜索引擎未知。中文目录名和网页名可能导致部分浏览器无法识别该URL。
"

Google Adsense 提示100条-随想飞翔

Google Adsense 提示100条-随想飞翔: "译注:少数条目有重复,不重新编排以遵从原文。

1. AdSense 收入 = 广告展示次数 x 点击率 x 点击单价 x 智能定价因素(Smart Price)
2. 广告展示次数基于你的网站流量,该项代表Adsense广告展示次数。(译注:废话-。-!)
3. 点击率为广告被点击次数÷广告展示次数,基本范围为0.1%-30%,大多数为1%-10%(译注:中文广告偏低,大陆地区平均点击率约0.2%)。
4. 点击单击为每次点击的收入,一般根据广告商付出的点击单价决定。
5. 智能定价机制为Google衡量你的网站刊登广�"

星期四, 十一月 02, 2006

计算机二级上机考试评分方法 - QQread.com 教育频道

计算机二级上机考试评分方法 - QQread.com 教育频道: "计算机二级上机考试评分方法
http://edu.qqread.com  作者:玲珑草草 来源:

  上机必读
二级上机考试部分评分方法

  自动评分系统有客观、公正的优点,但也有死板的缺点,要想得到比较好的分数,应当考虑到机器的这一特点。实际考试还有人工复查一项,由省级考试部门负责进行.但是人工复查如何进行,我们完全不得而知。因此我们下面的所有内容均不含人工复查内容,仅从考试系统本身来进行分析和说明。
  我们从多次使用中摸索�"