informationsverarbeitung im bauwesen · pdf fileeinführung in excel/vba vba 4. struktur...

31
Informationsverarbeitung im Bauwesen 1 Informationsverarbeitung im Bauwesen Markus Uhlmann 11

Upload: vuonghanh

Post on 07-Mar-2018

253 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Informationsverarbeitung im Bauwesen · PDF fileEinführung in Excel/VBA VBA 4. Struktur von (VBA) Programmen ... (Quelltext: VBA) Einführung in OOP. Benutzen von Objekten. Informationsverarbeitung

Informationsverarbeitung im Bauwesen

1

Informationsverarbeitung im Bauwesen

Markus Uhlmann

11

Page 2: Informationsverarbeitung im Bauwesen · PDF fileEinführung in Excel/VBA VBA 4. Struktur von (VBA) Programmen ... (Quelltext: VBA) Einführung in OOP. Benutzen von Objekten. Informationsverarbeitung

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

Page 3: Informationsverarbeitung im Bauwesen · PDF fileEinführung in Excel/VBA VBA 4. Struktur von (VBA) Programmen ... (Quelltext: VBA) Einführung in OOP. Benutzen von Objekten. Informationsverarbeitung

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

Page 4: Informationsverarbeitung im Bauwesen · PDF fileEinführung in Excel/VBA VBA 4. Struktur von (VBA) Programmen ... (Quelltext: VBA) Einführung in OOP. Benutzen von Objekten. Informationsverarbeitung

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

Page 5: Informationsverarbeitung im Bauwesen · PDF fileEinführung in Excel/VBA VBA 4. Struktur von (VBA) Programmen ... (Quelltext: VBA) Einführung in OOP. Benutzen von Objekten. Informationsverarbeitung

Informationsverarbeitungim Bauwesen

5

Gliederung

I. Einführung in objektorientierte Programmierung

II. Benutzen von Objektvariablen in VBA

III.Benutzerdefinierte Klassen (Vorlesung 12)

Page 6: Informationsverarbeitung im Bauwesen · PDF fileEinführung in Excel/VBA VBA 4. Struktur von (VBA) Programmen ... (Quelltext: VBA) Einführung in OOP. Benutzen von Objekten. Informationsverarbeitung

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

Page 7: Informationsverarbeitung im Bauwesen · PDF fileEinführung in Excel/VBA VBA 4. Struktur von (VBA) Programmen ... (Quelltext: VBA) Einführung in OOP. Benutzen von Objekten. Informationsverarbeitung

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

Page 8: Informationsverarbeitung im Bauwesen · PDF fileEinführung in Excel/VBA VBA 4. Struktur von (VBA) Programmen ... (Quelltext: VBA) Einführung in OOP. Benutzen von Objekten. Informationsverarbeitung

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

Page 9: Informationsverarbeitung im Bauwesen · PDF fileEinführung in Excel/VBA VBA 4. Struktur von (VBA) Programmen ... (Quelltext: VBA) Einführung in OOP. Benutzen von Objekten. Informationsverarbeitung

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

Page 10: Informationsverarbeitung im Bauwesen · PDF fileEinführung in Excel/VBA VBA 4. Struktur von (VBA) Programmen ... (Quelltext: VBA) Einführung in OOP. Benutzen von Objekten. Informationsverarbeitung

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

Page 11: Informationsverarbeitung im Bauwesen · PDF fileEinführung in Excel/VBA VBA 4. Struktur von (VBA) Programmen ... (Quelltext: VBA) Einführung in OOP. Benutzen von Objekten. Informationsverarbeitung

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

Page 12: Informationsverarbeitung im Bauwesen · PDF fileEinführung in Excel/VBA VBA 4. Struktur von (VBA) Programmen ... (Quelltext: VBA) Einführung in OOP. Benutzen von Objekten. Informationsverarbeitung

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

Page 13: Informationsverarbeitung im Bauwesen · PDF fileEinführung in Excel/VBA VBA 4. Struktur von (VBA) Programmen ... (Quelltext: VBA) Einführung in OOP. Benutzen von Objekten. Informationsverarbeitung

Informationsverarbeitungim Bauwesen

13

II. Benutzen von Objektvariablen in VBA

Page 14: Informationsverarbeitung im Bauwesen · PDF fileEinführung in Excel/VBA VBA 4. Struktur von (VBA) Programmen ... (Quelltext: VBA) Einführung in OOP. Benutzen von Objekten. Informationsverarbeitung

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

Page 15: Informationsverarbeitung im Bauwesen · PDF fileEinführung in Excel/VBA VBA 4. Struktur von (VBA) Programmen ... (Quelltext: VBA) Einführung in OOP. Benutzen von Objekten. Informationsverarbeitung

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

Page 16: Informationsverarbeitung im Bauwesen · PDF fileEinführung in Excel/VBA VBA 4. Struktur von (VBA) Programmen ... (Quelltext: VBA) Einführung in OOP. Benutzen von Objekten. Informationsverarbeitung

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

Page 17: Informationsverarbeitung im Bauwesen · PDF fileEinführung in Excel/VBA VBA 4. Struktur von (VBA) Programmen ... (Quelltext: VBA) Einführung in OOP. Benutzen von Objekten. Informationsverarbeitung

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

Page 18: Informationsverarbeitung im Bauwesen · PDF fileEinführung in Excel/VBA VBA 4. Struktur von (VBA) Programmen ... (Quelltext: VBA) Einführung in OOP. Benutzen von Objekten. Informationsverarbeitung

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

Page 19: Informationsverarbeitung im Bauwesen · PDF fileEinführung in Excel/VBA VBA 4. Struktur von (VBA) Programmen ... (Quelltext: VBA) Einführung in OOP. Benutzen von Objekten. Informationsverarbeitung

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

Page 20: Informationsverarbeitung im Bauwesen · PDF fileEinführung in Excel/VBA VBA 4. Struktur von (VBA) Programmen ... (Quelltext: VBA) Einführung in OOP. Benutzen von Objekten. Informationsverarbeitung

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)

Page 21: Informationsverarbeitung im Bauwesen · PDF fileEinführung in Excel/VBA VBA 4. Struktur von (VBA) Programmen ... (Quelltext: VBA) Einführung in OOP. Benutzen von Objekten. Informationsverarbeitung

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

Page 22: Informationsverarbeitung im Bauwesen · PDF fileEinführung in Excel/VBA VBA 4. Struktur von (VBA) Programmen ... (Quelltext: VBA) Einführung in OOP. Benutzen von Objekten. Informationsverarbeitung

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

Page 23: Informationsverarbeitung im Bauwesen · PDF fileEinführung in Excel/VBA VBA 4. Struktur von (VBA) Programmen ... (Quelltext: VBA) Einführung in OOP. Benutzen von Objekten. Informationsverarbeitung

Informationsverarbeitungim Bauwesen

23

Bsp: Collection

(Quelltext: VBA)

Einführung in OOP

Benutzen von Objekten

Page 24: Informationsverarbeitung im Bauwesen · PDF fileEinführung in Excel/VBA VBA 4. Struktur von (VBA) Programmen ... (Quelltext: VBA) Einführung in OOP. Benutzen von Objekten. Informationsverarbeitung

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

Page 25: Informationsverarbeitung im Bauwesen · PDF fileEinführung in Excel/VBA VBA 4. Struktur von (VBA) Programmen ... (Quelltext: VBA) Einführung in OOP. Benutzen von Objekten. Informationsverarbeitung

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

Page 26: Informationsverarbeitung im Bauwesen · PDF fileEinführung in Excel/VBA VBA 4. Struktur von (VBA) Programmen ... (Quelltext: VBA) Einführung in OOP. Benutzen von Objekten. Informationsverarbeitung

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

Page 27: Informationsverarbeitung im Bauwesen · PDF fileEinführung in Excel/VBA VBA 4. Struktur von (VBA) Programmen ... (Quelltext: VBA) Einführung in OOP. Benutzen von Objekten. Informationsverarbeitung

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

Page 28: Informationsverarbeitung im Bauwesen · PDF fileEinführung in Excel/VBA VBA 4. Struktur von (VBA) Programmen ... (Quelltext: VBA) Einführung in OOP. Benutzen von Objekten. Informationsverarbeitung

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

Page 29: Informationsverarbeitung im Bauwesen · PDF fileEinführung in Excel/VBA VBA 4. Struktur von (VBA) Programmen ... (Quelltext: VBA) Einführung in OOP. Benutzen von Objekten. Informationsverarbeitung

Informationsverarbeitungim Bauwesen

29

Bsp: Range

(Quelltext: VBA)

Einführung in OOP

Benutzen von Objekten

Page 30: Informationsverarbeitung im Bauwesen · PDF fileEinführung in Excel/VBA VBA 4. Struktur von (VBA) Programmen ... (Quelltext: VBA) Einführung in OOP. Benutzen von Objekten. Informationsverarbeitung

Informationsverarbeitungim Bauwesen

30

Bsp: Polygon

(Quelltext: VBA)

Einführung in OOP

Benutzen von Objekten

(Zu Aufgabe 5)

Page 31: Informationsverarbeitung im Bauwesen · PDF fileEinführung in Excel/VBA VBA 4. Struktur von (VBA) Programmen ... (Quelltext: VBA) Einführung in OOP. Benutzen von Objekten. Informationsverarbeitung

Informationsverarbeitungim Bauwesen

31

Ausblick

Thema der nächsten Vorlesung: Benutzerdefinierte Klassen in VBA