Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph...

45
Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis

Transcript of Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph...

Page 1: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

Objektorientierung mit VBA

Visual Basic for Applications

Klassen und Objekte

Übungen

Christoph Oberweis

Page 2: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

2

Agenda

VBA Daten in VBA Modelle und Modellbildung Klassen – Objekte - Beziehungen Übungen COM Quellen

C.O.

Page 3: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

3

Agenda

C.O.

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA Daten in VBA Modelle und Modellbildung Klassen – Objekte - Beziehungen Übungen COM Quellen

Page 4: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

4

VBA …

C.O.

… ist eine Programmiersprache

… ist in die Office-Anwendungen integriert

… erlaubt das Arbeiten mit Objekten

… kann als Schnittstelle zu Office, aber auch zuWindows - Ressourcen insgesamt benutzt werden

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 5: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

5

Wo versteckt sich VBA?

C.O.

Wechsel mit <Alt> <F11> von der Office Anwendung in das VBA – Programmiersystem

Zurück zur Office Anwendung: Hier klicken

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 6: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

6

Zunächst ein „warming up“

C.O.

1. Schritt: Excel/Word aufrufen2. Schritt: Mit <Alt> <F11> in die Programmierumgebung wechseln3. Schritt: „Diese Arbeitsmappe“ anklicken (Das wird später anders gemacht!)4. Schritt: Falls jetzt schon Programmcode erscheint, diesen löschen5. Schritt: Obiges Programm eingeben6. Schritt: Mit <F5> Programm starten7. Schritt: Programm testen, gegebenenfalls korrigieren8. Schritt: Mit <Alt><F11> zurück zu Excel

1. Schritt: Excel/Word aufrufen2. Schritt: Mit <Alt> <F11> in die Programmierumgebung wechseln3. Schritt: „Diese Arbeitsmappe“ anklicken (Das wird später anders gemacht!)4. Schritt: Falls jetzt schon Programmcode erscheint, diesen löschen5. Schritt: Obiges Programm eingeben6. Schritt: Mit <F5> Programm starten7. Schritt: Programm testen, gegebenenfalls korrigieren8. Schritt: Mit <Alt><F11> zurück zu Excel

Einfache Ausgabe - Anweisung

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 7: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

7

Weitere Möglichkeiten

C.O.

Auch hier kann das Programm gestartet werden: ein Klick genügt!

… und wenn es mal abgestürzt ist: hier klicken.

Und wer es ganz genau wissen will: F8 ist der Einzelschritt-Mode zum Debugen.

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 8: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

8

Deklaration von Variablen

C.O.

Option Explicit

Dim net As Double

Dim x As Integer

Deklaration ist zwingend (kann abgestellt werden)

Deklaration zweier Variablen mit Typenangabe

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 9: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

9

Modelle und Modellierung

C.O.

Wirkliche Welt: Autohaus

Modell: Idealisierte Darstellung (Abbildung) der realen Welt zur Veranschaulichung bestimmter Sachverhalte/Eigenschaften/Prozesse, Vereinfachung der Realität

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 10: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

10

Diesen da ...

C.O.

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 11: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

11

C.O.

... picken wir uns mal raus…

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 12: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

12

C.O.

…und untersuchen ihn genauer!

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 13: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

13

„Objektive“ Tatsachen!

C.O.

Kfz

Hersteller= „Daihatsu“Typ= „Terios“………Hubraum= 1495………Farbe= „metallic silber“…….VKPreis= 17800,00

„konkretes“ individuelles Fahrzeug „abstrakte“ Darstellung

Beachte: Zu jedem Fahrzeug gehört eine Herstellerangabe eine Typenangabe usw. (Gemeinsamkeit); diese Attribute haben je nach Kfz einen unterschiedlichen Inhalt.

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 14: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

14

Produktion am Fließband

C.O.

Schablone, nach diesem „Bauplan“ können (fast) unendlich viele Fahrzeuge gebaut werden. Allerdings benötigt dieser Plan exakte Angaben zu den Details des Fahrzeugs.

Schablone, nach diesem „Bauplan“ können (fast) unendlich viele Fahrzeuge gebaut werden. Allerdings benötigt dieser Plan exakte Angaben zu den Details des Fahrzeugs.

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 15: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

15

Produktion am Fließband

C.O.

Schablone, nach diesem „Bauplan“ können (fast) unendlich viele Fahrzeuge gebaut werden. Allerdings benötigt dieser Plan exakte Angaben zu den Details des Fahrzeugs.

Schablone, nach diesem „Bauplan“ können (fast) unendlich viele Fahrzeuge gebaut werden. Allerdings benötigt dieser Plan exakte Angaben zu den Details des Fahrzeugs.

Kfz

Hersteller: TextTyp: Text………Hubraum: Ganzzahl………Farbe: Text…….

So könnte der Bauplan formuliert sein: Attribute: Variablen mit Typenangabe als Informationen zu den Eigenschaften des Fahrzeugs (Vorstufe einer Klasse).

So könnte der Bauplan formuliert sein: Attribute: Variablen mit Typenangabe als Informationen zu den Eigenschaften des Fahrzeugs (Vorstufe einer Klasse).

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 16: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

16

Klasse: Fertig!

C.O.

Kfz

Hersteller: TextTyp: Text………Hubraum: Ganzzahl………Farbe: Text…….VKPreis: Währung

Erfassung()Ändern()Löschen()Drucken()……………

Klassenname

Attribute

Methoden

Notation in UML (Unified Modeling Language)

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 17: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

17

Von der Klasse …

C.O.

Kfz

Hersteller: TextTyp: Text………Hubraum: Ganzzahl………Farbe: Text…….VKPreis: Währung

Erfassung()Ändern()Löschen()Drucken()……………

„Abstrakter“ Bauplan

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 18: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

18

... zum Objekt

C.O.

:Kfz

Hersteller= „Daihatsu“Typ= „Terios“………Hubraum= 1495………Farbe= „metallic silber“…….VKPreis= 17800,00

Erfassung()Ändern()Löschen()Drucken()……………

„Konkretes“ individuelles Fahrzeug

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 19: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

19

Die erste eigene Klasse

C.O.

Die Klasse besitzt drei Attribute und zwei Methoden. Damit lässt sich in der Realität selbstverständlich kein Fahrzeug hinreichend modellieren – es geht jetzt zunächst darum, die Klasse und ein dazu passendes Testprogramm in VBA zu implementieren.

Die Klasse besitzt drei Attribute und zwei Methoden. Damit lässt sich in der Realität selbstverständlich kein Fahrzeug hinreichend modellieren – es geht jetzt zunächst darum, die Klasse und ein dazu passendes Testprogramm in VBA zu implementieren.

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 20: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

20

Klasse erfassen

C.O.

Hier den Menüpunkt „Klassenmodul“ anwählen …

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 21: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

21C.O.

… und die neue Klasse anlegen.

Klasse erfassen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 22: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

22C.O.

Klasse erfassen

Doppelklick auf „Klasse“...

... und Name ändern (Kfz)!

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 23: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

23C.O.

Klasse erfassen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 24: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

24C.O.

Klasse: Erläuterungen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 25: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

25C.O.

Private Hersteller

Das Attribut „Hersteller“ darf nur von „Verarbei-tungsschritten“ der eigenen Klasse manipuliert wer-den (Kapselung). Das Gegenstück wäre „Public“, wenn die Attribute allerdings dann „von überall“ verändert werden können, ist das Einrichten einer Klasse eigentlich unsinnig.

Sub erfassen(her, ty, hub)

Sub kennzeichnet eine Methode der Klasse, in den Klammern stehen Platzhalter (Variablen) für die Daten, die von außen (vom Testprogramm) dem Objekt übermittelt werden. Die Verarbeitungs-schritte stehen zwischen Sub und End Sub.

Hersteller = her

Das Attribut „Hersteller“ erhält den Wert, der in Her von außen an das Attribut übermittelt wurde.

Function ErmittleTyp()

 Der im Objekt gespeicherte Wert für den Autotyp soll an das Testprogramm zurückgeliefert werden.

Klasse: Erläuterungen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 26: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

26

Das Testprogramm

C.O.

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 27: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

27C.O.

Das Testprogramm

Noch besser: Fachkonzept unter „Module“ codieren.

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 28: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

28

Erläuterungen

C.O.

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 29: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

29C.O.

Erläuterungen

Das Testprogramm setzt hier die Werte der Attribute. In der Praxis wäre die Quelle dieser Daten z. B. eine Datenbank. Ein Programm, welches die Daten zu-nächst setzt und dann unmittelbar danach wieder abfragt, ist aus der Sicht der Praxis „unsinnig“. Es wäre eher so, dass ein Programm für die Erfassung der Daten zuständig ist und ein anders für die Weiter-verarbeitung. Das wird auch später so vorgeführt – jetzt geht es zunächst einmal nur darum, den „Mecha-nismus“ zu begreifen. Daher wurde auch die Bezeich-nung „Testprogramm“ gewählt!

Das Testprogramm setzt hier die Werte der Attribute. In der Praxis wäre die Quelle dieser Daten z. B. eine Datenbank. Ein Programm, welches die Daten zu-nächst setzt und dann unmittelbar danach wieder abfragt, ist aus der Sicht der Praxis „unsinnig“. Es wäre eher so, dass ein Programm für die Erfassung der Daten zuständig ist und ein anders für die Weiter-verarbeitung. Das wird auch später so vorgeführt – jetzt geht es zunächst einmal nur darum, den „Mecha-nismus“ zu begreifen. Daher wurde auch die Bezeich-nung „Testprogramm“ gewählt!

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 30: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

30

Programmtest

C.O.

Es klappt:

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 31: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

31

Beziehungen zwischen Klassen/Objekten

C.O.

Überlegung: Wie ist nun der Zusammenhang zwischen dem Testprogramm und dem Objekt „Kfz“ (Fachkonzept) zu modellieren?

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 32: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

32

Beziehungen zwischen Klassen/Objekten

C.O.

Überlegung: Wie ist nun der Zusammenhang zwischen dem Testprogramm und dem Objekt „Kfz“ (Fachkonzept) zu modellieren?

Assoziation zwischen Klassen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 33: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

33C.O.

Überlegung: Wie ist nun der Zusammenhang zwischen dem Testprogramm und dem Objekt „Kfz“ (Fachkonzept) zu modellieren?

Assoziation zwischen Klassen

Eine Methode der Klasse nutzen:

Auto1.erfassen a, b, c

Beziehungen zwischen Klassen/Objekten

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 34: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

34

Jetzt wird gerechnet!

C.O.

Aufgabe:

Für den Autoteilezubehörshop ist eine ähnliche Klasse wie bei dem vorherigen Beispiel festzulegen.

Die Verkaufspreisberechnung funktioniert folgendermaßen: Der VK Preis (netto) ergibt sich aus dem Einkaufspreis multipliziert mit dem Kalkulationsfaktor (Prozentzahl).

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 35: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

35

Tipp

C.O.

Die Klasse:

Option Explicit Private Artikelnummer As Integer Private Bezeichnung As String Private EK_Preis As Double Private K_Faktor As Double Sub erfassen(EkP As Double) Artikelnummer = 1234 Bezeichnung = "Sitzschoner" K_Faktor = 50 EK_Preis = EkPEnd Sub Function Ausgeben_Bezeichnung() Ausgeben_Bezeichnung = BezeichnungEnd FunctionFunction Ermitteln_VK_Preis() Ermitteln_VK_Preis = (EK_Preis * K_Faktor / 100) + EK_PreisEnd Function

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 36: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

36

Testprogramm

C.O.

Sub Testprg() Dim Autoz As Kfz_Zubehoer Dim bez As String Dim EP As Double Dim VkP As Double Set Autoz = New Kfz_Zubehoer EP = InputBox("Bitte Einkaufspreis eingeben: ") Autoz.erfassen EP MsgBox (Autoz.Ausgeben_Bezeichnung) MsgBox (Autoz.Ermitteln_VK_Preis) Set Auto1 = NothingEnd Sub

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 37: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

37

Und weiter geht‘s!

C.O.

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Aufgabe:

Welche weiteren Methoden finden Sie für dieses Beispiel?

Erweitern Sie die Klasse kfz und codieren Sie Ihre Lösung(en)!

Page 38: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

38C.O.

Component Object Model

Das Component Object Model (COM) erlaubt (u. a.) den objektorientierten Zugriff auf Computerdienste mit VBS/VBA.

COM ist damit eine spezielle API.

In diesem Zusammenhang ist unter Komponente eine compilierte Programmdatei zu verstehen, welche i. d. R. mehrere Klassen enthält. Damit werden die entsprechenden Objekte (z. B. unter VBS, aber auch unter C++, C#, Java oder VB) erzeugt, mit denen z. B. der Zugriff auf Funktionen des Betriebssystems Windows realisiert werden kann.

Die folgenden Beispiele orientieren sich an D. JOHLEN (s. Quellen).

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 39: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

39C.O.C.O.

Das Dateisystem als Komponente

FileSystemObject

Drives

getFile(pfad):FilemoveFile(quellPfad, zielPfad)……………..

Stark vereinfachte Klassenmodelle der COM – Komponente, die für das Dateisystem zuständig ist.

File

NameDatelastModifiedparentFolder

moveFile(zielPfad)……………..

Beispiel eines Anwendungsfalls: Eine Datei soll von einem Verzeichnis in ein anderes verschoben werden. Konkret: Die Datei „test1.txt“ im Verzeichnis c:\vz1\ soll in das Verzeichnis c:\vz2\ verschoben werden.

Beispiel eines Anwendungsfalls: Eine Datei soll von einem Verzeichnis in ein anderes verschoben werden. Konkret: Die Datei „test1.txt“ im Verzeichnis c:\vz1\ soll in das Verzeichnis c:\vz2\ verschoben werden.

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 40: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

40C.O.C.O.

Das Dateisystem als Komponente

Set FSObjekt = CreateObject("Scripting.FileSystemObject")Set Datei = FSObjekt.getFile("h:\SE\test1.txt")Datei.move "h:\SX\"MsgBox "Dateien umkopiert!„

Set FSObjekt = CreateObject("Scripting.FileSystemObject")Set Datei = FSObjekt.getFile("h:\SE\test1.txt")Datei.move "h:\SX\"MsgBox "Dateien umkopiert!„

Z1Z2Z3Z4

Z1: Erzeugung des Objektes „FSObjekt“ mit der Methode CreateObject. Als Schnittstellenparameter muss die Klasse „FileSystemObject“ aus dem Paket „Scripting“ angegeben werden.

Z2: Erzeugen des Objektes „Datei“ durch das Senden der Nachricht „getFile“.

Z3: Senden der Nachricht „move“ (inkl. Parameter) an das Objekt „Datei“.

Z1: Erzeugung des Objektes „FSObjekt“ mit der Methode CreateObject. Als Schnittstellenparameter muss die Klasse „FileSystemObject“ aus dem Paket „Scripting“ angegeben werden.

Z2: Erzeugen des Objektes „Datei“ durch das Senden der Nachricht „getFile“.

Z3: Senden der Nachricht „move“ (inkl. Parameter) an das Objekt „Datei“.

Sowohl für das Modellieren als auch für die Erklärung eines Programms ist diese verbale Ausdrucksweise „ungeschickt“. UML kennt neben den Klassendiagrammen noch viele weitere Modellierungstechniken. Eine Möglichkeite wird nun vorgestellt.

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 41: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

41C.O.C.O.

Sequenzdiagramm

C.O.

Erklärung:

Das Sequenzdiagramm dient (u. a.) der Darstellung, wie Objekte Nachrichten austauschen. Es werden zeitliche Aspekt berücksichtigt.

Das Sequenzdiagramm dient (u. a.) der Darstellung, wie Objekte Nachrichten austauschen. Es werden zeitliche Aspekt berücksichtigt.

Beispiel: Zubehörshop des Autohauses

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 42: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

42C.O.C.O.

Unser Beispiel

C.O.

Sequenzdiagramm für den Anwendungsfall „Datei verschieben“

FSObjekt:

FileSystemObject

(new)

Datei:

File

getFile(…)

Durch getFile wurde ein neues Objekt erzeugt!

move(…)

Folge: Datei ist verschoben!

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 43: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

43C.O.C.O.

Wer hat wann zugegriffen?

C.O.

File

NameDatelastModifiedparentFolder

moveFile(zielPfad)……………..

Nochmals zurück zur Klasse „File“:

Aufgabe: Auf das Attribut DatelastModified kann direkt (ohne Methode) zugegriffen werden. Erstellen Sie bitte ein Programm, welches das Datum der letzten Änderung einer beliebigen Datei in einem beliebigen Verzeichnis ermittelt und ausgibt (das entsprechende Sequenzdiagramm bitte nicht vergessen).

Aufgabe: Auf das Attribut DatelastModified kann direkt (ohne Methode) zugegriffen werden. Erstellen Sie bitte ein Programm, welches das Datum der letzten Änderung einer beliebigen Datei in einem beliebigen Verzeichnis ermittelt und ausgibt (das entsprechende Sequenzdiagramm bitte nicht vergessen).

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 44: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

44C.O.C.O.

Set FSObjekt = CreateObject("Scripting.FileSystemObject")Set Ordner = FSObjekt.getFolder("c:\SE\")Set Dateien = Ordner.filesSet Datei = Dateien.item("test1.txt")MsgBox "Datum des letzten Zugriffs: " & Datei.dateLastModified

Set FSObjekt = CreateObject("Scripting.FileSystemObject")Set Ordner = FSObjekt.getFolder("c:\SE\")Set Dateien = Ordner.filesSet Datei = Dateien.item("test1.txt")MsgBox "Datum des letzten Zugriffs: " & Datei.dateLastModified

Lösung der Aufgabe

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Page 45: Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis.

45

Quellen

C.O.

HELD, B. (2000): EXCEL-VBA-Programmierung. - München, Mark und Technik-Verlag

JANKA, A. (2005): VBA mit Word. – Bonn, Galileo Computing – Verlag

JOHLEN, D. (2004): Anwendungsentwicklung.- Holland + Josenhans-Verlag

MARTIN, R. (1999): VBA mit Office 2000 lernen. – Bonn, Addison-Wesley – Verlag

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen