Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis."—  Präsentation transkript:

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

2 2 Agenda VBA Daten in VBA Modelle und Modellbildung Klassen – Objekte - Beziehungen Übungen COM Quellen C.O.

3 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

4 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 zu Windows - 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

5 5 Wo versteckt sich VBA? C.O. Wechsel mit 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

6 6 Zunächst ein warming up C.O. 1. Schritt: Excel/Word aufrufen 2. Schritt: Mit in die Programmierumgebung wechseln 3. Schritt: Diese Arbeitsmappe anklicken (Das wird später anders gemacht!) 4. Schritt: Falls jetzt schon Programmcode erscheint, diesen löschen 5. Schritt: Obiges Programm eingeben 6. Schritt: Mit Programm starten 7. Schritt: Programm testen, gegebenenfalls korrigieren 8. Schritt: Mit zurück zu Excel 1. Schritt: Excel/Word aufrufen 2. Schritt: Mit in die Programmierumgebung wechseln 3. Schritt: Diese Arbeitsmappe anklicken (Das wird später anders gemacht!) 4. Schritt: Falls jetzt schon Programmcode erscheint, diesen löschen 5. Schritt: Obiges Programm eingeben 6. Schritt: Mit Programm starten 7. Schritt: Programm testen, gegebenenfalls korrigieren 8. Schritt: Mit 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

7 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

8 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

9 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

10 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

11 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

12 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

13 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

14 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. VBA Daten Modelle und Modellierung Klassen- Objekte- Beziehungen Übungen COM Quellen VBA Daten Modelle und Modellierung Klassen- Objekte- Beziehungen Übungen COM Quellen

15 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. Kfz Hersteller: Text Typ: 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). VBA Daten Modelle und Modellierung Klassen- Objekte- Beziehungen Übungen COM Quellen VBA Daten Modelle und Modellierung Klassen- Objekte- Beziehungen Übungen COM Quellen

16 16 Klasse: Fertig! C.O. Kfz Hersteller: Text Typ: 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

17 17 Von der Klasse … C.O. Kfz Hersteller: Text Typ: 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

18 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

19 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. VBA Daten Modelle und Modellierung Klassen- Objekte- Beziehungen Übungen COM Quellen VBA Daten Modelle und Modellierung Klassen- Objekte- Beziehungen Übungen COM Quellen

20 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

21 21 C.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

22 22 C.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

23 23 C.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

24 24 C.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

25 25 C.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

26 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

27 27 C.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

28 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

29 29 C.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! VBA Daten Modelle und Modellierung Klassen- Objekte- Beziehungen Übungen COM Quellen VBA Daten Modelle und Modellierung Klassen- Objekte- Beziehungen Übungen COM Quellen

30 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

31 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

32 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

33 33 C.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

34 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

35 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 = EkP End Sub Function Ausgeben_Bezeichnung() Ausgeben_Bezeichnung = Bezeichnung End Function Function Ermitteln_VK_Preis() Ermitteln_VK_Preis = (EK_Preis * K_Faktor / 100) + EK_Preis End Function VBA Daten Modelle und Modellierung Klassen- Objekte- Beziehungen Übungen COM Quellen VBA Daten Modelle und Modellierung Klassen- Objekte- Beziehungen Übungen COM Quellen

36 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 = Nothing End Sub VBA Daten Modelle und Modellierung Klassen- Objekte- Beziehungen Übungen COM Quellen VBA Daten Modelle und Modellierung Klassen- Objekte- Beziehungen Übungen COM Quellen

37 37 Und weiter gehts! 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)!

38 38 C.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

39 39 C.O. Das Dateisystem als Komponente FileSystemObject Drives getFile(pfad):File moveFile(quellPfad, zielPfad) …………….. Stark vereinfachte Klassenmodelle der COM – Komponente, die für das Dateisystem zuständig ist. File Name DatelastModified parentFolder 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. VBA Daten Modelle und Modellierung Klassen- Objekte- Beziehungen Übungen COM Quellen VBA Daten Modelle und Modellierung Klassen- Objekte- Beziehungen Übungen COM Quellen

40 40 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! Z1 Z2 Z3 Z4 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

41 41 C.O. Sequenzdiagramm C.O. Erklärung: 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

42 42 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

43 43 C.O. Wer hat wann zugegriffen? C.O. File Name DatelastModified parentFolder 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). VBA Daten Modelle und Modellierung Klassen- Objekte- Beziehungen Übungen COM Quellen VBA Daten Modelle und Modellierung Klassen- Objekte- Beziehungen Übungen COM Quellen

44 44 C.O. Set FSObjekt = CreateObject("Scripting.FileSystemObject") Set Ordner = FSObjekt.getFolder("c:\SE\") Set Dateien = Ordner.files Set 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.files Set 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

45 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


Herunterladen ppt "Objektorientierung mit VBA Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis."

Ähnliche Präsentationen


Google-Anzeigen