11 im Bauwesen Markus Uhlmann 1
Zusammenfassung der 10. Vorlesung Benutzerdefinierte Datentypen Wieso zusätzliche Datentypen? Definition neuer Datentypen Verwendung von Variablen mit benutzerdefiniertem Typ Beispiele: Kundenkartei Komplexe Zahlen Partikelsimulation 2
Inhalt / Planung der Vorlesung 1. Informationsdarstellung & -verarbeitung Grundlagen 2. Betriebssysteme, Programmiersprachen * 3. Excel/VBA VBA 4. 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 Matlab 14. Matlab II * 3
Inhalt der heutigen Vorlesung Objektorientierte Programmierung () Wozu eigentlich? Was unterscheidet von traditionellen Techniken? Verwendung von vordefinierten Objekten Beispiele: Collection Objekt Range Objekt 4
Gliederung I. objektorientierte Programmierung II. von Objektvariablen in VBA III.Benutzerdefinierte Klassen (Vorlesung 12) 5
Objektorientierte Programmierung Was ist ein Objekt? Einführung in 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 6
Elemente Einführung in Objekte beinhalten: Methoden Eigenschaften [Ereignisse] Beispiel: Auto Objekt Methoden Eigenschaften Methoden: Bremsen, Schalten, Gasgeben, Lenken, Eigenschaften: Geschwindigkeit, Fahrtrichtung, Gang, Beispiel: Excel Shape-Objekt Methoden: Select, Copy, Delete, Eigenschaften: AutoShapeType, Width, Top, 7
Information über Objekte Von Excel bereitgestellte Objekte Einführung in Objektkatalog gibt detaillierte Information über Klassen Klasse Bibliothek Methode Eigenschaft Ereignis Aufzählung Konstante 8
Merkmale von Die drei Säulen der objektorientierten Programmierung Einführung in 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] 9
Kapselung von Objektdaten Zugriff auf Objekte über Schnittstellen Einführung in Objekte können öffentliche und verborgene Elemente besitzen öffentliche Methoden & Eigenschaften Schnittstelle verborgene Methoden & Eigenschaften Objekt 10
Polymorphie Einführung in 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 werden Interna sind völlig unterschiedlich, jedoch für den Benutzer des Objektes oft unerheblich Vorteil: Vereinfachung bei der Nutzung Beispiel mit Excel-VBA Objekten: Tabelle1.Copy UserForm1.Copy 11
Objekte und Vererbung Einführung in Vererbung Methoden/Eigenschaften werden an abgeleitete Klassen weitergegeben Einsparung von Programmieraufwand, Fehlerreduzierung Beispiel: Elternklasse Eigenschaft A Methode A Kindklasse Eigenschaft B Methode B Objekte der Kindklasse besitzen Eigenschaften A und B 12
II. von Objektvariablen in VBA 13
Deklaration und Zuweisung Deklarieren von Objektvariablen Syntax: Dim variablename As classname Objektvariable wird angelegt, zeigt aber noch auf keine gültige Speicheradresse (Wert = Nothing ) Zuweisen von Objektreferenzen Syntax: Set variablename = objectreference Objektvariable zeigt nun auf ein existierendes Objekt Dies ist eine Referenz (keine Kopie) des Objektes Referenz = Zeiger auf Speicherplatzadresse 14
Objektvariablen sind Referenzen! Nicht-Objektvariable: Abkürzung für Speicheradresse Dim i As Integer i=10 i Speicherinhalt 10 Adresse 324562 Objektvariable: Referenz (pointer) auf eigentliche Daten Dim myobj As Shape Set myobj=addshape( ) Speicherinhalt Adresse myobj 643295 324562 (Shape ) 643295 15
Deklaration und Zuweisung Beispiel zur Zuweisung von Referenzen Änderung eines Objektes wirkt sich auf alle Referenzen aus! (Quelltext: VBA) 16
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 17
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 18
Lebensdauer 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 19
WITH: Vereinfachte Objektreferenz Verkürzung der Referenz auf Objekte Syntax: With object [Anweisungen] End With Im Inneren des With-Blockes sind verkürzte Referenzen auf Objekte möglich (relative Referenzen) Lesbarkeit des Programmtextes Schnellere Ausführung durch einmalige Objektidentifizierung Beispiel: With Worksheets( Tabelle1 ) Range( A1 )=5 Range( B5 )=7 End With (Quelltext: VBA) 20
Auflistungen 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 21
Auflistungen (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 22
Bsp: Collection (Quelltext: VBA) 23
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 24
Das Range Objekt (2) Absoluter Zugriff auf Zelle C4 Range( C4 ) Relativer Zugriff auf Zelle C4 Range( B2 )(3,2) oder Range( B2 ).Offset(2,1) Zeile Spalte inkrementell Spaltenindex C5 Referenzzelle Spalten Zeilenindex Zeilen C4 25
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) 26
Das Range Objekt (4) Methoden: Markierung eines Bereiches:.Select Löschen der Formatierung/des Inhaltes.Clear /.ClearContents + viele weitere... (siehe Umdruck, Excel-Hilfe/Objektkatalog) 27
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) 28
Bsp: Range (Quelltext: VBA) 29
Bsp: Polygon (Zu Aufgabe 5) (Quelltext: VBA) 30
Ausblick Thema der nächsten Vorlesung: Benutzerdefinierte Klassen in VBA 31