objektorientierung mit vba
Download
Skip this Video
Download Presentation
Objektorientierung mit VBA

Loading in 2 Seconds...

play fullscreen
1 / 45

Objektorientierung mit VBA - PowerPoint PPT Presentation


  • 80 Views
  • Uploaded on

Objektorientierung mit VBA. Visual Basic for Applications Klassen und Objekte Übungen Christoph Oberweis. Agenda. VBA Daten in VBA Modelle und Modellbildung Klassen – Objekte - Beziehungen Übungen COM Quellen. C.O. Agenda. VBA Daten in VBA Modelle und Modellbildung

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Objektorientierung mit VBA' - zarita


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
objektorientierung mit vba

Objektorientierung mit VBA

Visual Basic for Applications

Klassen und Objekte

Übungen

Christoph Oberweis

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

C.O.

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

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

C.O.

slide4
VBA …

… ist eine Programmiersprache

… ist in die Office-Anwendungen integriert

… erlaubt das Arbeiten mit Objekten

… kann als Schnittstelle zu Office, aber auch zu

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Windows - Ressourcen insgesamt benutzt werden

C.O.

wo versteckt sich vba
Wo versteckt sich VBA?

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

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Zurück zur Office Anwendung: Hier klicken

C.O.

zun chst ein warming up
Zunächst ein „warming up“

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Einfache Ausgabe - Anweisung

1. Schritt: Excel/Word aufrufen

2. Schritt: Mit <Alt> <F11> 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 <F5> Programm starten

7. Schritt: Programm testen, gegebenenfalls korrigieren

8. Schritt: Mit <Alt><F11> zurück zu Excel

C.O.

weitere m glichkeiten
Weitere Möglichkeiten

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

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.

C.O.

deklaration von variablen
Deklaration von Variablen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Deklaration ist zwingend (kann abgestellt werden)

Deklaration zweier Variablen mit Typenangabe

Option Explicit

Dim net As Double

Dim x As Integer

C.O.

modelle und modellierung
Modelle und Modellierung

Wirkliche Welt: Autohaus

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

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

C.O.

diesen da
Diesen da ...

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

C.O.

slide11

... picken wir uns mal raus…

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

C.O.

slide12

…und untersuchen ihn genauer!

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

C.O.

objektive tatsachen
„Objektive“ Tatsachen!

Kfz

Hersteller= „Daihatsu“

Typ= „Terios“

………

Hubraum= 1495

………

Farbe= „metallic silber“

…….

VKPreis= 17800,00

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

„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.

C.O.

produktion am flie band
Produktion am Fließband

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

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

C.O.

produktion am flie band1
Produktion am Fließband

Kfz

Hersteller: Text

Typ: Text

………

Hubraum: Ganzzahl

………

Farbe: Text

…….

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

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

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

C.O.

klasse fertig
Klasse: Fertig!

Notation in UML (Unified Modeling Language)

Kfz

Hersteller: Text

Typ: Text

………

Hubraum: Ganzzahl

………

Farbe: Text

…….

VKPreis: Währung

Erfassung()

Ändern()

Löschen()

Drucken()

……………

Klassenname

Attribute

Methoden

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

C.O.

von der klasse
Von der Klasse …

„Abstrakter“ Bauplan

Kfz

Hersteller: Text

Typ: Text

………

Hubraum: Ganzzahl

………

Farbe: Text

…….

VKPreis: Währung

Erfassung()

Ändern()

Löschen()

Drucken()

……………

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

C.O.

zum objekt
... zum Objekt

„Konkretes“ individuelles Fahrzeug

:Kfz

Hersteller= „Daihatsu“

Typ= „Terios“

………

Hubraum= 1495

………

Farbe= „metallic silber“

…….

VKPreis= 17800,00

Erfassung()

Ändern()

Löschen()

Drucken()

……………

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

C.O.

die erste eigene klasse
Die erste eigene Klasse

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

C.O.

klasse erfassen
Klasse erfassen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

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

C.O.

klasse erfassen1
Klasse erfassen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

… und die neue Klasse anlegen.

C.O.

klasse erfassen2
Klasse erfassen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Doppelklick auf „Klasse“...

... und Name ändern (Kfz)!

C.O.

klasse erfassen3
Klasse erfassen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

C.O.

klasse erl uterungen
Klasse: Erläuterungen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

C.O.

klasse erl uterungen1
Klasse: Erläuterungen

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.

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

C.O.

das testprogramm
Das Testprogramm

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

C.O.

das testprogramm1
Das Testprogramm

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Noch besser: Fachkonzept unter „Module“ codieren.

C.O.

erl uterungen
Erläuterungen

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

C.O.

erl uterungen1
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

C.O.

programmtest
Programmtest

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Es klappt:

C.O.

beziehungen zwischen klassen objekten
Beziehungen zwischen Klassen/Objekten

Ü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

C.O.

beziehungen zwischen klassen objekten1
Beziehungen zwischen Klassen/Objekten

Ü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

Assoziation zwischen Klassen

C.O.

beziehungen zwischen klassen objekten2
Beziehungen zwischen Klassen/Objekten

Ü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

Assoziation zwischen Klassen

Eine Methode der Klasse nutzen:

Auto1.erfassen a, b, c

C.O.

jetzt wird gerechnet
Jetzt wird gerechnet!

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

C.O.

slide35
Tipp

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

C.O.

testprogramm
Testprogramm

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

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

C.O.

und weiter geht s
Und weiter geht‘s!

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)!

C.O.

slide38

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

C.O.

slide39

Das Dateisystem als Komponente

FileSystemObject

Drives

getFile(pfad):File

moveFile(quellPfad, zielPfad)

……………..

File

Name

DatelastModified

parentFolder

moveFile(zielPfad)

……………..

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

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

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.

C.O.

C.O.

slide40

Das Dateisystem als Komponente

Z1Z2Z3Z4

Set FSObjekt = CreateObject("Scripting.FileSystemObject")

Set Datei = FSObjekt.getFile("h:\SE\test1.txt")

Datei.move "h:\SX\"

MsgBox "Dateien umkopiert!„

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

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.

C.O.

C.O.

slide41

Sequenzdiagramm

Erklärung:

Beispiel: Zubehörshop desAutohauses

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

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

C.O.

C.O.

C.O.

slide42

Unser Beispiel

Sequenzdiagramm für den Anwendungsfall „Datei verschieben“

(new)

FSObjekt:

FileSystemObject

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

Durch getFile wurde ein neues Objekt erzeugt!

getFile(…)

Datei:

File

move(…)

Folge: Datei ist verschoben!

C.O.

C.O.

C.O.

slide43

Wer hat wann zugegriffen?

Nochmals zurück zur Klasse „File“:

File

Name

DatelastModified

parentFolder

moveFile(zielPfad)

……………..

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

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).

C.O.

C.O.

C.O.

slide44

Lösung der Aufgabe

VBA

Daten

Modelle und Modellierung

Klassen-Objekte- Beziehungen

Übungen

COM

Quellen

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

C.O.

C.O.

quellen
Quellen

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

C.O.

ad