Kann Jemand mal Begriffsdefinitionen zu
- Vererbung
- Interfaces
- Propertys
- Kapselung
- Enumeration
- Klassen
Enumeration:
Gehört eigentlich nicht zum Klassen-Konzept aber da danach gefragt wurde.
Prinzipiell definiert dabei einen Datentyp der nur bestimmte Werte annehmen kann:
Beispiel Meldeklassen
C-ähnlich:
TYPE E_MessageClass :
(
AlarmImmediateStop := 0,
AlarmCycleEnd,
AlarmNoStop,
Warning,
Information
);
END_TYPE
Ich kann jetzt mit diesem Datentyp eine Variable definieren und dann die Konstante zuweisen:
C-ähnlich:
VAR
eAlarm : E_MessageClass;
END_VAR
----------------------------------------------
eAlarm := E_MessageClass.Warning;
IF eAlarm = E_MessageClass.Information
THEN
// Setze Meldung ab
END_IF;
Klasse:
Eine Klasse ist ganz allgemein eine Gruppe von Eigenschaften (Properties) und Funktionen (Methoden). Ich werde das Anhand eines Zylinder-Bausteins erklären.
Methoden:
Methoden sind Funktionen einer Klasse. Zylinder-Beispiel "Fahre in Grundstellung"
Properties:
Beispiel: Eine Zylinder-Klasse, hat die Eigenschaft "Position In Grundstellung", "Position In Arbeitsstellung","Einstellwerte" usw.
Properties werden in Get- und Set- Methoden / Funktionen aufgeteilt um interne Variablen zu lesen / schreiben.
Kapselung:
Auf Variablen kann nicht direkt und Methoden und Funktionen können je nach Definition von Außen zugegriffen werden.
Bei Siemens kannst du zum Beispiel: fbZylinder.StatischeVariable1 := True setzen. Das geht bei OOP so nicht direkt. Der Zugriff erfolgt über Properties
Bei OOP kannst du auf Variablen über Properties zugreifen z.B. fbZylinder.Property1 := TRUE (Set-Methode), und lesend über die Get-Methode zugreifen.
Vererbung:
Bei der Vererbung kann ich alle nicht PRIVATE "gekapselten" Methoden und Eigenschaften von einer anderen Klasse erben.
Beispiel Zylinder: Die Zylinderklasse erbt die Funktionen und Eigenschaften von einer Basis-Aktor-Klasse mit Funktionen wie Schaltzyklenzähler.
Interface:
Das ist quasi eine Schnittstellendefinition. Diese zwingt den Programmierer die in der Definition angegebenen Methoden und Properties zu programmieren. Das hilft halt vor allem bei der Programmierung von Großen Projekten in einer Gruppe. Und zur Strukturierung.
Beispiel Zylinder-Baustein:
- Ich habe die Definition der Methoden "FahreInGrundstellung", "FahreInArbeitsstellung" und der Properties "InGrundstellung" und "InArbeitsstellung", dann müssen diese Eigenschaften und Methoden auch programmiert werden. Der Kollege der parallel den Handbetrieb programmiert, kann dann seinen FB schon mit der Schnittstelle fertig programmieren und testen obwohl der Zylinderbaustein vielleicht noch nicht fertig ist.
Ich hoffe das reicht ganz grob als Defnition