Property Prozedur als - Homepage Markus Uhlmann
Transcrição
Property Prozedur als - Homepage Markus Uhlmann
12 Informationsverarbeitung im Bauwesen Markus Uhlmann Informationsverarbeitung im Bauwesen 1 Zusammenfassung der 11. Vorlesung • Objektorientierte Programmierung (OOP) • Wozu eigentlich? Was unterscheidet OOP von “traditionellen” Techniken? • Verwendung von vordefinierten Objekten • Beispiele: • • • Informationsverarbeitung im Bauwesen Collection Objekt Range Objekt Polygon 2 Inhalt / Planung der Vorlesung 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Informationsverarbeitung im Bauwesen Informationsdarstellung & -verarbeitung Grundlagen Betriebssysteme, Programmiersprachen * Einführung in Excel/VBA VBA Struktur von (VBA) Programmen * Logische Elemente I * Logische Elemente II * Beispielprogramm (Dynamik starrer Körper) * Datentypen, Eingabe/Ausgabe * Datenfelder * Benutzerdefinierte Datentypen * Objektorientierte Programmiertechniken I * Objektorientierte Programmiertechniken II * Matlab I Matlab Matlab II * 3 Inhalt der heutigen Vorlesung • Objektorientierte Programmierung II: Benutzerdefinierte Klassen • Definition einfacher Klassen • “Property” Prozeduren • Ereignisse bei Initialisierung/Beendigung eines Objektes • Schnittstellen • Beispiele: • • Informationsverarbeitung im Bauwesen Klasse für Kreisobjekt Fahrzeugklasse 4 Erzeugen eigener Klassen VBA: Klassen werden in Klassenmodulen definiert Pro Klassenmodul wird eine Klasse beschrieben Modulname = Klassenname Informationsverarbeitung im Bauwesen 5 Definition von Eigenschaften Öffentliche Eigenschaften (nicht empfohlen) Definition von „Public“ Variablen innerhalb Klassenmodul Bsp.: [in Klassenmodul „Auto“] Public Farbe As Integer Public Vel As Single [in Code-Modul] Sub Test() Dim Auto1 As New Auto Auto1.Farbe=5 Auto1.Vel=35.0 End Sub Analog zu benutzerdefinierten Datentypen Informationsverarbeitung im Bauwesen 6 Definition von Methoden Öffentliche Methoden Definition von „Public“ Prozeduren innerhalb Klassenmodul Bsp.: [in Klassenmodul „Auto“] Public Sub Beschleunigen(dv as Single) Vel = Vel + dv End Sub [in Code-Modul] Sub Test() Dim Auto1 As New Auto Auto1.Beschleunigen 5.0 End Sub Informationsverarbeitung im Bauwesen 7 Bsp.: Definition einfacher Klassen (Quelltext: VBA) Informationsverarbeitung im Bauwesen 8 Datenkapselung Öffentliche Eigenschaften sind unsicher Verwendung von privaten Variablen Unsichtbar ausserhalb des Objektes Bsp.: Private pRadius As Single (in Klassenmodul) Zugriff auf Eigenschaften durch „Property-Prozeduren“ Spezielle Prozeduren zum Abfragen und Ändern von privaten Eigenschaften Inhalt der Prozedur: beliebiger Programmtext Informationsverarbeitung im Bauwesen 9 Property Prozeduren Zugriff auf Eigenschaften durch Property Prozeduren Bsp.: [in Klassenmodul „Kreis“] Private pRadius As Single Public Property Let Radius(Value as Single) pRadius = Value End Property Aufruf wie normale Wertzuweisung: [in Code-Modul] Dim circ1 As New Kreis circ1.Radius = 3.5 Direkter Zugriff auf Eigenschaft pRadius nicht möglich Nach außen nur Eigenschaft Radius sichtbar Informationsverarbeitung im Bauwesen 10 Property Prozeduren (2) Property Prozedur als „Filter“ für Objektdaten Bsp.: [in Klassenmodul „Kreis“] Private pRadius As Single Public Property Let Radius(Value as Single) If Value >= 0 Then pRadius = Value Else `Fehlerbehandlung (negativer Radius) Endif End Property Informationsverarbeitung im Bauwesen Fehlerhafte Zuweisungen können durch Property Prozeduren verhindert werden 11 Property Let/Get Prozeduren Property Let/Get Prozeduren – treten in Paaren auf Syntax: Property Let name([arglist,]value As type) … End Property Property Get name [(arglist)] As type … End Property Property Let -> Zuweisen eines Wertes (Set für Objekte) Property Get -> Abfrage eines Wertes „Schreibgeschützte“ Eigenschaften: Let auslassen Informationsverarbeitung im Bauwesen 12 Bsp.: Property Let/Get Prozeduren (Quelltext: VBA) Informationsverarbeitung im Bauwesen 13 Get: Berechnete Eigenschaft Property Get Prozedur: Zugriff auf berechnete Werte Im vorigen Beispiel wurde mit Get auf eine verborgene Eigenschaft zurückgegriffen Statt dessen können innerhalb von Eigenschaftsprozeduren Werte durch Berechnungen ermittelt werden Bsp.: eine Eigenschaft „Fläche“ eines Kreisobjektes benötigt keine spezielle verborgene Variable – die Information kann aus dem Radius berechnet werden Informationsverarbeitung im Bauwesen 14 Bsp.: Berechnete Eigenschaft Informationsverarbeitung im Bauwesen (Quelltext: VBA) 15 Objekte & Ereignisse „Initialize“ – Ereignis: wird durch Erzeugung eines Objektes ausgelöst Programmtext kann mit diesem Ereignis verbunden werden (z.B. setzen von Standardwerten) Syntax: [in Klassenmodul] Private Sub Class_Initialize() `Anweisungen werden bei Initialisierung `ausgeführt End Sub Analog für „Terminate“ (Beendigung eines Objektes) Informationsverarbeitung im Bauwesen Ähnlich C++ „Constructor“, „Destructor“ 16 Bsp.: Initialize-Event (Quelltext: VBA) Informationsverarbeitung im Bauwesen 17 Klassen & Schnittstellen Verschiedene Klassen -- gemeinsame Schnittstelle Klassenmodule können als Schnittstelle fungieren: • Enthalten lediglich leere Prozeduren • Implementierung wird eigentlichen Klassen überlassen • „abstrakte Klassen“ • Eigenschaft „PublicNotCreatable“ setzen Eigentliche Klassen verwenden Anweisung „Implements Schnittstellenname“ • Sind verpflichtet die Prozeduren der Schnittstelle zu implementieren Ermöglicht Standardisierung von polymorphem Verhalten Informationsverarbeitung im Bauwesen 18 Bsp.: Klassen & Schnittstellen (Quelltext: VBA) Informationsverarbeitung im Bauwesen 19 Ausblick Thema der nächsten Vorlesung: MATLAB Informationsverarbeitung im Bauwesen 20 Campuslizenzen KIT Informationsverarbeitung im Bauwesen (LINK) 21 MATLAB im Softwareshop (LINK) Informationsverarbeitung im Bauwesen 22