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