informationsverarbeitung im bauwesen · pdf fileeinführung in excel/vba vba 4. struktur...
TRANSCRIPT
Informationsverarbeitung im Bauwesen
1
Informationsverarbeitung im Bauwesen
Markus Uhlmann
11
Informationsverarbeitung im Bauwesen
2
Zusammenfassung der 10. Vorlesung
• Benutzerdefinierte Datentypen
• Wieso zusätzliche Datentypen?
• Definition neuer Datentypen
• Verwendung von Variablen mit benutzerdefiniertem Typ
• Beispiele:• Kundenkartei• Komplexe Zahlen• Partikelsimulation
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
Informationsverarbeitungim Bauwesen
4
Inhalt der heutigen Vorlesung
• Objektorientierte Programmierung (OOP)
• Wozu eigentlich? Was unterscheidet OOP von “traditionellen”
Techniken?
• Verwendung von vordefinierten Objekten
• Beispiele:• Collection Objekt• Range Objekt
Informationsverarbeitungim Bauwesen
5
Gliederung
I. Einführung in objektorientierte Programmierung
II. Benutzen von Objektvariablen in VBA
III.Benutzerdefinierte Klassen (Vorlesung 12)
Informationsverarbeitungim Bauwesen
6
Objektorientierte Programmierung
Was ist ein Objekt?
Weiterentwicklung einer benutzerdefinierten Datenstruktur
Zusammenfassung von Daten und Funktionalitäten
Daten eines Objektes können auf diese Weise vor fehlerhaftem Zugriff geschützt werden (Kapselung)
Nach außen bieten Objekte eine streng definierte Schnittstelle
Objekte sind Kopien (Instanzen) von sog. Klassen
Klassen dienen als Schablonen für Objekte
Einführung in OOP
Benutzen von Objekten
Informationsverarbeitungim Bauwesen
7
Elemente von Objekten
Beispiel: Auto
Methoden: Bremsen, Schalten, Gasgeben, Lenken, …
Eigenschaften: Geschwindigkeit, Fahrtrichtung, Gang, …
Objekt
• Methoden
• Eigenschaften
Beispiel: Excel Shape-Objekt
Methoden: Select, Copy, Delete, …
Eigenschaften: AutoShapeType, Width, Top, …
Objekte beinhalten:• Methoden
• Eigenschaften
• [Ereignisse]
Einführung in OOP
Benutzen von Objekten
Informationsverarbeitungim Bauwesen
8
Information über Objekte
Von Excel bereitgestellte Objekte
Objektkatalog gibt detaillierte Information über Klassen
Klasse
Bibliothek
Methode
Eigenschaft
Aufzählung
Konstante
Ereignis
Einführung in OOP
Benutzen von Objekten
Informationsverarbeitungim Bauwesen
9
Merkmale von OOP
Die drei Säulen der objektorientierten Programmierung
Datenkapselung:
• Verbergen der inneren Struktur eines Objekts
Polymorphie (Vielgestaltigkeit):
• eine gleichnamige Methode kann auf unterschiedliche Objekte angewendet werden
[eingeschränkt in VBA]
Vererbung:
• Objektklassen können als Basis für andere Klassen dienen; die abgeleiteten Klassen „erben“ die Elemente der Ursprungsklasse
[eingeschränkt in VBA]
Einführung in OOP
Benutzen von Objekten
Informationsverarbeitungim Bauwesen
10
Kapselung von Objektdaten
Zugriff auf Objekte über Schnittstellen
Objekte können öffentliche und verborgene Elemente
besitzen
Objekt
Schnittstelle
verborgene Methoden
& Eigenschaften
öffentliche Methoden
& Eigenschaften
Einführung in OOP
Benutzen von Objekten
Informationsverarbeitungim Bauwesen
11
Polymorphie von Objekten
Polymorphie
Methoden unterschiedlicher Objekte können den gleichen Namen haben, aber unterschiedlich funktionieren
Interne Details der Implementierung sind verborgen
Beispiel: eine Methode Beschleunigen soll sowohl auf ein Objekt Auto, als auch auf ein Fahrrad angewendet werdenInterna sind völlig unterschiedlich, jedoch für den Benutzer des Objektes oft unerheblich
Vorteil: Vereinfachung bei der Nutzung von Objekten
Beispiel mit Excel-VBA Objekten:Tabelle1.Copy
UserForm1.Copy
Einführung in OOP
Benutzen von Objekten
Informationsverarbeitungim Bauwesen
12
Objekte und Vererbung
Vererbung
Methoden/Eigenschaften werden an abgeleitete Klassen weitergegeben
Einsparung von Programmieraufwand, Fehlerreduzierung
Elternklasse
Eigenschaft AMethode A
Kindklasse
Eigenschaft BMethode B
Objekte der Kindklasse besitzen Eigenschaften A und B
Beispiel:
Einführung in OOP
Benutzen von Objekten
Informationsverarbeitungim Bauwesen
13
II. Benutzen von Objektvariablen in VBA
Informationsverarbeitungim Bauwesen
14
Deklaration und Zuweisung
Deklarieren von ObjektvariablenSyntax: Dim variablename As classname
Objektvariable wird angelegt, zeigt aber noch auf keine gültige Speicheradresse (Wert = „Nothing“)
Zuweisen von ObjektreferenzenSyntax: Set variablename = objectreference
Objektvariable zeigt nun auf ein existierendes ObjektDies ist eine Referenz (keine Kopie) des Objektes
• Referenz = Zeiger auf Speicherplatzadresse
Einführung in OOP
Benutzen von Objekten
Informationsverarbeitungim Bauwesen
15
Objektvariablen sind Referenzen!
Nicht-Objektvariable: Abkürzung für SpeicheradresseDim i As Integer
i=10Einführung in OOP
Benutzen von Objekten
Objektvariable: Referenz (pointer) auf eigentliche DatenDim myobj As Shape
Set myobj=addshape(…)
10
Speicherinhalt Adresse
324562
Speicherinhalt Adresse
643295
(Shape )
324562
643295
i
myobj
Informationsverarbeitungim Bauwesen
16
Deklaration und Zuweisung
Beispiel zur Zuweisung von ReferenzenÄnderung eines Objektes wirkt sich auf alle Referenzen aus!
(Quelltext: VBA)
Einführung in OOP
Benutzen von Objekten
Informationsverarbeitungim Bauwesen
17
Neue Instanzen von Klassen
Erzeugung neuer Objekte
Syntax: Set variablename = New classname
Möglich für benutzerdefinierte Klassen (später mehr)
Bei den meisten vordefinierten VBA Klassen nicht möglich
Alternativ: Erzeugung durch „Add…“ Methode
Viele Collection-Objekte enthalten eine “Add…” Methode
Bsp: Dim obj As Shape
Set obj=Worksheets(1).Shapes.AddShape(…)
AddShape instanziert ein neues Objekt vom Typ “Shape”
Einführung in OOP
Benutzen von Objekten
Informationsverarbeitungim Bauwesen
18
Neue Instanzen von Klassen (2)
Alternativ-2: Erzeugung durch CreateObject
Externe Objekte können mit CreateObject erzeugt werden
Bsp: Dim word As Object
Set word=CreateObject("word.application")
Die Anwendung “Word” wird gestartet, und Variable word
verweist auf das entsprechende Objekt
Einführung in OOP
Benutzen von Objekten
Informationsverarbeitungim Bauwesen
19
Lebensdauer von Objekten
Objekte leben solange wie auf sie verwiesen wird
Sobald alle Referenzen auf ein Objekt gelöscht werden,
wird das Objekt selbst “zerstört” (Speicher freigegeben)
Dieser Prozess wird als “garbage collection” bezeichnet
Einführung in OOP
Benutzen von Objekten
Informationsverarbeitungim Bauwesen
20
WITH: Vereinfachte Objektreferenz
Verkürzung der Referenz auf ObjekteSyntax: With object
[Anweisungen]
End With
Im Inneren des With-Blockes sind verkürzte Referenzen auf Objekte möglich (relative Referenzen)Lesbarkeit des ProgrammtextesSchnellere Ausführung durch einmalige Objektidentifizierung
Beispiel: With Worksheets(„Tabelle1“)
Range(“A1“)=5
Range(“B5“)=7
End With
Einführung in OOP
Benutzen von Objekten
(Quelltext: VBA)
Informationsverarbeitungim Bauwesen
21
Auflistungen von Objekten
Speichern von mehreren Objekten in Collection
Collection-Objekte können beliebige Objekte enthalten (ähnlich wie Felder)
Syntax: Dim variable As Collection
Set variable = New Collection
Vorteil: einfaches Hinzufügen/Eliminieren von Elementen
Hinzufügen von Elementen durch Add Methode:variable.Add objectref [,key]
Weitere Methoden: Item, Remove
Eigenschaften: Count
Schleife über Elemente: For Each … Next
Einführung in OOP
Benutzen von Objekten
Informationsverarbeitungim Bauwesen
22
Auflistungen von Objekten (2)
Schleife über Elemente einer Collection
For Each … Next Anweisung:
läuft über alle Elemente eines Collection-Objektes
Syntax:
Dim collectionVar As Collection
Dim objVar As Object
For Each objVar In collectionVar
Anweisungen
Next objVar
Einführung in OOP
Benutzen von Objekten
Informationsverarbeitungim Bauwesen
23
Bsp: Collection
(Quelltext: VBA)
Einführung in OOP
Benutzen von Objekten
Informationsverarbeitungim Bauwesen
24
Das Range Objekt
Zugriff auf Excel Tabellenbereiche
Range Objekt: Sammlung einer oder mehrerer Zellen einer Tabelle
Das Range Objekt dient dem Datentransfer zwischen Excel und VBA
Adressierung auf verschiedene Arten: • Range(“A1:B4“) direkter Zugriff• Range(“A1“)(2,4) relativer Zugriff• Range(“Umsatz“) nach Bereichsname• ActiveCell aktive Zelle
Einführung in OOP
Benutzen von Objekten
Informationsverarbeitungim Bauwesen
25
Das Range Objekt (2)Absoluter Zugriff auf Zelle C4
Range(“C4“)
Spaltenindex
Zeilenindex
Referenzzelle
Zeilen
Spalten
Relativer Zugriff auf Zelle C4
Range(“B2“)(3,2) oder Range(“B2“).Offset(2,1)
inkrementell
Zeile Spalte
C5
C4
Einführung in OOP
Benutzen von Objekten
Informationsverarbeitungim Bauwesen
26
Das Range Objekt (3)
Eigenschaften:
Auswahl eines Bereiches, umgeben von leeren Zellen:
.CurrentRegion (Range)
Anzahl der Zellen eines Bereiches:.Count (Integer)
Zeilen-/Spaltenindex des Beginnes des Bereiches:.Row / .Column (Integer)
Ganze Zeile(n)/Spalte(n) eines Bereiches.EntireRow / .EntireColumn (Range)
Wert eines Bereiches (Standardeigenschaft).Value (Variant)
…
Einführung in OOP
Benutzen von Objekten
Informationsverarbeitungim Bauwesen
27
Das Range Objekt (4)
Methoden:
Markierung eines Bereiches:.Select
Löschen der Formatierung/des Inhaltes .Clear / .ClearContents
+ viele weitere ... (siehe Umdruck, Excel-Hilfe/Objektkatalog)
Einführung in OOP
Benutzen von Objekten
Informationsverarbeitungim Bauwesen
28
Das Range Objekt (5)
Das Range Objekt als Collection:
Falls der Elementzusatz weggelassen wird, verhält sich Range als Collection von Zellen
Dies erlaubt Schleifen über Zellen mittels „For Each“ (siehe Beispiel)
Einführung in OOP
Benutzen von Objekten
Informationsverarbeitungim Bauwesen
29
Bsp: Range
(Quelltext: VBA)
Einführung in OOP
Benutzen von Objekten
Informationsverarbeitungim Bauwesen
30
Bsp: Polygon
(Quelltext: VBA)
Einführung in OOP
Benutzen von Objekten
(Zu Aufgabe 5)
Informationsverarbeitungim Bauwesen
31
Ausblick
Thema der nächsten Vorlesung: Benutzerdefinierte Klassen in VBA