我刚接触面向对象编程,一团雾水..
下面的代码,我自己定义了一个Myclass,一个Mythread线程, 一个窗体Form1:
1、我想通过ID和title这两个属性去修改和读取FID的值,而title只读取Ftitle的值,是这样定义吗? 还需不需要具体方法?
2、我在Public里面定义Execute是类的主体,就是我运行我的类的主要代码,这样有问题吗?
3、可以在Form1上调用这个类吗? 怎么调用?
4、我的线程Mythread怎么调用MyClass类的FID和Ftitle两个值? 也用class.ID和class.title吗?
就这几个问题,请大家帮帮我这个新手,谢谢!
type
Myclass = class
private
FID: Integer;
Ftitle: string;
protected
property ID: integer read FID write FID;
property title: string read Ftitle;
public
procedure Execute;
end; Mythread = class(TThread)
protected
procedure Execute; override;
end; Form1 = class(TForm)
......
下面的代码,我自己定义了一个Myclass,一个Mythread线程, 一个窗体Form1:
1、我想通过ID和title这两个属性去修改和读取FID的值,而title只读取Ftitle的值,是这样定义吗? 还需不需要具体方法?
2、我在Public里面定义Execute是类的主体,就是我运行我的类的主要代码,这样有问题吗?
3、可以在Form1上调用这个类吗? 怎么调用?
4、我的线程Mythread怎么调用MyClass类的FID和Ftitle两个值? 也用class.ID和class.title吗?
就这几个问题,请大家帮帮我这个新手,谢谢!
type
Myclass = class
private
FID: Integer;
Ftitle: string;
protected
property ID: integer read FID write FID;
property title: string read Ftitle;
public
procedure Execute;
end; Mythread = class(TThread)
protected
procedure Execute; override;
end; Form1 = class(TForm)
......
function GetID:integer;
procedure SetID(Value:integer);
protected
procedure Execute; override;
public
constructor Create; // 构造函数,初始化
end;
var
my:Myclass ;
begin
my := Myclass.Create;
//下面就可以使用my实例了
end;
Mythread = class(TThread)
protected
procedure Execute; override;
public
constructor Create(ID:integer;title:string); // 构造函数,初始化
end;
constructor Mythread ad.Create(ID:integer;title:string);
begin
//线程类中可以设置参数接收ID和title
inherited Create(False);
FreeOnTerminate := True;
end;
//业务类
TMyclass = class
private
FID:Integer;
FTitle:string;
procedure setID(const Value: Integer);//为避免以后业务规则的变动,最好加上这个缓冲函数
function getID:Integer;
//如果是多线程,在这里加一些线程同步对象,注意同步保护
public
constructor Create(////);
destructor Destroy;override;
procedure Start;
end;
procedure TMyclass.Start;
var
Mythread:TMythread;
begin
Mythread:=TMythread.Create(self);
Mythread.Resume;
end;
//线程类
TMythread = class(TThread)
private
Myclass:TMyclass;
procedure DoTheHardWork;
protected
procedure Execute; override;
public
constructor Create(para1:TMyclass);
destructor Destroy; override;
end;constructor TMythread.Create(para1:TMyclass);
begin
//.......
Myclass=para1;
end;procedure TMythread.Execute;
begin
DoTheHardWork;
end;procedure TMythread.DoThehardWork;
begin
myclass.XXXXX:=XXXX//做业务逻辑处理
end;//UI调用
Myclass:=TMyclass.Create;
Myclass.XXXX:=XXXX;
MyClass.CCCC:=XXXX;
//如果在类内有委托,可做一个过程赋到类中。......
MyClass.Start;