Informationsverarbeitung im Bauwesen 1 Informationsverarbeitung im Bauwesen Markus Uhlmann 12
Informationsverarbeitung im Bauwesen
1
Informationsverarbeitung im Bauwesen
Markus Uhlmann
12
Informationsverarbeitung im Bauwesen
2
Zusammenfassung der 11. Vorlesung
• Objektorientierte Programmierung (OOP)
• Wozu eigentlich? Was unterscheidet OOP von “traditionellen”
Techniken?
• Verwendung von vordefinierten Objekten
• Beispiele:• Collection Objekt• Range Objekt• Polygon
Informationsverarbeitung im Bauwesen
3
1. Informationsdarstellung & -verarbeitung Grundlagen2. Betriebssysteme, Programmiersprachen *3. Einführung in Excel/VBA VBA4. Struktur von (VBA) Programmen *5. Logische Elemente I * 6. Logische Elemente II *7. Beispielprogramm (Dynamik starrer Körper) *8. Datentypen, Eingabe/Ausgabe *9. Datenfelder *10. Benutzerdefinierte Datentypen *11. Objektorientierte Programmiertechniken I *12. Objektorientierte Programmiertechniken II *13. Matlab I Matlab14. Matlab II *
Inhalt / Planung der Vorlesung
Informationsverarbeitung im Bauwesen
4
Inhalt der heutigen Vorlesung
• Objektorientierte Programmierung II:
Benutzerdefinierte Klassen
• Definition einfacher Klassen
• “Property” Prozeduren
• Ereignisse bei Initialisierung/Beendigung eines Objektes
• Schnittstellen
• Beispiele:• Klasse für Kreisobjekt• Fahrzeugklasse
Informationsverarbeitung im Bauwesen
5
Erzeugen eigener Klassen
VBA: Klassen werden in Klassenmodulen definiert
Pro Klassenmodul wird eine Klasse beschrieben Modulname = Klassenname
Informationsverarbeitung im Bauwesen
6
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
7
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
8
Bsp.: Definition einfacher Klassen
(Quelltext: VBA)
Informationsverarbeitung im Bauwesen
9
Datenkapselung
Öffentliche Eigenschaften sind unsicher
Verwendung von privaten Variablen Unsichtbar ausserhalb des ObjektesBsp.: 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
10
Property Prozeduren
Zugriff auf Eigenschaften durch Property ProzedurenBsp.: [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
11
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
Fehlerhafte Zuweisungen können durch Property Prozeduren verhindert werden
Informationsverarbeitung im Bauwesen
12
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
13
Bsp.: Property Let/Get Prozeduren
(Quelltext: VBA)
Informationsverarbeitung im Bauwesen
14
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
15
Bsp.: Berechnete Eigenschaft
(Quelltext: VBA)
Informationsverarbeitung im Bauwesen
16
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) Ähnlich C++ „Constructor“, „Destructor“
Informationsverarbeitung im Bauwesen
17
Bsp.: Initialize-Event
(Quelltext: VBA)
Informationsverarbeitung im Bauwesen
18
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
19
Bsp.: Klassen & Schnittstellen
(Quelltext: VBA)
Informationsverarbeitung im Bauwesen
20
Ausblick
Thema der nächsten Vorlesung: MATLAB
Informationsverarbeitung im Bauwesen
21
Campuslizenzen KIT
(LINK)
Informationsverarbeitung im Bauwesen
22
MATLAB im Softwareshop
(LINK)