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

📄 delall.sct

📁 c#设计模式WithCla
💻 SCT
📖 第 1 页 / 共 2 页
字号:
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_OR_INTERFACE [(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 [
    PASCAL_OPERATION_STATIC 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 [
    PASCAL_OPERATION_STATIC function OPERATION_NAME PASCAL_OPERATION_PARAMETERS PASCAL_OPERATION_RETURN_TYPE ; PASCAL_OPERATION_VIRTUAL  PASCAL_OPERATION_ABSTRACT PASCAL_OPERATION_OVERRIDE]

[   procedure Set$AGGREGATION_ONE_CLASS ( const a$AGGREGATION_ONE_CLASS : T$AGGREGATION_ONE_CLASS ) ; {Set Accessor Procedure for 1:1 Aggregation}]

[   function Get$AGGREGATION_ONE_CLASS : T$AGGREGATION_ONE_CLASS ; {Get Assessor Function for 1:1 Aggregation} ]

[   procedure Set$AGGREGATION_MANY_CLASS$List ( const a$AGGREGATION_MANY_CLASS$List : TList ) ; {Set Accessor Procedure for 1:Many Aggregation}]

[   function Get$AGGREGATION_MANY_CLASS$List : TList ;{Get Assessor Function for 1:Many Aggregation} ]

[   procedure Add$AGGREGATION_MANY_CLASS (const a$AGGREGATION_MANY_CLASS : T$AGGREGATION_MANY_CLASS ) ;]

[   function Get$AGGREGATION_MANY_CLASS ( const Index : Integer ) : T$AGGREGATION_MANY_CLASS ;{Get Assessor Function for 1:Many Aggregation}]

[   function Get$AGGREGATION_MANY_CLASS$Count : Integer ;]

[   procedure Remove$AGGREGATION_MANY_CLASS ( const a$AGGREGATION_MANY_CLASS : T$AGGREGATION_MANY_CLASS ) ;]

[   procedure RemoveAll$AGGREGATION_MANY_CLASS;]

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

SELECT_WHEN OPERATION_ACCESS == protected LOGICAL_AND OPERATION_IS_PROCEDURE [
    PASCAL_OPERATION_STATIC 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 [
    PASCAL_OPERATION_STATIC 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 ( const 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 [
    PASCAL_OPERATION_STATIC 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 [
    PASCAL_OPERATION_STATIC 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 [
    PASCAL_OPERATION_STATIC 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 [
    PASCAL_OPERATION_STATIC 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 }

    constructor CreateWithArguments ( [const a$ATTRIBUTE_NAME : ATTRIBUTE_TYPE DELETE_LAST_SYMBOL;] NO_RETURN);

    constructor CreateFromCopy (const a$CLASS_NAME : T$CLASS_NAME) ;

    destructor Destroy ; override;

    function CloneFromCopy ( const a$CLASS_NAME : T$CLASS_NAME ) : T$CLASS_NAME ;

    function EqualTo ( const a$CLASS_NAME : T$CLASS_NAME ) : Boolean ;

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 ( const 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 Set$ASSOCIATION_MANY_CLASS$List ( const a$ASSOCIATION_MANY_CLASS$List : TList ) ; {Set Accessor Procedure for 1:Many Association}]

[   function Get$ASSOCIATION_MANY_CLASS$List : TList ;{Get Assessor Function for 1:Many Association} ]

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

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

[   function Get$ASSOCIATION_MANY_CLASS$Count : Integer ;]

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

[   procedure RemoveAll$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 ;
  [ Self.F$ATTRIBUTE_NAME := ATTRIBUTE_INITIAL_VALUE; ]
  [ Self.$ASSOCIATION_ONE_NAME := nil; {Caller must create ASSOCIATION_ONE_CLASS } ]
  [ Self.$AGGREGATION_ONE_NAME := T$AGGREGATION_ONE_CLASS$.Create;{Create 1:1 Aggregation Part Object}]
  [ Self.$ASSOCIATION_MANY_NAME := TList$.Create;{Create List Object for 1:1 Association Objects} ]
  [ Self.$AGGREGATION_MANY_NAME := TList$.Create; {Create List Object for 1:1 Aggregation Part Objects}
  for AGGREGATION_MANY_NAME$Index := 0 to 1 do  {Update 1 with the number-1 of AGGREGATION_MANY_CLASS$'s }
    AGGREGATION_MANY_NAME.Add (T$AGGREGATION_MANY_CLASS$.Create);{Create AGGREGATION_MANY_CLASS objects}]
end;

{-----------------------------------------------------------------------------------------------}
constructor T$CLASS_NAME$.CreateWithArguments ( [const a$ATTRIBUTE_NAME : ATTRIBUTE_TYPE  DELETE_LAST_SYMBOL;] NO_RETURN);
[NO_REPEAT var
  AGGREGATION_MANY_NAME$Index : Integer;]
begin
  inherited Create; {Update for inherited ancestor fields}
  [ Self.F$ATTRIBUTE_NAME := a$ATTRIBUTE_NAME;]
  [ Self.$ASSOCIATION_ONE_NAME := nil; {Caller must create ASSOCIATION_ONE_CLASS } ]
  [ Self.$AGGREGATION_ONE_NAME := T$AGGREGATION_ONE_CLASS$.Create;{Create 1:1 Aggregation Part Object}]
  [ Self.$ASSOCIATION_MANY_NAME := TList$.Create;{Create List Object for 1:1 Association Objects} ]
  [ Self.$AGGREGATION_MANY_NAME := TList$.Create; {Create List Object for 1:1 Aggregation Part Objects}
  for AGGREGATION_MANY_NAME$Index := 0 to 1 do  {Update 1 with the number-1 of AGGREGATION_MANY_CLASS$'s }
    AGGREGATION_MANY_NAME.Add (T$AGGREGATION_MANY_CLASS$.Create);{Create AGGREGATION_MANY_CLASS objects}]
end;

{-----------------------------------------------------------------------------------------------}

constructor T$CLASS_NAME$.CreateFromCopy (const a$CLASS_NAME : T$CLASS_NAME ) ;
[NO_REPEAT var
  AGGREGATION_MANY_NAME$Index : Integer;]
begin
  inherited Create; {Update inherited ancestor fields}
  [ Self.F$ATTRIBUTE_NAME := a$CLASS_NAME$.ATTRIBUTE_NAME ; ]
  [ Self.$ASSOCIATION_ONE_NAME := nil; {Caller must create ASSOCIATION_ONE_CLASS } ]
  [ Self.$AGGREGATION_ONE_NAME := T$AGGREGATION_ONE_CLASS$.Create;{Create 1:1 Aggregation Part Object}]
  [ Self.$ASSOCIATION_MANY_NAME := TList$.Create;{Create List Object for 1:1 Association Objects} ]
  [ Self.$AGGREGATION_MANY_NAME := TList$.Create; {Create List Object for 1:1 Aggregation Part Objects}
  for AGGREGATION_MANY_NAME$Index := 0 to 1 do  {Update 1 with the number-1 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 := 0 to AGGREGATION_MANY_NAME$.Count - 1 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}

⌨️ 快捷键说明

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