我刚接触面向对象编程,一团雾水..
下面的代码,我自己定义了一个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)
  ......

解决方案 »

  1.   

    读取/设置属性使用property ID:integer read GetID write SetID;  GetID 和WriteID写在类的private下即可
    function GetID:integer;
    procedure SetID(Value:integer);
      

  2.   

    你的线程类好像不全  Mythread = class(TThread)
      protected
        procedure Execute; override;
      public
        constructor Create;  //  构造函数,初始化
      end;
      

  3.   

    窗体调用
    var
      my:Myclass ;
    begin
      my := Myclass.Create;
      //下面就可以使用my实例了
    end;
      

  4.   

    第四个问题可以在线程创建时,作为参数传入,那样需要修改线程类的Create
      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;
      

  5.   


    //业务类
    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;