我需要编写一些 Delphi 代码,但我之前没有使用 Delphi 的经验。我见过人们编写一些代码,称为unit1
orunit2
并使用其中的代码导入它。那么,我可以将单元视为 Java 或 C# 中的类吗?
3 回答
添加到梅森的答案 - 一般单元结构看起来像这样:
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 时,我花了一段时间才弄清楚这一切,我可能会用这样的地图做得很好,所以我提供它以防万一它有帮助。
不是。单元是 Delphi 中的源代码文件。您基本上可以将其视为一个名称空间,其范围与当前文件完全相同。
在一个单元内,您可以使用类型定义语法定义类。它看起来像这样:
type
TMyClass = class(TParentClass)
private
//private members go here
protected
//protected members go here
public
//public members go here
end;
任何方法都在类型声明下方声明,而不是内联,这使代码更易于阅读,因为您可以一目了然地看到类的组成,而不必费力地完成它的实现。
此外,每个单元都有两个主要部分,称为接口和实现。类型声明可以放在任一部分,但实现代码在interface中无效。这允许类似于 Java 或 C# 的公共和私有类的语言概念:在接口中声明的任何类型对使用该单元的其他单元(“公共”)都是可见的,而在实现中声明的任何类型仅在同一单元内可见。
在 Delphi 的 Unit 或 C++ Builder 的库中,您可以同时构建多个类。JAVA 的 IDE 经常使用一个类到一个文件,它与 delphi 或 C++ Builder 不同,但您也可以对 Delphi 或 C++ Builder 进行此练习。
每种语言的课程都有您的特点。可以以相同的方式在 POO 中思考所有人,但实施方式不同。