1

我需要编写一些 Delphi 代码,但我之前没有使用 Delphi 的经验。我见过人们编写一些代码,称为unit1orunit2并使用其中的代码导入它。那么,我可以将单元视为 Java 或 C# 中的类吗?

4

3 回答 3

6

添加到梅森的答案 - 一般单元结构看起来像这样:

Unit UnitName;    
  interface
    //forward declaration of classes, methods, and variables)
    uses 
      //list of imported dependencies needed to satisfy interface declarations
      Windows, Messages, Classes;
    const 
      // global constants
      THE_NUMBER_THREE = 3;
    type // declaration and definition of classes, type aliases, etc 
      IDoSomething = Interface(IInterface)
        function GetIsFoo : Boolean;
        property isFoo : Boolean read GetIsFoo;
      end;
      TMyArray = Array [1..5] of double;
      TMyClass = Class(TObject)
        //class definition
        procedure DoThis(args : someType);
      end;
      TAnotherClass = Class(TSomethingElse)
        //class definition
      end;        
    //(global methods)
    function DoSomething(arg : Type) : returnType;        
    var  //global variables
      someGlobal : boolean;      
  implementation
    uses
      //list of imported dependencies needed to satisfy implementation
    const
      //global constants with unit scope (visible to units importing this one)
    type
      //same as above, only visible within this or importing units
    var
      //global variables with unit scope (visible to units importing this one) 
    procedure UnitProc(args:someType)
    begin
      //global method with unit scope, visible within this or importing units
      //note no forward declaration!
    end;       
    procedure TMyClass.DoThis(args : someType)
    begin
      //implement interface declarations
    end;
    function DoSomething(arg : Type) : returnType;    
    begin
      // do something
    end;
  initialization
    //global code - runs at application start 
  finalization
    //global code - runs at application end
end. // end of unit

显然,每个单元都不需要所有这些部分,但我认为这些都是可以包含的所有可能部分。当我第一次接触 Delphi 时,我花了一段时间才弄清楚这一切,我可能会用这样的地图做得很好,所以我提供它以防万一它有帮助。

于 2013-06-14T22:30:50.457 回答
6

不是。单元是 Delphi 中的源代码文件。您基本上可以将其视为一个名称空间,其范围与当前文件完全相同。

在一个单元内,您可以使用类型定义语法定义类。它看起来像这样:

type
  TMyClass = class(TParentClass)
  private
    //private members go here
  protected
    //protected members go here
  public
    //public members go here
  end;

任何方法都在类型声明下方声明,而不是内联,这使代码更易于阅读,因为您可以一目了然地看到类的组成,而不必费力地完成它的实现。

此外,每个单元都有两个主要部分,称为接口实现类型声明可以放在任一部分,但实现代码在interface中无效。这允许类似于 Java 或 C# 的公共和私有类的语言概念:在接口中声明的任何类型对使用该单元的其他单元(“公共”)都是可见的,而在实现中声明的任何类型仅在同一单元内可见。

于 2013-06-14T22:07:38.807 回答
2

在 Delphi 的 Unit 或 C++ Builder 的库中,您可以同时构建多个类。JAVA 的 IDE 经常使用一个类到一个文件,它与 delphi 或 C++ Builder 不同,但您也可以对 Delphi 或 C++ Builder 进行此练习。

每种语言的课程都有您的特点。可以以相同的方式在 POO 中思考所有人,但实施方式不同。

于 2013-06-15T23:08:30.893 回答