Skip to main content

Pointeur : SUPER

le SUPER pointeur est une variable spéciale utilisée pour la programmation orientée objet.

SUPER est le pointeur d'un bloc fonction vers l'instance de bloc fonction de base à partir de laquelle le bloc fonction a été généré. le SUPER pointeur permet également d'accéder à l'implémentation des méthodes du bloc fonction de base (classe de base). UNE SUPER pointeur est automatiquement disponible pour chaque bloc fonction. Vous pouvez utiliser SUPER uniquement dans les méthodes et dans les implémentations des blocs fonctionnels associés.

Déréférencement du pointeur : SUPER^

En utilisant le SUPER pointeur : avec le SUPER mot-clé, vous appelez une méthode qui est valide dans l'instance de la classe de base ou de la classe parent.

Exemple 98. Exemple

ST

SUPER^.METH_DoIt();

FBD/CFC/LD

_cds_img_pointer_super_fbd.png


Exemple 99. Exemple

Utilisation de SUPER et THIS pointeurs

FUNCTION_BLOCK FB_Base
VAR_OUTPUT
        iCnt : INT;
END_VAR

METHOD METH_DoIt : BOOL
iCnt := -1;

METHOD METH_DoAlso : BOOL
METH_DoAlso := TRUE;

FUNCTION_BLOCK FB_1 EXTENDS FB_Base
VAR_OUTPUT
        iBase : INT;
END_VAR

THIS^.METH_DoIt();  //Call of the methods of FB_1
THIS^.METH_DoAlso();

SUPER^.METH_DoIt();   //Call of the methods of FB_Base
SUPER^.METH_DoAlso();
iBase := SUPER^.iCnt;

METHOD METH_DoIt : BOOL
iCnt := 1111;
METH_DoIt := TRUE;

PROGRAM PLC_PRG
VAR
    myBase : FB_Base;
    myFB_1 : FB_1;
    iTHIS : INT;
    iBase : INT;
END_VAR
myBase();
iBase := myBase.iCnt;
myFB_1();
iTHIS := myFB_1.iCnt;


Astuce

THIS n'est pas encore implémenté pour la liste d'instructions (IL).