Skip to main content

Élément : Classe

Une classe est une unité logique avec des données et des opérations encapsulées. Il représente également un type de variable qui peut être instancié. Lorsque l'instance d'une classe est affectée en tant que variable à une autre classe, on parle de rôle ou d'expression de la classe.

Une classe peut fournir une méthode FB_Init qui est appelée lors de l'initialisation d'une instance.

Une classe peut hériter d'une autre classe. Cette relation s'appelle une généralisation.

Une classe peut instancier une autre classe. Cette relation s'appelle une composition.

Une classe peut reconnaître une autre classe. Cette relation s'appelle une association.

Une classe peut être une POU, une bibliothèque POU (type : programme), un bloc fonction ou une fonction.

_uml_img_class_all.png

(1)

Icônes de commande

Astuce

Lorsqu'une classe est sélectionnée, ses symboles de commande sont visibles.

(2)

Entête

  • ID pour le type de POU

    • <<program>> pour un programme (PRG)

    • Pas d'ID pour un bloc fonctionnel (FB)

    • <<function>> pour une fonction (FUN)

    • <<library>> pour une bibliothèque POU

    • <<missing>> pour un POU bibliothèque dont la bibliothèque n'est pas intégrée au projet

    • <<compiled>>: Pour une bibliothèque POU d'une bibliothèque compilée

      Note

      Toutes les informations peuvent ne pas être disponibles.

  • Nom de l'UOP

(3)

Liste des attributs

L'entrée a le format suivant : <attribute name> : <attribute type> <label>

Exemple: fbBase : FB_BaseClass

IDENTIFIANT: <label>

  • {input}: Pour une variable de VAR_IN portée

  • {output}: Pour une variable de VAR_OUT portée

  • Aucun: ID d'une variable interne invisible (type : VAR)

(4)

Liste des opérations (actions, méthodes ou propriétés)

Exemple:

ACT_DoIt(){action}

METH_DoIt(...) DWORD

PROP_Counter Set(...)

PROP_Counter Get (...)

Une entrée pour les méthodes a le format :

+ <method name> (<variable name> : < variable type> ) <return type>

Dans le cas d'une inscription pour un _cds_icon_interface_property.png propriété d'interface, la propriété spéciale Set et Get méthodes sont listées.

Une entrée pour les actions a le format :

<action name> () {action}

Ce qui suit s'applique pour <label> :

  • Une seule action est identifiée avec le {action} IDENTIFIANT.

  • Une méthode ou une propriété d'interface _cds_icon_interface_property.png (méthode spéciale) n'ont pas d'ID.

Propriétés

Identifiant

Nom de la classe

Exemple: Manager_A

Entrée utilisateur

La classe a développé des listes d'attributs et d'opérations qui sont identifiées par _uml_icon_checkbox_minus.png. Les icônes de commande sont visibles au-dessus de la classe. Vous pouvez les utiliser pour insérer des éléments de relation.

action

Résultat

Dans le BaseClass classe, cliquez sur le _uml_icon_delete_shallow.png icône de commande.

le BaseClass class est supprimé du diagramme de classes uniquement. L'objet lui-même reste dans le projet.

Astuce

Après avoir été supprimée, la classe s'affiche dans la Boîte à outils vu dans Références croisées entrantes ou Références croisées sortantes. Pour cela, vous devez sélectionner un élément dans le diagramme de classes qui a une relation avec la classe supprimée.

Clique le _uml_icon_delete_deep.png icône de commande.

le BaseClass la classe est supprimée uniquement dans le diagramme de classes. L'objet est supprimé et n'existe plus.

  1. Clique le _uml_icon_composition.png icône de commande.

  2. Cliquez sur une zone vide dans le diagramme.

    le Ajouter un POU la boîte de dialogue s'ouvre.

  3. Spécifiez un nom pour le nouvel objet.

    NewClass

  4. Clique le Ajouter bouton pour terminer la boîte de dialogue.

le NewClass bloc fonction est généré et une instance de la première classe y est instanciée.

Une flèche de composition pointe depuis le nouveau NewClass classe à la première BaseClass classer.

La classe a été étendue par la déclaration d'une instance de bloc fonction de la première classe.

FUNCTION_BLOCK NewClass
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
    InstanceBase : BaseClass;
END_VAR
  1. Clique le _uml_icon_composition.png icône de commande.

  2. Cliquez sur la deuxième classe.

Une flèche de composition pointe de la deuxième classe vers la première classe.

La deuxième classe a été étendue par la déclaration d'une instance de bloc fonction de la première classe.

FUNCTION_BLOCK SecondClass
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
    InstanceBase : BaseClass;
END_VAR
  1. Clique le _uml_icon_association.png icône de commande.

  2. Cliquez sur une zone vide dans le diagramme.

    le Ajouter un POU la boîte de dialogue s'ouvre.

  3. Spécifiez un nom pour le nouvel objet.

    NewClass

  4. Clique le Ajouter bouton pour terminer la boîte de dialogue.

Le nouveau NewClass class est généré et un pointeur de la première classe y est déclaré.

Une flèche d'association pointe de la nouvelle classe vers la première classe. La première BaseClass classe reconnaît le nouveau NewClass classer.

le NewClass la classe a été étendue par la déclaration d'un pointeur vers la BaseClass classer.

FUNCTION_BLOCK NewClass
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
    ptrBase : POINTER TO BaseClass;
END_VAR
  1. Clique le _uml_icon_association.png icône de commande.

  2. Cliquez sur la deuxième classe existante.

Une flèche d'association pointe de la première classe vers la deuxième classe. La première classe reconnaît la seconde classe.

La première classe a été étendue par la déclaration d'un pointeur vers la seconde classe.

FUNCTION_BLOCK SecondClass
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
    ptrBase : POINTER TO BaseClass;
END_VAR
  1. Clique le _uml_icon_generalization.png icône de commande.

  2. Cliquez sur une zone vide dans le diagramme.

    le Ajouter un POU la boîte de dialogue s'ouvre.

  3. Spécifiez un nom pour le nouvel objet.

    NewClass

  4. Clique le Ajouter bouton pour terminer la boîte de dialogue.

Une nouvelle classe est générée qui hérite de la première classe.

Une généralisation pointe de la nouvelle classe vers la première classe. La nouvelle classe hérite de la première classe.

La déclaration de la nouvelle classe a été générée avec EXTENDS dans le prolongement de la première classe.

FUNCTION_BLOCK ClassNew EXTENDS BaseClass
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
END_VAR
  1. Clique le _uml_icon_association.png icône de commande.

  2. Cliquez sur la deuxième classe existante.

Une généralisation pointe de la première classe à la première classe.

La déclaration de la deuxième classe a été générée avec l'extension de la première classe.

FUNCTION_BLOCK SecondClass EXTENDS BaseClass

  1. Clique le _uml_icon_realization.png icône de commande.

  2. Cliquez sur une zone vide dans le diagramme.

    le Ajouter une interface la boîte de dialogue s'ouvre.

  3. Spécifiez un nom pour le nouvel objet.

    ITF_New

  4. Clique le Ajouter bouton pour terminer la boîte de dialogue.

Une interface est générée qui est implémentée à partir de la classe sortante.

Une flèche d'implémentation pointe de la classe vers le nouveau ITF_A interface.

Maintenant, la classe implémente la nouvelle interface. La déclaration de la classe a été étendue avec l'implémentation.

FUNCTION_BLOCK BaseClass IMPLEMENTS ITF_New
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
END_VAR
  1. Clique le _uml_icon_association.png icône de commande.

  2. Cliquez sur une interface existante.

L'interface est implémentée par la classe.

Une flèche de réalisation pointe de la classe vers l'interface.

La déclaration de la classe a été étendue avec l'implémentation de l'interface.

FUNCTION_BLOCK BaseClass IMPLEMENTS ITF_A
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
END_VAR
  1. Cliquez sur le nom de la classe.

    Le nom est encadré en bleu après le premier clic.

  2. Cliquez dessus une deuxième fois.

    Après avoir cliqué une deuxième fois, un champ de saisie s'ouvre pour modifier le nom.

  3. Modifiez le nom de la classe.

Le nom de l'objet (dans l'arborescence des appareils ou dans le POU view) a été automatiquement adapté dans la déclaration.

  1. Cliquez sur un nom d'attribut ou un nom d'opération.

    Le nom est encadré en bleu après le premier clic.

  2. Cliquez dessus une deuxième fois.

    Après avoir cliqué une deuxième fois, un champ de saisie s'ouvre pour modifier le nom.

  3. Changez le nom.

La modification est appliquée dans le projet de manière synchrone et automatique.

Double-cliquez sur l'élément de classe.

L'éditeur d'objets correspondant s'ouvre.

Exemples

Exemple 6. Composition : Fb_D contient Fb_A
_uml_img_example_composition.png
FUNCTION_BLOCK Fb_D
VAR
    VarFb_A: Fb_A;
    ...
END_VAR


Exemple 7. Association : Fb_A reconnaît Class_2
_uml_img_example_assoziation_class_simple.png
FUNCTION_BLOCK Fb_A
VAR
    Class_2 : POINTER TO Class_2;
END_VAR


Exemple 8. Généralisation : Fb_A hérite de Fb_Base
_uml_img_example_generalization_function_block.png
FUNCTION_BLOCK Fb_A EXTENDS Fb_Base


Exemple 9. Implémentation : Class_A implémente Itf_A
_uml_img_example_realization.png
FUNCTION_BLOCK Class_A IMPLEMENTS Itf_A