⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 delclass.sct

📁 c#设计模式WithCla
💻 SCT
字号:
CLASS_USER1
unit CLASS_NAME;

interface
CLASS_USER2
CLASS_USER3

uses SysUtils, Messages, Classes [, BASE_CLASS ] [, ASSOCIATION_ONE_CLASS ][, AGGREGATION_ONE_CLASS ][, ASSOCIATION_MANY_CLASS ][, AGGREGATION_MANY_CLASS ][,INCLUDE_FILE ] ;

type
    T$CLASS_NAME = class [(T$BASE_CLASS)]

private
SELECT_WHEN ATTRIBUTE_ACCESS == private [COLUMN_TAB(4) F$ATTRIBUTE_NAME : ATTRIBUTE_TYPE ; ]
[COLUMN_TAB(4) ASSOCIATION_ONE_NAME : T$ASSOCIATION_ONE_CLASS ; {1:1 Association Field }]
[COLUMN_TAB(4) AGGREGATION_ONE_NAME : T$AGGREGATION_ONE_CLASS ; {1:1 Aggregation Part Field}]
[COLUMN_TAB(4) ASSOCIATION_MANY_NAME : TList ; {1:Many Association Field} ]
[COLUMN_TAB(4) AGGREGATION_MANY_NAME : TList ; {1:Many Aggregation Part Field} ]

SELECT_WHEN OPERATION_ACCESS == private LOGICAL_AND OPERATION_IS_PROCEDURE [
    procedure OPERATION_NAME PASCAL_OPERATION_PARAMETERS_WITH_VAR ; PASCAL_OPERATION_VIRTUAL PASCAL_OPERATION_ABSTRACT PASCAL_OPERATION_OVERRIDE PASCAL_OPERATION_MESSAGE]

SELECT_WHEN OPERATION_ACCESS == private LOGICAL_AND OPERATION_IS_FUNCTION [
    function OPERATION_NAME PASCAL_OPERATION_PARAMETERS PASCAL_OPERATION_RETURN_TYPE ; PASCAL_OPERATION_VIRTUAL  PASCAL_OPERATION_ABSTRACT PASCAL_OPERATION_OVERRIDE]

protected
SELECT_WHEN ATTRIBUTE_ACCESS == protected 
[COLUMN_TAB(4) F$ATTRIBUTE_NAME : ATTRIBUTE_TYPE ; ]

SELECT_WHEN OPERATION_ACCESS == protected LOGICAL_AND OPERATION_IS_PROCEDURE [
    procedure OPERATION_NAME PASCAL_OPERATION_PARAMETERS_WITH_VAR ; PASCAL_OPERATION_VIRTUAL PASCAL_OPERATION_ABSTRACT PASCAL_OPERATION_OVERRIDE PASCAL_OPERATION_MESSAGE]

SELECT_WHEN OPERATION_ACCESS == protected LOGICAL_AND OPERATION_IS_FUNCTION [
    function OPERATION_NAME PASCAL_OPERATION_PARAMETERS PASCAL_OPERATION_RETURN_TYPE ; PASCAL_OPERATION_VIRTUAL  PASCAL_OPERATION_ABSTRACT PASCAL_OPERATION_OVERRIDE]

[    function Get$ATTRIBUTE_NAME : ATTRIBUTE_TYPE; {Get Accessor Function }]

[    procedure Set$ATTRIBUTE_NAME ( a$ATTRIBUTE_NAME : ATTRIBUTE_TYPE ); {Set Accessor Procedure }]

published
SELECT_WHEN ATTRIBUTE_ACCESS == published [COLUMN_TAB(4) F$ATTRIBUTE_NAME : ATTRIBUTE_TYPE ; ] 

SELECT_WHEN OPERATION_ACCESS == published LOGICAL_AND OPERATION_IS_PROCEDURE [
    procedure OPERATION_NAME PASCAL_OPERATION_PARAMETERS_WITH_VAR ; PASCAL_OPERATION_VIRTUAL PASCAL_OPERATION_ABSTRACT PASCAL_OPERATION_OVERRIDE PASCAL_OPERATION_MESSAGE]

SELECT_WHEN OPERATION_ACCESS == published LOGICAL_AND OPERATION_IS_FUNCTION [
    function OPERATION_NAME PASCAL_OPERATION_PARAMETERS PASCAL_OPERATION_RETURN_TYPE ; PASCAL_OPERATION_VIRTUAL  PASCAL_OPERATION_ABSTRACT PASCAL_OPERATION_OVERRIDE]

public
SELECT_WHEN ATTRIBUTE_ACCESS == public [COLUMN_TAB(4) F$ATTRIBUTE_NAME : ATTRIBUTE_TYPE ; ] 

SELECT_WHEN OPERATION_ACCESS == public LOGICAL_AND OPERATION_IS_PROCEDURE [
    procedure OPERATION_NAME PASCAL_OPERATION_PARAMETERS_WITH_VAR ; PASCAL_OPERATION_VIRTUAL PASCAL_OPERATION_ABSTRACT PASCAL_OPERATION_OVERRIDE PASCAL_OPERATION_MESSAGE]

SELECT_WHEN OPERATION_ACCESS == public LOGICAL_AND OPERATION_IS_FUNCTION [
    function OPERATION_NAME PASCAL_OPERATION_PARAMETERS PASCAL_OPERATION_RETURN_TYPE ; PASCAL_OPERATION_VIRTUAL  PASCAL_OPERATION_ABSTRACT PASCAL_OPERATION_OVERRIDE]
                  
    constructor Create; virtual; { override;  replace virtual with override in derived classes }

    destructor Destroy ; override;

SELECT_WHEN ATTRIBUTE_IS_READ_PROPERTY LOGICAL_AND ATTRIBUTE_IS_WRITE_PROPERTY [
    property ATTRIBUTE_NAME : ATTRIBUTE_TYPE read Get$ATTRIBUTE_NAME write Set$ATTRIBUTE_NAME ;]

SELECT_WHEN ATTRIBUTE_IS_READ_PROPERTY LOGICAL_AND LOGICAL_NOT ATTRIBUTE_IS_WRITE_PROPERTY [
    property ATTRIBUTE_NAME : ATTRIBUTE_TYPE read Get$ATTRIBUTE_NAME;]

SELECT_WHEN ATTRIBUTE_IS_WRITE_PROPERTY LOGICAL_AND LOGICAL_NOT ATTRIBUTE_IS_READ_PROPERTY [
    property ATTRIBUTE_NAME : ATTRIBUTE_TYPE write Set$ATTRIBUTE_NAME ;]

[   procedure Set$ASSOCIATION_ONE_CLASS ( a$ASSOCIATION_ONE_CLASS : T$ASSOCIATION_ONE_CLASS ) ; {Set Accessor Procedure for 1:1 Association}]

[   function Get$ASSOCIATION_ONE_CLASS : T$ASSOCIATION_ONE_CLASS ; {Get Assessor Function for 1:1 Association} ]

[   procedure Remove$ASSOCIATION_ONE_CLASS ;]

[   procedure Add$ASSOCIATION_MANY_CLASS ( a$ASSOCIATION_MANY_CLASS : T$ASSOCIATION_MANY_CLASS ) ;]

[   function Get$ASSOCIATION_MANY_CLASS ( Index : Integer ) : T$ASSOCIATION_MANY_CLASS ;{Get Assessor Function for 1:Many Association}]

[   procedure Remove$ASSOCIATION_MANY_CLASS ( a$ASSOCIATION_MANY_CLASS : T$ASSOCIATION_MANY_CLASS ) ;]

end;

implementation

{-----------------------------------------------------------------------------------------------}
constructor T$CLASS_NAME$.Create; {Association Objects Must be Created by Caller}
[NO_REPEAT var
  AGGREGATION_MANY_NAME$Index : Integer;]
begin
  inherited Create ;
  [ F$ATTRIBUTE_NAME := ATTRIBUTE_INITIAL_VALUE; ]
  [ ASSOCIATION_ONE_NAME := nil; {Caller must create ASSOCIATION_ONE_CLASS } ]
  [ AGGREGATION_ONE_NAME := T$AGGREGATION_ONE_CLASS$.Create;{Create 1:1 Aggregation Part Object}]
  [ ASSOCIATION_MANY_NAME := TList$.Create;{Create List Object for 1:1 Association Objects} ]
  [ AGGREGATION_MANY_NAME := TList$.Create; {Create List Object for 1:1 Aggregation Part Objects}
  for AGGREGATION_MANY_NAME$Index := 1 to 2 do  {Update 2 with the number of AGGREGATION_MANY_CLASS$'s }
    AGGREGATION_MANY_NAME.Add (T$AGGREGATION_MANY_CLASS$.Create);{Create AGGREGATION_MANY_CLASS objects}]
end;

{-----------------------------------------------------------------------------------------------}
destructor T$CLASS_NAME$.Destroy ;
[NO_REPEAT var
  AGGREGATION_MANY_NAME$Index : Integer;
  Temp$AGGREGATION_MANY_NAME : T$AGGREGATION_MANY_CLASS ; ]
begin 
  [ AGGREGATION_ONE_NAME$.Free; {Frees 1:1 Aggregation Part Object} ]
  [ ASSOCIATION_MANY_NAME$.Free; {Frees 1:Many Association List-caller must free Association objects} ]
  [ for AGGREGATION_MANY_NAME$Index := 1 to AGGREGATION_MANY_NAME$.Count do
    begin
      Temp$AGGREGATION_MANY_NAME := AGGREGATION_MANY_NAME$.Items LITERAL_SYMBOL[ AGGREGATION_MANY_NAME$Index LITERAL_SYMBOL] ;
      Temp$AGGREGATION_MANY_NAME.Free; {Frees 1:Many Aggregation Part Objects}
    end; 
   AGGREGATION_MANY_NAME$.Free;{Frees 1:Many Aggregation List Object} ]
  inherited Destroy;
end;

SELECT_WHEN OPERATION_IS_PROCEDURE       
[{-----------------------------------------------------------------------------------------------}
procedure T$CLASS_NAME.OPERATION_NAME PASCAL_OPERATION_PARAMETERS_WITH_VAR ; 
begin
{ Place code here  }
  OPERATION_CODE
end;    
]
SELECT_WHEN OPERATION_IS_FUNCTION 
[{-----------------------------------------------------------------------------------------------}
function T$CLASS_NAME.OPERATION_NAME PASCAL_OPERATION_PARAMETERS PASCAL_OPERATION_RETURN_TYPE ; 
begin
{ Place code here and return an object }
  OPERATION_CODE
end;    
]
[{-----------------------------------------------------------------------------------------------}
function T$CLASS_NAME.Get$ATTRIBUTE_NAME : ATTRIBUTE_TYPE; {Accessor Get Function }
begin
  Get$ATTRIBUTE_NAME := F$ATTRIBUTE_NAME;
end;
]
[{-----------------------------------------------------------------------------------------------}
procedure T$CLASS_NAME.Set$ATTRIBUTE_NAME ( a$ATTRIBUTE_NAME : ATTRIBUTE_TYPE ); {Accessor Set Procedure }
begin
  F$ATTRIBUTE_NAME := a$ATTRIBUTE_NAME;
end; 
]
[{-----------------------------------------------------------------------------------------------}
procedure T$CLASS_NAME$.Set$ASSOCIATION_ONE_CLASS ( a$ASSOCIATION_ONE_CLASS : T$ASSOCIATION_ONE_CLASS );
begin
  ASSOCIATION_ONE_NAME := a$ASSOCIATION_ONE_CLASS ;
end;
]
[{-----------------------------------------------------------------------------------------------}
function T$CLASS_NAME$.Get$ASSOCIATION_ONE_CLASS ( ) : T$ASSOCIATION_ONE_CLASS ; 
begin
  Get$ASSOCIATION_ONE_CLASS := ASSOCIATION_ONE_NAME;
end;
]
[{-----------------------------------------------------------------------------------------------}
procedure T$CLASS_NAME$.Remove$ASSOCIATION_ONE_CLASS ; 
begin
  ASSOCIATION_ONE_NAME := nil;
end;
]
[{-----------------------------------------------------------------------------------------------}
procedure T$CLASS_NAME$.Add$ASSOCIATION_MANY_CLASS ( a$ASSOCIATION_MANY_CLASS : T$ASSOCIATION_MANY_CLASS );
begin                {Caller must create a$ASSOCIATION_MANY_CLASS  }
  ASSOCIATION_MANY_NAME.Add (a$ASSOCIATION_MANY_CLASS) ;
end;
]
[{-----------------------------------------------------------------------------------------------}
function T$CLASS_NAME$.Get$ASSOCIATION_MANY_CLASS (Index : Integer ) : T$ASSOCIATION_MANY_CLASS ; 
begin
  Get$ASSOCIATION_MANY_CLASS := ASSOCIATION_MANY_NAME.Items LITERAL_SYMBOL[Index LITERAL_SYMBOL];
end;
]
[{-----------------------------------------------------------------------------------------------}
procedure T$CLASS_NAME$.Remove$ASSOCIATION_MANY_CLASS ( a$ASSOCIATION_MANY_CLASS : T$ASSOCIATION_MANY_CLASS );
begin   { Caller must free a$ASSOCIATION_MANY_CLASS  }
  ASSOCIATION_MANY_NAME.Remove (a$ASSOCIATION_MANY_CLASS) ; {Caller must free a$ASSOCIATION_MANY_CLASS }
end;
]

end.


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -