Skip to main content

Element: Klasse

Eine Klasse ist eine logische Einheit, in der Daten und Operationen gekapselt werden. Sie stellt außerdem einen Variablentyp dar, der instanziiert werden kann. Wenn die Instanz einer Klasse als Variable einer anderen Klasse zugeordnet ist, wird das als Rolle oder Ausprägung der Klasse bezeichnet.

Eine Klasse kann eine Methode FB_Init bereit stellen, die bei der Initialisierung einer Instanz aufgerufen wird.

Eine Klasse kann von einer anderen Klasse erben, die Beziehung wird Generalisierung genannt.

Eine Klasse kann eine andere Klasse instanziieren, dann ist dies eine Komposition.

Eine Klasse kann eine andere Klasse kennen, dann ist es eine Assoziation.

Eine Klasse kann ein Programmierbaustein oder Bibliotheksbaustein des Typs Programm, Funktionsbaustein oder Funktion sein.

_uml_img_class_all.png

(1)

Befehlssymbole

Tipp

Wenn Sie eine Klasse selektieren, werden dessen Befehlssymbole sichtbar.

(2)

Header

  • Kennzeichen für den POU-Typ

    • <<program>> bei einem Programm (PRG)

    • kein Kennzeichen bei einem Funktionsbaustein (FB)

    • <<function>> bei einer Funktion (FUN)

    • <<library>> bei einem Bibliotheksbaustein

    • <<fehlt>> bei einem Bibliotheksbaustein, dessen Bibliothek nicht in das Projekt eingebunden ist

    • <<compiled>> bei einem Bibliotheksbaustein aus einer übersetzten Bibliothek

      Anmerkung

      Es sind möglicherweise nicht alle Informationen verfügbar.

  • Name der POU

(3)

Liste der Attribute

Der Eintrag folgt dem Schema: <attribute name> : <attribute type> <label>

Beispiel: fbBase : FB_BaseClass

Kennung <label>

  • {input} bei einer Variable des Gültigkeitsbereichs VAR_IN

  • {output} bei einer Variable des Gültigkeitsbereichs VAR_OUT

  • Keine Kennung bei einer internen, nicht sichtbaren Variable des Typs VAR

(4)

Liste der Operationen (Aktionen, Methoden oder Eigenschaften)

Beispiel:

ACT_DoIt(){action}

METH_DoIt(...) DWORD

PROP_Counter Set(...)

PROP_Counter Get (...)

Ein Eintrag für Methoden folgt dem Schema:

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

Bei einem Eintrag für eine Schnittstelleneigenschaft _cds_icon_interface_property.png werden die speziellen Methoden Set und Get aufgelistet.

Ein Eintrag für Aktionen folgt dem Schema:

<action name> () {action}

Dabei gilt für <label>:

  • Nur eine Aktion wird mit der Kennung {action} gekennzeichnet

  • Eine Methode oder eine Schnittstelleneigenschaft _cds_icon_interface_property.png (spezielle Methode) haben keine Kennung

Eigenschaften

Bezeichner

Name der Klasse

Beispiel: Manager_A

Benutzereingaben

Die Klasse hat expandierte Attribut- und Operationslisten, die mit _uml_icon_checkbox_minus.png gekennzeichnet sind. Oberhalb der Klasse sind Befehlssymbole sichtbar. Damit können Sie Beziehungselemente einfügen.

Aktion

Ergebnis

Klicken Sie in der Klasse BaseClass auf das Befehlsicon _uml_icon_delete_shallow.png.

Die Klasse BaseClass wird aus dem Klassendiagramm gelöscht. Das Objekt selbst bleibt im Projekt erhalten.

Tipp

Nach dem Löschen wird die Klasse in der Ansicht Werkzeuge unter Eingehende Querverweise oder Ausgehende Querverweise angezeigt. Voraussetzung dafür ist, dass Sie ein Element im Klassendiagramm selektieren, das eine Beziehung zu der gelöschten Klasse hat.

Klicken Sie auf das Befehlsicon _uml_icon_delete_deep.png.

Die Klasse BaseClass wird im Klassendiagramm gelöscht. Das Objekt wird entfernt und existiert nicht mehr.

  1. Klicken Sie auf das Befehlsicon _uml_icon_composition.png.

  2. Klicken Sie auf einen freien Bereich des Diagramms.

    –> Der Dialog POU hinzufügen öffnet sich.

  3. Geben Sie für das neue Objekt einen Namen ein.

    NewClass

  4. Beenden Sie den Dialog mit Klick auf die Schaltfläche Hinzufügen.

Der Funktionsbaustein NewClass wird erzeugt und es wird dort eine Instanz der ersten Klasse instantiiert.

Ein Kompositionspfeil weist von der neuen Klasse NewClass auf die erste Klasse BaseClass.

Die Klasse wurde ergänzt um die Deklaration einer Funktionsbaustein-Instanz der ersten Klasse.

FUNCTION_BLOCK NewClass
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
    InstanceBase : BaseClass;
END_VAR
  1. Klicken Sie auf das Befehlsicon _uml_icon_composition.png.

  2. Klicken Sie auf eine zweite Klasse.

Ein Kompositionspfeil weist von der zweiten Klasse auf die erste Klasse.

Die zweite Klasse wurde ergänzt um die Deklaration einer Funktionsbaustein-Instanz der ersten Klasse

FUNCTION_BLOCK SecondClass
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
    InstanceBase : BaseClass;
END_VAR
  1. Klicken Sie auf das Befehlsicon _uml_icon_association.png.

  2. Klicken Sie auf einen freien Bereich des Diagramms.

    Der Dialog POU hinzufügen öffnet sich.

  3. Geben Sie für das neue Objekt einen Namen ein.

    NewClass

  4. Beenden Sie den Dialog mit Klick auf die Schaltfläche Hinzufügen.

Die neue Klasse NewClass wird erzeugt und es wird dort ein Pointer der ersten Klasse deklariert.

Ein Assoziationspfeil weist von der neuen Klasse zur ersten Klasse. Die erste Klasse BaseClass kennt die neue Klasse NewClass.

Die Klasse NewClass wurde ergänzt um die Deklaration eines Pointers auf die Klasse BaseClass.

FUNCTION_BLOCK NewClass
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
    ptrBase : POINTER TO BaseClass;
END_VAR
  1. Klicken Sie auf das Befehlsicon _uml_icon_association.png.

  2. Klicken Sie auf eine bestehende, zweite Klasse.

Ein Assoziationspfeil weist von der ersten Klasse zur zweiten Klasse. Die erste Klasse kennt die zweite Klasse.

Die erste Klasse wurde ergänzt um die Deklaration eines Pointers auf die zweite Klasse.

FUNCTION_BLOCK SecondClass
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
    ptrBase : POINTER TO BaseClass;
END_VAR
  1. Klicken Sie auf das Befehlsicon _uml_icon_generalization.png.

  2. Klicken Sie auf einen freien Bereich des Diagramms.

    Der Dialog POU hinzufügen öffnet sich.

  3. Geben Sie für das neue Objekt einen Namen ein.

    NewClass

  4. Beenden Sie den Dialog mit Klick auf die Schaltfläche Hinzufügen.

Eine neue Klassse wird erzeugt, die von der ersten Klasse erbt.

Eine Generalisierung weist von der neuen Klasse zur ersten Klasse. Die neue Klasse erbt von der ersten.

Die Deklaration der neuen Klasse wurde mit EXTENDS als eine Erweiterung der ersten Klasse erzeugt.

FUNCTION_BLOCK ClassNew EXTENDS BaseClass
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
END_VAR
  1. Klicken Sie auf das Befehlsicon _uml_icon_association.png.

  2. Klicken Sie auf eine bestehende, zweite Klasse.

Eine Generalisierung weist von der zweiten Klasse zur ersten Klasse.

Die Deklaration der zweiten Klasse wurde um die Erweiterung mit der ersten Klasse ergänzt.

FUNCTION_BLOCK SecondClass EXTENDS BaseClass

  1. Klicken Sie auf das Befehlsicon _uml_icon_realization.png.

  2. Klicken Sie auf einen freien Bereich des Diagramms.

    Der Dialog Schnittstelle hinzufügen öffnet sich.

  3. Geben Sie für das neue Objekt einen Namen ein.

    ITF_New

  4. Beenden Sie den Dialog mit Klick auf die Schaltfläche Hinzufügen.

Eine Schnittstelle wird erzeugt, die von der ausgehenden Klasse implementiert wird.

Ein Realisierungspfeil weist von der Klasse zur neuen Schnittstelle ITF_A.

Die Klasse implementiert nun die neue Schnittstelle. Die Deklaration der Klasse wurde erweitert um die Implementierung.

FUNCTION_BLOCK BaseClass IMPLEMENTS ITF_New
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
END_VAR
  1. Klicken Sie auf das Befehlsicon _uml_icon_association.png.

  2. Klicken Sie auf eine bestehende Schnittstelle.

Die Schnittstelle wird von der Klasse implementiert.

Ein Realisierungspfeil weist von der Klasse zur Schnittstelle.

Die Deklaration der Klasse wurde erweitert um die Implementierung der Schnittstelle.

FUNCTION_BLOCK BaseClass IMPLEMENTS ITF_A
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
END_VAR
  1. Klicken Sie auf den Klassennamen.

    Nach dem ersten Klick ist der Name blau umrandet.

  2. Klicken Sie ein zweites mal darauf.

    Nach dem zweiten Klick öffnet sich ein Eingabefeld zum Ändern des Namens.

  3. Ändern Sie den Klassennamen.

Der Objektname (im Gerätebaum oder in der Ansicht POUs ) und in der Deklaration wurde automatisch angepasst.

  1. Klicken Sie auf einen Attribut- oder Operationsnamen.

    Nach dem ersten Klick ist der Name blau umrandet.

  2. Klicken Sie ein zweites mal darauf.

    Nach dem zweiten Klick öffnet sich ein Eingabefeld zum Ändern des Namens.

  3. Ändern Sie den Namen.

Die Änderung wird im Projekt synchron und automatisch übernommen.

Doppelklicken Sie auf das Klassenelement.

Der zugehörige Objekteditor öffnet sich.

Beispiele

Beispiel 6. Komposition Fb_D enthält Fb_A
_uml_img_example_composition.png
FUNCTION_BLOCK Fb_D
VAR
    VarFb_A: Fb_A;
    ...
END_VAR


Beispiel 7. Assoziation Fb_A kennt Class_2
_uml_img_example_assoziation_class_simple.png
FUNCTION_BLOCK Fb_A
VAR
    Class_2 : POINTER TO Class_2;
END_VAR


Beispiel 8. Generalisierung Fb_A erbt von Fb_Base
_uml_img_example_generalization_function_block.png
FUNCTION_BLOCK Fb_A EXTENDS Fb_Base


Beispiel 9. Realisierung Class_A realisiert Itf_A
_uml_img_example_realization.png
FUNCTION_BLOCK Class_A IMPLEMENTS Itf_A