54
Objektorientierte Programmierung mit Visual Basic Entlehnt aus einem Skript von Andreas Terlinden Gerhard-Mercator-Universität Gesamthochschule Duisburg - Fachbereich Wirtschaftswissenschaft - Wirtschaftsinformatik und Operations Research Überarbeitet durch Volker Weyland Version: 1

Objektorientierte Programmierung mit Visual Basic in VB6.pdf · Objektorientierte Programmierung mit Visual Basic Entlehnt aus einem Skript von Andreas Terlinden Gerhard-Mercator-Universität

  • Upload
    vukhanh

  • View
    247

  • Download
    0

Embed Size (px)

Citation preview

Objektorientierte Programmierung mit Visual Basic

Entlehnt aus einem Skript von Andreas Terlinden Gerhard-Mercator-Universität Gesamthochschule Duisburg - Fachbereich Wirtschaftswissenschaft - Wirtschaftsinformatik und Operations Research Überarbeitet durch Volker Weyland Version: 1

Objektorientierte Programmierung mit Visual Basic

1

Inhaltsverzeichnis

1 EINFÜHRUNG IN DIE OBJEKTORIENTIERTE PROGRAMMIERUNG 3

1.1 Objektorientierte Programmierung, WARUM??? 3

1.2 Grundbegriffe der objektorientierten Programmierung 4 1.2.1 Objekt - object 4 1.2.2 Klasse - class 4 1.2.3 Methoden 5 1.2.4 Eigenschaften/Attribute - Properties 5 1.2.5 Kapselung - encapsulation 5 1.2.6 Vererbung - object inheritance 5 1.2.7 Polymorphismus - polymorphism 6 1.2.8 Nachrichtenformat 6 1.2.9 Prozeduren und Methoden 7

1.3 Prinzipien der Objektorientierung 8

1.4 Verdeutl ichung am Beispiel : Schiffe 9

2 EINFÜHRUNG IN VISUAL BASIC 11

2.1 Grundbegriffe 11

2.2 Datentypen 14

2.3 Gültigkeitsbereiche der Daten 16

2.4 Parameterübergabe 17

2.5 Namenskonventionen 18

2.6 wichtige Sprachelemente von VB 20 2.6.1 Schleifen-/ Entscheidungs- und Blockanweisungen 20 2.6.2 Rechenoperatoren 25 2.6.3 Vergleichsoperatoren 25 2.6.4 Verknüpfungsoperatoren 25 2.6.5 Numerische Funktionen 25 2.6.6 Stringfunktionen 27 2.6.7 wichtige Properties 28 2.6.8 wichtige Ereignisse 28 2.6.9 einige Kommandos, die man kennen sollte 29

2.7 Beispiel- und Testprogramme 30 2.7.1 das erste Programm : Gewichtsumrechnung 30 2.7.2 Erweiterung um ein Menü 34 2.7.3 PicView - Dateiauswahl 35 2.7.4 PicView2 - Fehlerbehandlung 37 2.7.5 ein Programm ohne Form 38

3 OBJEKTORIENTIERTE PROGRAMMIERUNG MIT VISUAL BASIC 40

3.1 Welche Konzepte der OOP unterstützt VB6? 40

3.2 Welche Objekte bietet VB6 und welche kann man selbst erstel len 41

Objektorientierte Programmierung mit Visual Basic

2

3.2.1 Formen 41 3.2.2 Steuerelementobjekte 41 3.2.3 Datenzugriffsobjekt 41 3.2.4 Systemobjekte 41 3.2.5 Collection-Objekte 42 3.2.6 OLE-Server-Objekte 42 3.2.7 Benutzerdefinierte Klassen 42 3.2.8 Generische Objekte 42

3.3 Nutzung der Objekte 43

3.4 Die Klasse CPerson als Beispiel 45

4 ENTWICKLUNGSMETHODIK BEIM ENTWURF EINER NEUEN KLASSE 47

5 DARSTELLUNG VON KLASSEN UND KLASSENHIERARCHIEN 49

Objektorientierte Programmierung mit Visual Basic

3

1 Einführung in die Objektorientierte Programmierung

1.1 Objektorientierte Programmierung, WARUM??? Problem: Die Softwareentwicklung zeichnet sich durch eine enorme

Kostensteigerung aus.1

1985 140 Milliarden $ 1990 250 Milliarden $

Lösung: eine erhebliche Produktivitätssteigerung und

Qualitätsverbesserung, um den Anteil der ungenutzten Software möglichst gering zu halten.

Die Produktivität lässt sich durch folgende Maßnahmen steigern: • Einsatz qualifizierter Mitarbeiter an den richtigen Stellen • Eliminierung einzelner Entwicklungsschritte durch Ausnutzung von

automatischen Dokumentationshilfen, Programmgeneratoren etc. • effizienter Einsatz von Tools und Entwicklungsumgebungen • Vermeidung mehrfacher Programmierarbeiten durch Einsatz moderner

Programmiermethoden und inkrementeller SW-Erstellung • Wiederverwendung von Komponenten aus einer Bibliothek Die letzten 3 Punkte werden durch die OOP unterstützt. Im Mittelpunkt der OOP steht die Erstellung und Wiederverwendung von Software-Bausteinen, die sich durch • einfachen und sicheren Entwurf

• verbesserte Test- und Wartbarkeit

• schnelle Anpassbarkeit

auszeichnen. Ein Beispiel für die Wiederverwendung ist die Einbindung existierender Klassenbibliotheken in das eigene Softwaresystem. Vorteile der OOP: • man kann Objekte benutzen, ohne sich über deren Implementierung

Gedanken machen zu müssen. • die Veränderung der Implementation eines Objekts zieht keine Änderung der

sie nutzenden Programme nach sich • Einsatz getesteter Komponenten • klare und übersichtliche Schnittstellen • Reduzierung der Komplexität durch den hierarchischen Aufbau der Klassen,

Variablen und Methoden.

1 Vgl. Jell/ von Reeken (1991), S. 17 f.

Objektorientierte Programmierung mit Visual Basic

4

1.2 Grundbegriffe der objektorientierten Programmierung

„Object-Oriented programming is not so much a coding technique as it is a code packaging technique, a way for code suppliers to encapsulate functionality for delivery to consumers“2 (Brad J. Cox)

Mit dieser Aussage hebt Cox die OOP von ihrem Sockel und betrachtet sie schlicht und einfach als Verpackungstechnik. Wenn man sich die Grundbegriffe der OOP ansieht, wird man sehen, daß man mit dieser Betrachtungsweise ziemlich weit kommt.

1.2.1 Objekt - object Ein Objekt im Sinne der OOP besteht aus • Methoden: Operationen zur Manipulation von Daten • Eigenschaften: Daten Ein Objekt ist ein abgeschlossener Speicherbereich mit einer genau definierten Datenstruktur (den Eigenschaften) und fest umrissenen Aufgaben. Die Kommunikation mit einem Objekt erfolgt über Nachrichten. Jedes Objekt weiß, auf welche Nachrichten es mit welchen Methoden zu reagieren hat. Benutzeraktionen wie z.B. ein Mausklick, lösen beim betreffenden Objekt ebenfalls eine Methode über eine vom Betriebsystem gesendete Nachricht aus. In diesem Fall spricht man von einem Ereignis.

1.2.2 Klasse - class Klassen sind Datentypdefinitionen, die die Struktur von Objekten (Eigenschaften) zusammen mit den darauf ausführbaren Operationen festlegen (Methoden). Klassen zeichnen sich dadurch aus, daß sie: • die Methoden gleichartiger Objekte speichern • die Namen der objektspezifischen Eigenschaften definieren • klassenspezifische Eigenschaften speichern Die Instanzen einer Klasse nennt man Objekte. Beim Anlegen einer Instanz (man spricht dabei von Instanzierung) wird die Klasse als Bauvorlage für das neue Objekt benutzt.

2 Brad J. Cox, Object Oriented Programming-An Evolutionary Approach, Addison Wesley, 1987

Objektorientierte Programmierung mit Visual Basic

5

1.2.3 Methoden In der OOP werden die Daten eines Objektes nicht direkt bearbeitet, sondern über Nachrichten dazu veranlasst. Die Methoden beschreiben, wie sich das Objekt beim Empfang einer solchen Nachricht zu verhalten hat. Die Methoden bestimmen also das Verhalten der Objekte.

1.2.4 Eigenschaften/Attribute - Properties Die Eigenschaften bilden die Datenstruktur eines Objektes. Sie speichern den Zustand des Objektes und können in der Regel nur über Methoden verändert werden. Es gibt Klassen- und Objekt-/Instanzeigenschaften. Bei den Klasseneigenschaften handelt es sich um gleichbleibende Eigenschaften für alle Objekte einer Klasse, während die Instanzeigenschaften unterschiedliche Ausprägungen für alle Objekte einer Klasse annehmen können. Beispiel: Die Zahl der Reifen bei der Produktion eines Autos ist immer 5, aber

die Zahl der Türen ist unterschiedlich und vom speziellen Auto abhängig.

1.2.5 Kapselung - encapsulation Durch die Kapselung erlangen die Daten eines Objektes ein Eigenleben. Statt die Daten über Funktionen/Prozeduren zu bearbeiten, erzeugt man Objekte, die selbständig agieren, ihre Methoden gegenseitig aufrufen und sich eher wie Objekte der realen Welt verhalten.

1.2.6 Vererbung - object inheritance3 Vererbung bedeutet, daß man Code innerhalb einer hierarchischen Struktur wiederverwenden kann. Bei der Vererbung übernimmt die untergeordnete Klasse die Datenstruktur (Eigenschaften) und das Verhalten (Methoden) von einer oder mehreren übergeordneten Klassen. Bsp.: Ein Kreuzfahrtschiff ist ein Motorschiff, ein Motorschiff ist ein Schiff Man kann bestimmte Eigenschaften und Methoden suchen, die alle Schiffe gemeinsam haben und diese zu einer Klasse Schiff zusammenfassen. Für die Klasse Motorschiff muss man nun diese in der Klasse Schiff definierten Eigenschaften und Methoden nicht erneut entwickeln, sondern man leitet die Klasse Motorschiff von Schiff ab. Damit „erbt“ die Klasse Motorschiff die Eigenschaften und Methoden von Schiff. Wenn man nun auf die Idee kommt ein Segelschiff zu bauen, kann man die Klasse Schiff wiederverwenden und spart sich damit enormen Entwicklungsaufwand. Aus Motorschiff und Segelschiff könnte man nun einen Motorsegler bauen. Dabei kann es zu Konflikten kommen, weil Motorschiff und Segelschiff einige Methoden und Eigenschaften gemeinsam haben.

3 inheritance(engl.) = Erbe, Erbschaft

Objektorientierte Programmierung mit Visual Basic

1.2.7 Polymorphismus - polymorphism Polymorphismus wird in der Literatur oft auch als dynamisches oder spätes Binden (late binding) bezeichnet. Polymorphie bedeutet, daß ein Objekt auf eine Nachricht richtig reagiert, sofern es die Nachricht kennt, wobei verschiedene Objekte unterschiedlich auf die Nachricht reagieren können. Weil erst zur Laufzeit bekannt ist, welche Methode (von welchem Objekt) ausgeführt werden soll, kann beim Linken (Binden) noch keine Zuordnung erfolgen, sondern erst, wenn die Nachricht ankommt. Deshalb nennt man den Vorgang auch spätes oder dynamisches Binden. Bsp.: Eine Prozedur Proz1 in Visual Basic soll als Parameter ein

Control (z.B. eine TextBox) erhalten.

a) Späte Bindung/late binding SUB Proz1(ctl AS CONTROL) . . END SUB • hier ist beim Kompilieren noch

nicht bekannt, welches Control (Object) benutzt wird.

• die Unterscheidung fällt erst zur Laufzeit.

• bei jedem Zugriff auf Properties und Methoden muss der Typ ermittelt und zugeordnet werden

b) frühe Bindung/early binding SUB Proz1(ctl AS TEXTBOX) . . END SUB • hier ist beim Kompilieren

bekannt, welches Control benutzt wird. Hier wird eindeutig ein Control vom Typ TextBox benötigt.

• zur Laufzeit wird nur geprüft, ob wirklich ein Control vom Typ TextBox übergeben wurde

• diese Variante ist schneller

1.2.8 Nachrichtenformat

Eine Nachricht hat folgendes Format:4

Zielobjekt Methode Parameter MS Berlin bremsen 10

Eine Methode wird demnach folgendermaßen aufgerufen/aktiviert:

Objekt.Aktion Parameter

Im Gegensatz dazu, der Prozeduraufruf bei der prozeduralen Programmierung:

Aktion Objekt,Parameter Genaugenommen ist bei diesem Aufruf das Objekt auch einer der Parameter, denn die prozedurale Programmierung arbeitet nicht mit Objekten.

„Prozeduren und Methoden“ in Kapitel 2

4 aus Jell/von Reeken S.20

6

Objektorientierte Programmierung mit Visual Basic

7

1.2.9 Prozeduren und Methoden5 Ein Vergleich zwischen dem Aufruf von Methoden in der OOP und dem Aufruf von Funktionen/Prozeduren in der prozeduralen Programmierung: In der prozeduralen Programmierung gibt man beim Prozeduraufruf an, was man machen will und übergibt der Prozedur als Parameter, worauf und wie die Operation ausgeführt werden soll. TuDies MitDiesem,AufDieseWeise In der OOP gibt man zuerst an, was bearbeitet werden soll und dann in Form der Methode, wie man etwas machen will. MitDiesem.Tudies AufDieseWeise Beispiel: PP: wachsen(Person1,10 cm) OOP: Person1.wachsen 10cm Je nach Kontext kann man einzelne Teile des Methodenaufrufs weglassen, wenn eindeutig ist, was gemeint ist: • In bestimmten Fällen ist das Objekt bekannt, dann ist

TuDies AufDieseWeise gleichbedeutend mit MirSelbst.TuDies AufDieseWeise

• Bei einigen Methoden ist bekannt, wie sie ausgeführt werden: MirSelbst.TuDies ‘AufDieUeblicheWeise

• Wenn beides bekannt ist, kann man auch TuDies alleine aufrufen.

5 Vgl. McKinney S.183 f.

Objektorientierte Programmierung mit Visual Basic

8

1.3 Prinzipien der Objektorientierung6 Abstraktion

Weil die Dinge der realen Welt für uns Menschen zu komplex sind, wählt man die relevanten Gemeinsamkeiten aus und läßt dabei unwichtiges außer acht. Die Wahl des richtigen Grades der Abstraktion bildet ein zentrales Problem bei der Entwicklung objektorientierter Systeme.

Einkapselung Ausführungen dazu in Kapitel 1.2.5 Kapselung - encapsulation

Hierarchie Um die Abstraktion verständlich zu machen, teilt man sie in verschiedene Ebenen ein. Die Anordnung der verschiedenen Abstraktionsebenen bildet dabei eine Hierarchie. Eine Abstraktion auf höherer Ebene generalisiert, während auf der unteren Ebene spezialisiert wird. Mit anderen Worten: Auf der oberen Ebene bildet man allgemeine Klassen, die man immer weiter verfeinert. Dabei werden die Eigenschaften und Methoden der oberen Klassen bis in die unteren weitervererbt.

Modularisierung Dieser aus der prozeduralen Programmierung stammende Begriff, beschreibt ein grundsätzliches Entwurfsprinzip eines Softwaresystems. Grundgedanke dabei ist die Aufteilung von Problemen in möglichst kleine Module, die unabhängig voneinander kompilierbar sind und mit den anderen Modulen durch eine lose Koppelung in Verbindung stehen.

6 Vgl. Schäfer, S. 16-18

Objektorientierte Programmierung mit Visual Basic

1.4 Verdeutlichung am Beispiel : Schiffe7

BOOTMethoden:beschleunigenbremsenankern

Eigenschaften:GeschwindigkeitAnkerzahlRadarSatellitennavigationHochseetauglichkeit

SegelbootMethoden:Segel setzenSegel bergenAbfallenAnluvenwenden

Eigenschaften:SegelflächeSegelanzahl

MotorbootMethoden:Motor einMotor ausSteuer rechtsSteuer links

Eigenschaften:Leistung

FrachterMethoden:beladenentladen

Eigenschaften:BRTLadung

PassagierdampferMethoden:P. einsteigenP. aussteigen

Eigenschaften:Anzahl Passagieremax. Anzahl P.

MotorseglerMethoden:Generator einGenerator aus

Eigenschaften:Generatorleistung

*

Abbildung 1 - Beispiel Klassenhierarchie Boote

*: mehrfache Vererbung bei Motorsegler: Motorsegler erbt von Motorboot und Segelboot die Eigenschaften/Methoden von Boot!

Problem: welche Eigenschaft/Methode ist z.B. bei OMotorsegler.bremsen8 gemeint?

Lösung: man erzeugt bei Motorsegler die geerbten Eigenschaften und Methoden neu und ruft dann explizit die gewünschten auf oder man ruft Omotorsegler.Motorboot.bremsen auf, falls die Sprache das zuläßt.

7 Vgl. Jell/von Reeken(1991), S. 27 ff. 8 Anmerkung: Omotorsegler steht für Objekt vom Typ Motorsegler

9

Objektorientierte Programmierung mit Visual Basic

Nach außen sieht z.B. der Frachter folgendermaßen aus:

FrachterMethoden:beschleunigenbremsenankern

Motor einMotor ausSteuer rechtsSteuer links

beladenentladen

Eigenschaften:GeschwindigkeitAnkerzahlRadarSatellitennavigationHochseetauglichkeit

Leistung

BRTLadung

Abbildung 2 - Klasse Frachter (Gesamtdarstellung)

In dieser Notation wurden die geerbten Eigenschaften und Methoden mit aufgenommen. Normalerweise wählt man eine Notation wie in „Abbildung 1 - Beispiel Klassenhierarchie Boote“ um keine redundanten Informationen in die Diagramme aufnehmen zu müssen. Außerdem erleichtert die vereinfachte Darstellung das Erlernen. Wenn man die Eigenschaften/Methoden einer Basisklasse kennt, braucht man diese nicht erneut für die abgeleiteten Klassen zu lernen. Dadurch wird auch sofort ersichtlich, wann eine Methode/Eigenschaft durch eine eigene ersetzt wurde, nämlich dann, wenn sie im Klassendiagramm auftaucht.

10

Objektorientierte Programmierung mit Visual Basic

11

2 Einführung in Visual Basic In diesem Kapitel werden die wichtigsten Grundbegriffe und die Datentypen von Visual Basic vorgestellt. Anschließend wird ein Beispielprogramm zur Veranschaulichung der Grundlagen entwickelt.

2.1 Grundbegriffe Im folgenden Teil werden die wichtigsten Grundbegriffe von Visual Basic 4.0 kurz erläutert.

Form Programm- und Dialogfenster werden in VB als Formen

bezeichnet. Formen nehmen Steuerelemente auf, welche frei plaziert werden können. Man kann jede Form mit einem Menü versehen. Formen werden in .FRM-Dateien gespeichert

MDI-Formen bilden einen Speziallfall. Sie dienen als Container für MDIChild-

Formen, welche der Unterstützung der Multiple Document Schnittstelle dienen. Jedes Programm kann max. eine MDI-Form besitzen, welche aber mehrere MDIChild-Formen aufnehmen kann. Ein Beispiel für eine MDI Anwendung ist Winword, welches mehrere Textfenster gleichzeitig zur Verfügung stellen kann.

Modul (oder auch Quellmodul) Module bilden eine Sammlung von

Konstantendefinitionen, Prozeduren und Funktionen, welche bei Bedarf programmglobal zur Verfügung stehen.

Klassenmodul

Ein K. enthält benutzerdefinierte Klassen. Im Klassenmodul werden die Eigenschaften und Methoden einer Klasse definiert. Klassen sind Programm- oder sogar systemglobal verfügbar. Auf Klassen wird im nächsten Kapitel im Zusammenhang mit der OOP genauer eingegangen.

Steuerelement/Custom Control

Bei Steuerelementen handelt es sich um Oberflächenelemente, bzw. Objekte, die der Werkzeugleiste der VB-Entwicklungsumgebung entnommen und frei in einer Form plaziert werden können. Es gibt Steuerelemente, die direkt von VB zur Verfügung gestellt werden und welche, die durch so genannte OCX-Dateien oder OLE-Server bereitgestellt werden. Es gibt sichtbare und unsichtbare Steuerelemente. Die unsichtbaren Steuerelemente (z.B. Timer) sind nur beim Entwurf sichtbar.

Projekt Form-, Modul-, Klassen- und Steuerelementdateien, die zu

einem Programm gehören, werden zu einem Projekt zusammengefasst. Projekte werden in einer .VBP-Datei gespeichert.

Objektorientierte Programmierung mit Visual Basic

Property Die Properties (Eigenschaften) bestimmen das Aussehen und

Verhalten der Steuerelemente und dienen als Schnittstelle zu den Daten des Steuerelements. Es gibt Properties, die nur zur Laufzeit und welche die nur beim Programmentwurf zur Verfügung stehen. Ebenso gibt es Properties, die schreibgeschützt sind.

Werkzeugleiste

Die Werkzeugleiste (Toolbox) stellt die Steuerelemente zur Verfügung.

Zeiger PictureBox

Label TextBox

Frame Button

CheckBox OptionButton

ComboBox ListBox

HScrollBar VScrollBar

Timer DriveListBox

DirListBox FileListBox

Shape

Image Data

Line

OLE

Abbildung 3 - Visual Basic Werkzeugleiste

Ereignis/Event Ein E. wird durch eine Benutzeraktion (z.B. Mausklick) oder

durch das System (z.B. Timer) ausgelöst. Ereignisprozeduren

Die E. werden beim Auftreten eines Events automatisch aufgerufen. In den Ereignisprozeduren reagiert man auf Benutzer- oder Systemaktionen. Ein Beispiel ist die E. Form_Load, die beim Laden einer Form aufgerufen wird.

Ereignisorientierte Programmierung

Einige Funktionen unter VB stehen nur im Zusammenhang mit Objekten zur Verfügung. Diese Anweisungen, welche zu Objekten gehören, werden Methoden genannt. Man kann z.B. mit Image1.Refresh das Objekt Image1 (z.B. eine PictureBox) dazu bringen, seinen Inhalt neu zu zeichnen (Refresh). Refresh ist eine Methode, welche durch fast alle Steuerelemente unterstützt wird.

12

Objektorientierte Programmierung mit Visual Basic

Methoden Methoden sind die Prozeduren und Funktionen, die nur für

die Objekte einer Klasse zur Verfügung stehen. Ereignisorientierte Programmierung Einführung in die OOP OOP mit VB

Editorfenster Im Editorfenster gibt man prozedurorientiert den Quelltext

ein. Neben dem Prozedurteil enthält das Editorfenster auch für jedes Modul/jede Form einen Deklarationsteil, in dem Funktionen, Konstanten und Variablen angelegt werden können.

Twips Twips ist die interne Maßeinheit von Visual Basic zur

Darstellung von Position und Größe der Steuerelemente. 567 Twips entsprechen einem Zentimeter und ein Zoll entspricht 1440 Twips. Windows verwendet für Maßangaben Pixel. Mit den Eigenschaften TwipsPerPixelX und TwipsPerPixelY kann man die Maßangaben umrechnen.

Debugger Beim Debugger handelt es sich um ein Programmteil, mit

dem ein Programm auf Fehler und eine korrekte Programmausführung getestet werden kann. Der Debugger erlaubt das Überwachen von Variablen, das Setzen von Haltepunkten und eine schrittweise Ausführung des Quelltextes.

Sub Main() Jedes Programm, das keine Formen besitzt, muss eine

Startprozedur Sub Main besitzen. Man kann Sub Main aber auch für Programme mit Formen benutzen, um z.B. umfangreiche Vorarbeiten zu erledigen.

13

Objektorientierte Programmierung mit Visual Basic

14

2.2 Datentypen Datentyp Speicherbedarf Wertebereich Byte

1 Byte

0 bis 255

Boolean

2 Bytes

True oder False

Integer

2 Bytes

-32.768 bis 32.767

Long

4 Bytes

-2.147.483.648 bis 2.147.483.647

Single einfache Genauigkeit

4 Bytes

neg.: -3,402823E38 bis -1,401298E-45 pos.: 1.401298E-45 bis 3.402823E38

Double doppelte Genauigkeit

8 Bytes

neg.: -1.79769313486232E308 bis -4,94065645841247E-324 pos.: 4,94065645841247E-324 bis 1.79769313486232E308

Currency

8 Bytes

-922.337.203.685.477,5808 bis 922.337.203.685.477,5807

Date

8 Bytes

1. Jan 100 bis 31. Dez 9999

Object

4 Bytes

bel. Verweis auf ein Object

String (feste Länge)

10 Bytes plus Textlänge

Win32 : max. 2 Milliarden Zeichen Win16 : ca. 65.400

String (variable Länge)

Textlänge

Win32 : max. 2 Milliarden Zeichen Win16 : ca. 65.400

Variant (mit Zahlen)

16 Bytes

Numerische Werte wie Double

Variant (mit Zeichen)

22 Bytes plus Textlänge

Wie variable Strings

Type Benutzerdefiniert

variabel

je nach Datentypen

Datenfelder 20 Bytes + 4 Bytes für jede Dimension + die Bytes für die Daten

Tabelle 1 - Visual Basic Datentypen9

9 Vgl. Visual Basic Onlinedokumentation

Objektorientierte Programmierung mit Visual Basic

15

Objektorientierte Programmierung mit Visual Basic

16

2.3 Gültigkeitsbereiche der Daten10 VB unterstützt globale, formglobale, lokale und statische Variablen. Der Gültigkeitsbereich und ihre Lebensdauer ist vom Ort der Deklaration abhängig. Zusätzlich kann man den Gültigkeitsbereich über die Schlüsselworte PRIVATE und PUBLIC und die Lebensdauer mit dem Schlüsselwort STATIC festlegen. Globale Variablen sind in allen Formen und Quellmodulen eines Anwendungsprogramms bekannt. Alle Variablen, die im Deklarationsteil eines Quellmoduls eingeführt werden, sind automatisch programmglobal. Um in einem Modul, welches eine lokale Variable mit dem gleichen Namen wie eine globale Variable enthält, auf die globale Variable zuzugreifen, muss man den Modulnamen mit angeben. MODUL.VARIABLE Man sollte Modulvariablen, welche nicht global zur Verfügung stehen sollen, nicht mit DIM deklarieren, sondern mit PRIVATE. Wenn man dies nicht tut, kommt es später unweigerlich zu Wechselwirkungen. Formglobale Variablen werden im Deklarationsteil einer Form deklariert. Von anderen Modulen und Formen kann nicht auf formglobale Variablen zugegriffen werden. Damit sind formglobale Variablen nur in der Form bekannt, in der sie definiert wurden. Lokale Variablen sind lediglich innerhalb der Prozedur, in der sie eingeführt werden, bekannt. Variablen gleichen Namens in verschiedenen Prozeduren beeinflussen sich nicht. Lokale Variablen bleiben zwischen Prozeduraufrufen nicht bestehen. Soll dies der Fall sein, so ist die Deklaration als statische Variable nötig. Statische Variablen sind lokale Variablen, die dauerhaft im Speicher bleiben, d.h. sie behalten ihren Wert zwischen zwei Prozeduraufrufen. Globale Modulvariablen sind immer vom Typ STATIC, d.h. sie bleiben solange im Speicher, wie das Modul im Speicher ist. Man kann Funktionen und Sub-Prozeduren mit dem Schlüsselwort Static versehen. Damit werden alle in der Funktion/Prozedur deklarierten Variablen automatisch Static. McKinney: „Verwenden Sie Static für lokale Variablen mit unbegrenzter Lebensdauer. Deklarieren Sie niemals Funktionen als Static, weil es die Bedeutung von DIM verändert! Außerdem werden Sie davon Warzen bekommen“11

10 Vgl. McKinney und Maslo 11 McKinney S. 45

Objektorientierte Programmierung mit Visual Basic

17

2.4 Parameterübergabe Übergabe von Variablen als Referenz (call by reference) In Visual Basic werden Variablen standardmäßig als Referenz übergeben, d.h. man kann in einer Prozedur den Wert einer Variablen ändern. Wenn die Prozedur eine Referenz auf einen bestimmten Datentyp erwartet, kann man ihr andere Datentypen durch die Verwendung eines Ausdrucks übergeben. Der einfachste Typ eines Ausdrucks ist die Klammer, d.h. man setzt einfach Klammern, um die Variable um eine Konvertierung zu erzwingen. X = FUNC( (Y) ) hier wird Y autom. in den richtigen Datentyp konvertiert. Übergabe von Variablen als Wert (call by value) Wenn man Variablen als Wert übergeben will, muss man bei der Deklaration der Prozedur das Schlüsselwort BYVAL verwenden. SUB proz1(BYVAL x AS INTEGER) ... END SUB Verwenden optionaler Argumente Man kann Parameter einer Prozedur als optional deklarieren, wenn man das Schlüsselwort OPTIONAL verwendet. Mit der Funktion ISMISSING kann man prüfen, ob der optionale Parameter angegeben wurde oder nicht. SUB proz2(x AS INTEGER, OPTIONAL y) ... IF NOT ISMISSING(y) THEN ‘ y wurde übergeben .... ELSE ‘ y wurde nicht übergeben .... ENDIF .... END SUB

Objektorientierte Programmierung mit Visual Basic

18

2.5 Namenskonventionen Für die Bildung der Namen unter VB sind einige Regeln zu beachten:

• Sie müssen mit einem Buchstaben beginnen (keine Sonderzeichen) • Sie dürfen keine Punkte oder Typkennzeichen enthalten • Die Namen von Variablen, Konstanten und Prozeduren können maximal 255

Zeichen lang sein • Die Namen von Steuerelementen, Formen, Klassen und Modulen können

höchstens 40 Zeichen lang sein • Die Namen dürfen nicht mit eingeschränkten Schlüsselworten identisch sein Microsoft schlägt folgende Präfixe für die Namen von Steuerelementen vor: Objekt Präfix Beispiel Anzeige img imgIcon Befehlsschaltfläche cmd cmdCancel Bezeichnungsfeld lbl lblHelpMessage Bildfeld pic picDiskSpace Dateilistenfeld fil filSource Daten dat datBiblio Datengebundene Tabelle dbg dbgPrices Datengebundenes Kombinationsfeld dbc dbcEnglish Datengebundenes Listenfeld dbl dblPolicyCode Figur (Kreis, Quadrat, Oval, Rechteck, abgerundetes Rechteck und abgerundetes Quadrat)

shp shpCircle

Form frm frmFileOpen Horizontale Bildlaufleiste hsb hsbVolume Kombinationsfeld cbo cboEnglish Kontrollkästchen chk chkReadOnly Laufwerklistenfeld drv drvTarget Linie lin linVertical Listenfeld lst lstPolicyCodes Menü mnu mnuFileOpen OLE-Container ole oleObject1 Optionsfeld opt optFrench Rahmen fra fraLanguage Tabelle grd grdPrices Textfeld txt txtGetText Vertikale Bildlaufleiste vsb vsbRate Verzeichnislistenfeld dir dirSource Zeitgeber tmr tmrAlarm

Tabelle 2 - Namenskonventionen für Objekte12

12 aus Visual Basic Onlinehilfe, Kapitel 3

Objektorientierte Programmierung mit Visual Basic

Weiterhin gibt es eine so genannte Ungarische Notation für Visual Basic13: Datenzugriffsobjekt Präfix Beispiel

Container con conReports Database db dbAccounts DBEngine dbe dbeJet Document doc docSalesReport Field fld fldAddress Group grp grpFinance Index idx idxAge Parameter prm prmJobCode QueryDef qry qrySalesByRegion Recordset rec recForecast Relation rel relEmployeeDept TableDef tbd tbdCustomers User usr usrNew Workspace wsp wspMine

Tabelle 3 - Datenzugriffsobjekte

Menübefehlssequenz Menüzugriffsname Datei, Öffnen mnuDateiÖffnen Datei, E-Mail senden mnuDateiEMailSenden Datei, Fax senden mnuDateiFaxSenden Format, Zeichen mnuFormatZeichen Hilfe, Inhalt mnuHilfeInhalt

Tabelle 4 – Regeln für Menüs

Datentyp Präfix Beispiel Boolean bln blnGefunden Byte byt bytRasterdaten Collection-Objekt col colWidgets Currency cur curUmsatz Date (Time) dtm dtmStart Double dbl dblToleranz Error err errBestellnummer Integer int intMenge Long lng lngDistanz Object obj objAktuell Single sng sngDurchschnitt String str strDateiname Benutzerdefinierter Typ (user-defined type) udt udtPersonal Variant vnt vntPrüfsumme

Tabelle 5 – Regeln für Variablen

19

13 Quelle: http://www.it-academy.cc/content/article_browse.php?ID=995

Objektorientierte Programmierung mit Visual Basic

20

2.6 wichtige Sprachelemente von VB Hier werden die wichtigsten Sprachelemente von Visual Basic vorgestellt. Die Aufstellung ist nur ein kleiner Ausschnitt aus den Fähigkeiten von Visual Basic und bildet den Teil der Sprache, den man beherrschen sollte, bevor man in die fortgeschrittenen Themen wie Datenbankprogrammierung, API-Aufrufe etc. einsteigen kann.

2.6.1 Schleifen-/ Entscheidungs- und Blockanweisungen Hier werden die Schleifen-, Block-, Entscheidungs- und Kontrollanweisungen von Visual Basic vorgestellt. Dabei wird bewusst auf GOTO und GOSUB verzichtet, obwohl VB diese Kommandos anbietet! Seine Berechtigung hat GOTO nur bei der Fehlerbehandlung, die hier nicht berücksichtigt wird.

DO ... LOOP Anweisung Wiederholt einen Block mit Anweisungen, solange eine Bedingung True ist oder bis eine Bedingung True wird.

Do [{While | Until} Bedingung] [Anweisungen] [Exit Do] [Anweisungen] Loop

ODER:

Do [Anweisungen] [Exit Do] [Anweisungen] Loop [{While | Until}Bedingung]

WHILE: wiederhole solange TRUE UNTIL wiederhole bis Bedingung TRUE wird EXIT DO verlässt die Schleife sofort. Bei verschachtelten Schleifen wird zur

äußeren Schleife zurückgekehrt (Die Benutzung von EXIT DO zeugt von schlechter Programmierpraxis)

WHILE ... WEND Anweisung Führt eine Reihe von Anweisungen aus, solange eine gegebene Bedingung True ist.

While Bedingung [Anweisungen] Wend

Tip Do...Loop stellt eine strukturiertere und flexiblere Möglichkeit zur Implementierung von

Schleifen dar.

Objektorientierte Programmierung mit Visual Basic

21

FOR ... NEXT Anweisung Wiederholt mehrmals eine Reihe von Anweisungen, bis ein Schleifenzähler einen bestimmten Wert erreicht.

For Zähler = Anfang To Ende [Step Schritt] [Anweisungen] [Exit For] [Anweisungen] Next [Zähler]

EXIT FOR dient dem Verlassen der Schleife vor Erreichen des Wertes Ende für Zähler!

FOR EACH ... NEXT Anweisung Wiederholt eine Reihe von Anweisungen für alle Elemente eines Datenfeldes oder einer Auflistung.

For Each Element In Gruppe [Anweisungen] [Exit For] [Anweisungen] Next [Element]

IF ... THEN ... ELSE ... ENDIF Anweisung Wertet einen Ausdruck aus und führt in Abhängigkeit vom Ergebnis eine Reihe von Anweisungen aus.

If Bedingung Then Anweisungen [Else SonstAnw ] Sie können auch die folgende flexiblere Syntax verwenden:

If Bedingung Then [Anweisungen] [ElseIf Bedingung-n Then [SonstWennAnw]] . . . [Else [SonstAnw]] End If

Hinweis Die einzeilige Syntax erlaubt die Ausführung mehrerer Anweisungen

als Ergebnis einer If...Then-Entscheidung. Dazu müssen sich aber alle Anweisungen in einer Zeile befinden und durch Doppelpunkte voneinander getrennt sein, wie in der folgenden Zeile:

If A > 10 Then A = A + 1 : A = A + A : C = C + B Tip Select Case ist in der Regel in Situationen sinnvoller, in denen

abhängig von der Auswertung eines einzelnen Ausdrucks mehrere Entscheidungen getroffen werden sollen.

Objektorientierte Programmierung mit Visual Basic

22

SELECT CASE Anweisung Führt eine von mehreren Anweisungsgruppen aus, abhängig vom Wert eines Ausdrucks.

Select Case Testausdruck [Case Ausdruckliste-n [Anweisungen-n]] . . . [Case Else [SonstAnw]] End Select

Sie können in jedem Case-Abschnitt mehrere Ausdrücke oder Bereiche verwenden, wie zum Beispiel in der folgenden Zeile:

Case 1 To 4; 7 To 9; 11; 13; Is > MaxZahl Case "Salatblatt", "Banane" To "Birne", Testelement

Beispiel Dieses Beispiel verwendet die Select Case-Anweisung, um den Wert einer Variablen auszuwerten. Der zweite Case-Abschnitt enthält den Wert der ausgewerteten Variablen, und nur die zugehörige Anweisung wird ausgeführt.

Zahl = 8 ' Variable initialisieren. Select Case Zahl ' Zahl auswerten. Case 1 To 5 ' Zahl von 1 bis 5. Debug.Print "Zahl von 1 bis 5" ' Das ist der einzige ' Case-Abschnitt, ' der True ergibt. Case 6, 7, 8 ' Zahl von 6 bis 8. Debug.Print "Zahl von 6 bis 8" Case Is > 8 And Zahl < 11 ' Zahl ist 9 oder 10. Debug.Print "Größer als 8" Case Else ' Andere Werte. Debug.Print "Außerhalb von 1 bis 10" End Select

Objektorientierte Programmierung mit Visual Basic

23

IIF und Choose: In bestimten Einsatzfällen kann man die Kontrollanweisungen ‘IF’ durch ‘IIF’ und ‘Select Case’ durch ‘Choose’ ersetzen. Aber das Laufzeitverhalten solche Konstrukte ist miserabel. • IIF benutzt man für Wertzuweisungen in Abhängigkeit einer Bedingung

SYNTAX:

Wert = IIF(Bedingung, WertWennWahr, WertWennFalsch)

BEISPIEL:

OK=IIF(x > 100, 1, 10) entspricht IF x > 100 THEN OK = 1 ELSE OK = 10 ENDIF

• CHOOSE benutzt man z.B. zur Ermittlung der Bedeutung eines ordinalen Wertes

SYNTAX:

Wert = CHOOSE(Index, Auswahl1, Auswahl2, ..., Auswahln)

BEISPIEL: Farbe = CHOOSE ( Farbindex, “rot“, “grün“, “gelb“, “blau“) entspricht SELECT CASE Farbindex

CASE 1 Farbe = “rot“ CASE 2

Farbe = “grün“ CASE 3

Farbe = “gelb“ CASE 4

Farbe = “blau“ CASE ELSE

Farbe = ““ END SELECT

Objektorientierte Programmierung mit Visual Basic

24

Verlassen von Kommandostrukturen Man kann Sub-Prozeduren oder Funktionen mit EXIT SUB bzw. EXIT FUNCTION verlassen. PRIVATE SUB Form_Click() ..... IF hugo = 18 THEN ....

EXIT SUB ‘ unsaubere Programmierpraxis i.S.d. proz. Prog. ENDIF ..... END SUB Sonstige Sprachkonstrukte: • mehrere Kommandos in einer Zeile

Um mehrere Kommandos in einer Codezeile unterzubringen, muss man diese jeweils mit einem Doppelpunkt trennen Beispiel: a=x : x=y : y=a

• Zeilenfortsetzung

Man kann eine Codezeile auf mehrere aufteilen. Dazu muss man die Trennstellen mit einem _ als Fortsetzungszeichen kennzeichnen. Beispiel: DEBUG.PRINT “test test test “ _ & “test2 test2 test2“

• Kommentare Kommentare werden mit ‘ oder dem Schlüsselwort REM eingeleitet. REM ist veraltet und wird nur noch aus Kompatibilitätsgründen akzeptiert.

Anweisung ‘ Kommentar

Objektorientierte Programmierung mit Visual Basic

25

2.6.2 Rechenoperatoren Rang Operator Beschreibung 1 ^ Exponent 2 - Negation 3 *

/ Multiplikation Division

4 \ Ganzzahldivision 5 MOD Modulo 6 +

- Addition Subtraktion

7 & Zeichenkettenverkettung

Tabelle 6 - Rechenoperatoren

2.6.3 Vergleichsoperatoren Operator Beschreibung = gleich > größer < kleiner <= kleiner gleich >= größer gleich <> ungleich Like Zeichenkettenvergleich

Tabelle 7 - Vergleichsoperatoren

2.6.4 Verknüpfungsoperatoren Rang Operator Beschreibung 1 NOT Logische Negation 2 AND Logisches UND 3 OR Logisches ODER 4 XOR Exklusives ODER 5 EQV Logische Äquivalenz 6 IMP Implikation 7 IS Vergleich von

Objektvariablen Tabelle 8 - Verknüpfungsoperatoren

2.6.5 Numerische Funktionen Funktion Beschreibung Beispiel ABS(ZAHL) berechnet den Absolutwert einer Zahl ABS(50.3) = 50,3

ABS(-50.3) = 50,3 ATN(Zahl) TAN(Zahl) SIN(Zahl) COS(ZAHL)

trigon. Funktionen. VB rechnet mit Winkelangaben in Grad. -Pi/2 bis Pi/2 !!

CDBL(Ausdruck)

wandelt den Ausdruck/String in eine Zahl vom Datentyp Double um. Analog dazu gibt es unter anderem:

CDBL(“123,23“)=123,23 CDBL(“123.23“)=12323

Objektorientierte Programmierung mit Visual Basic

26

CINT, CSNG, CLNG, CCUR DATE aktuelles Datum DAY(Datum) Tag des Monats. Anlog dazu

MONTH, YEAR, WEEKDAY

HOUR(Uhrzeit) Stunde. Analog dazu MINUTE, SECOND

NOW aktuelles Datum und aktuelle Zeit SGN(Zahl) ermittelt das Vorzeichen einer Zahl SGN(-99) = -1

SGN(99) = 1 SGN(0) = 0

HEX$(zahl) ermittelt den Hexadezimalen Wert einer Zahl

HEX$(49152)=“C000“

OCT$(zahl) ermittelt den oktalen Wert einer Zahl OCT$(8)=“10“ TIME aktuelle Zeit (Datentyp DATE) VAL(String) gibt den Wert der im String

enthaltenen Zahl zurück! VAL erkennt nur den . als Dezimalpunkt! Wenn man das in Deutschland übliche Komma benutzen will, sollte man CDBL() benutzen !

VAL(“123,23“) = 123 VAL(“123.23“) = 123,23

Tabelle 9 - einige exemplarische numerische Funktionen

Um bei der Angabe von Werten in einem Programm andere Zahlensysteme zu verwenden, sind folgende Formate zulässig: Hexadezimale Zahlen: &Hxxx Bsp.: &HC000 = 49152 Oktale Zahlen: &Oxxx Bsp.: &O123 = 83 Wann benutzt Visual Basic das länderspezifische Datenformat (mit Dezimalkomma) und wann die in der Datenverarbeitung übliche Punktnotation? Ausgabe von Zahlen länderspezifisches Format Strings mit num. Inhalt keine durchgängige Behandlung der Daten a) z.B. VAL Punktnotation b) z.B. CDBL länderspezifisches Format numerische Konstanten Punktnotation

Objektorientierte Programmierung mit Visual Basic

27

2.6.6 Stringfunktionen Funktion Beschreibung Beispiel CSTR(zahl) wie STR, nur unter Beachtung der

Formateinstellung für das jeweilige Land. (z.B. Dezimalkomma)

CHR(charcode) wandelt ein Zeichencode von 0-255 in ein ASCII-Zeichen um

chr(65) = “A“

CURDIR([drive]) aktuelles Verzeichnis ermitteln. FORMAT die Format Funktion stellt umfangreiche

Formatier- und Umwandlungsmöglichkeiten zur Verfügung

INSTR([start, ]string1, string2[, compare])

gibt die Position des ersten Auftretens einer Zeichenfolge innerhalb einer anderen zurück

LEFT(string, length) gibt den linken Teil eines Strings zurück LEN(string) gibt die Länge des Strings zurück LTRIM(string) RTRIM(string) TRIM(string)

gibt Zeichenfolge ohne führende (LTRIM), nachfolgende (RTRIM) oder weder führende noch nachfolgende (TRIM) Leerzeichen zurück

LTRIM(“ aa “)=“aa “ RTRIM(“ aa “)=“ aa“ TRIM(“ aa “)=“aa“

MID(string, start [, length])

gibt Ausschnitt aus einem String zurück

RIGHT(string, length) gibt den rechten Teil eines Strings zurück

STR(zahl) wandelt zahl in einen String um STR(123) = “123“ STRCOMP(string1, string2[, compare])

vergleicht zwei Strings

UCASE(string) gibt eine Zeichenfolge zurück, in der string in Großbuchstaben umgewandelt wurde. Analog dazu LCASE für Kleinbuchstaben !

Tabelle 10 - einige exemplarische Stringfunktionen

Jede dieser Funktionen gibt es in drei verschiedenen Versionen 1. MID()=... diese Version arbeitet mit dem Datentyp Variant, d.h. die Argumente

sind Variant und das Ergebnis ist Variant. Zur Laufzeit bedeutet das Geschwindigkeitseinbußen gegenüber den String Versionen.

2. MID$()... diese Version arbeitet mit dem Datentyp String. Hier sind Parameter

und Ergebnisse vom Datentyp String. 3. MIDB()... diese Version arbeitet mit Byte Datenfeldern. Leider kann man in der

aktuellen Version von VB keine binären Daten in Strings speichern, weil VB die Daten in Strings konvertiert. (VB verwendet intern UNICODE, statt ASCII bzw. ANSI).

Für den normalen Gebrauch sollte man in der Regel mit der 2. Variante arbeiten.

Objektorientierte Programmierung mit Visual Basic

28

2.6.7 wichtige Properties Property Sinn BackColor Hintergrundfarbe Borderstyle Rahmenart Caption vom Control angezeigter fester Text Enabled Steuerelement aktiv oder nicht Font Schriftart Height Höhe des Controls in TWIPS Index Index für Control innerhalb eines Steuerelementfeldes Left linke Position des Controls MousePointer

welcher Mousecursor soll beim betreffenden Control angezeigt werden

MultiLine Editbox erlaubt die Eingabe von mehreren Zeilen Name Name des Controls TabIndex Position innerhalb der TAB Sprungreihenfolge TabStop Soll Control mit Tab angesprungen werden ? Tag zum Zwischenspeichern von Daten Text ähnlich, Caption, aber editierbar Top obere Position des Controls Value Wert von OptionButton oder Checkbox. Enthält TRUE oder

FALSE Visible Steuerelement sichtbar oder nicht Width Breite des Controls WindowState Status der Form: minimiert, maximiert, normal

Tabelle 11 - wichtige Properties

2.6.8 wichtige Ereignisse Ereignis Beschreibung Click Mausklick auf dem Control Dblclick Doppelklick auf dem Control GotFocus Control hat den Focus erhalten. LostFocus Control mußte Focus abgegeben KeyUp, Keypress, KeyDown Eine Taste wurde gedrückt, losgelassen Load wird beim Laden einer Form aufgerufen Unload wird beim Entladen der Form aufgerufen QueryUnload wird vor dem Entladen einer Form

aufgerufen und kann das Entladen verhindern

MouseDown, MouseUp, MouseMove

reagieren auf Maustaste drücken, loslassen und auf Mausbewegungen

Resize wird bei einer Größenveränderung erzeugtPaint wird beim Zeichnen einer Form erzeugt,

abhängig vom Status der AutoRedraw Eigenschaft

Tabelle 12 - wichtige Ereignisse

Objektorientierte Programmierung mit Visual Basic

29

2.6.9 einige Kommandos, die man kennen sollte DIM/PRIVATE/PUBLIC/STATIC/CONST Deklaration von Prozeduren,Variablen und Konstanten REDIM zum Verändern der Dimension eines Arrays MSGBOX bringt eine Messagebox für wichtige Meldungen INPUTBOX eine Eingabebox für einfache Eingaben DEBUG.PRINT gibt einen Text in das Testfenster aus (wird zum Testen von

Programmen verwendet) object.CLS Die CLS-Methode dient zum löschen des Inhalts einer Form,

PictureBox oder Imagebox. Ohne Objektangabe löscht CLS die aktuelle Form.

DOEVENTS gibt WINDOWS die Zeit andere Aufgaben abzuarbeiten, bevor es mit dem VB-Programm weitermacht. Für zeitintensive Schleifen, um das System nicht lahmzulegen. (in WIN95/NT theor. nicht mehr nötig)

Die Ermittlung der Syntax dieser Kommandos ist eine gute Übung, um die mächtige Online Dokumentation von Visual Basic zu testen. Es kann nicht der Sinn einer Einführung sein, alle Kommandos zu erklären bzw. aufzuzählen. Selbst erfahrene Visual Basic Programmierer benutzen nur einen Teil der von VB zur Verfügung gestellten Kommandos, Funktionen, Methoden und finden beim Durchblättern der Dokumentation regelmäßig neue Features, die nützlich sind.

Objektorientierte Programmierung mit Visual Basic

30

2.7 Beispiel- und Testprogramme

2.7.1 das erste Programm : Gewichtsumrechnung Ziel: Ein Programm zur Umrechnung von g oder kg als Eingabewert in g, kg, t,

Unze und Pfund Formeln: g:=kg*1000 kg:=g/1000 t:=kg/1000

Pfund:=kg*2 Unze:= g/30 Dazu benötigen wir : • eine Form: frmMain

• zwei Frames: fraEingabe, fraAusgabe • ein Eingabefeld: editEingabe

• je ein OptionButton zur Auswahl von g und kg, für die eingegebene Zahl.

Die OptionButtons sollen ein Steuerelementfeld bilden. Index 0 steht für g, Index 1 für kg OptEinheit()

• je ein Ausgabefeld (Label) für jedes der auszugebenden Gewichte zusammengefaßt in einem Steuerelementfeld (=Zusammenfassung mehrerer Steuerelemente in einem Array) lblAusgabe() 0 = g / 1= kg / 2 = t / 3 = Pfund / 4 = Unzen

• je ein Button Berechnen und Ende (evtl. auch noch einer für About) btnCalc, btnEnde (, btnAbout)

• ein Label für die Überschrift lblTitel

Objektorientierte Programmierung mit Visual Basic

So soll das fertige Programm aussehen:

Abbildung 4 - Bildschirmphoto Beispielprogramm 1

Hinweise: • mit Unload Me wird die aktuelle Form entladen • das Programm wird beendet, indem man die letzte Form entlädt. Man kann

auch die Anweisung END benutzen, dann werden aber keine Aufräumarbeiten erledigt, was später bei Datenbankanwendungen zu Datenverlusten führen kann.

• Steuerelementfelder erzeugt man, indem man mehreren Steuerelementen eines Typs den gleichen Namen gibt. Unterschieden werden sie über ihren Index. Den Ereignisprozeduren solcher Steuerelementfelder wird der Index als Parameter übergeben.

• Stringverkettungen führt man mit & durch a = b & c. Man konnte früher auch + verwenden, aber VB versucht nun bei + den Inhalt mathematisch zu addieren, was nicht erwünscht ist.

• Der Code der Ereignisprozedur CLICK steht in SUB Controlname_CLICK(). In der Prozedur kann man auf Mausklicks reagieren

31

Objektorientierte Programmierung mit Visual Basic

32

Anleitung zum „Bau“ des ersten Programms 1. Schritt: Konstruktion der Oberfläche • Datei/Neues Projekt • die Properties der leeren Form im Eigenschaftsfenster einstellen:

Name: frmMain Caption: Das erste VB Programm • ein Label für den Titel einfügen und dessen Eigenschaften bearbeiten

Name: lblTitel Caption: Gewichtsumrechnung Font: z.B. ARIAL, Underline, Fett, 20 Punkte

• ein Frame für die Eingabe Name: fraEingabe Caption: Eingabe: • eine EditBox für die Eingabe der Gewichte

Name: editEingabe Maxlength 10

• ein Label für die Beschriftung des Eingabefeldes Name: label1 Caption: Wert:

• ein Steuerelementefeld bestehend aus 2 OptionButtons Name: OptEinheit Index 0 Caption: g Value: true Index 1 Caption: kg

• ein Frame für die Ausgabe Name: fraAusgabe Caption: Ausgabe: Visible: false • ein Steuerlementefeld bestehend aus 5 Labels

Name: lblAusgabe

Index 0 1 2 3 4 Caption g kg t Pfund Unze

n

• ein CommandButton für Berechnen Name: btnCalc Caption: &Berechnen

• ein CommandButton für Ende Name: btnEnde Caption: &Ende

Objektorientierte Programmierung mit Visual Basic

33

2. Schritt: der Code

Private Sub btnCalc_Click()

Dim gramm As Double Dim kilo As Double Dim tonne As Double Dim pfund As Double Dim unze As Double

If optEinheit(0) Then

gramm = VAL(editEingabe) kilo = gramm / 1000

Else kilo = VAL(editEingabe) gramm = 1000 * kilo

End If tonne = kilo / 1000 unze = gramm / 30 pfund = kilo * 2

lblAusgabe(0) = Format$(gramm, "####0.000") & " g" lblAusgabe(1) = Format$(kilo, "####0.000") & " kg" lblAusgabe(2) = Format$(tonne, "####0.000") & " t" lblAusgabe(3) = Format$(pfund, "####0.000") & " Pfund" lblAusgabe(4) = Format$(unze, "####0.000") & " Unze(n)"

fraAusgabe.visible = true

End Sub Private Sub btnEnde_Click()

Unload Me End Sub

Objektorientierte Programmierung mit Visual Basic

2.7.2 Erweiterung um ein Menü

Abbildung 5 - Menüeditor

Im zweiten Schritt fügen wir in unser kleines Programm ein Menü ein. Dazu starten wir den Menü-Editor mit Ctrl-M und geben folgende Daten ein:

Caption Name Index &Menü mnuMain &Berechnen mnuMainItem 10 - mnuMainItem 20 &Programm beenden

mnuMainItem 30

Tabelle 13 - Menüstruktur für Beispiel 2

Mit - wird eine sogenannte Separator Linie in das Menü eingefügt! Das & im Caption bewirkt, das der nachfolgende Buchstabe als HotKey funktioniert Code: in mnuMainItem_Click(..):

SELECT CASE Index CASE 10 btnCalc_Click CASE 30 btnEnde_Click END SELECT

34

Objektorientierte Programmierung mit Visual Basic

2.7.3 PicView - Dateiauswahl Als 3. Beispiel dient ein Betrachter für ICO, BMP und WMF-Dateien. Dazu benötigen wir die Steuerelemente DirListBox, DriveListBox, FileListBox und Image. Der Bildschirmaufbau wird dabei folgendermaßen aussehen:

Image1

btnEnde

File1

Drive1Dir1

Abbildung 6 - Bildschirmphoto: Entwurf PicView

Bauanleitung: 1. Datei/Neues Projekt 2. Form1 mit dem Eigenschaftsfenster umbenennen:

Form1.NAME auf „frmMain“ setzen. 3. frmMain.CAPTION auf “PicView“ setzen 4. DirListBox erzeugen (Als Name wird Dir1 autom. vergeben) 5. DriveListBox erzeugen (autom. Drive1) 6. FileListBox erzeugen (autom. File1) 7. File1.PATTERN auf “*.ICO;*.WMF;*,BMP“ setzen. Mit Pattern setzt man

den Filter für die angezeigten Dateien. 8. Image erzeugen (autom. Image1) 9. Image1.BORDERSTYLE auf 1 setzen 10. ein CommandButton anlegen und den Name btnEnde geben. 11. btnEnde.CAPTION auf „&Ende“ setzen

35

Objektorientierte Programmierung mit Visual Basic

36

Und nun noch der Code: 1. btnEnde_Click

PRIVATE SUB btnEnde_Click() Unload Me

END SUB 2. File1_Click

PRIVATE SUB File1_Click() Dim datei as string datei = Dir1.Path IF RIGHT$(Dir1.Path,1) <> “\“ THEN datei = datei & “\“ END IF datei = datei & File1.Filename

SET Image1.Picture = LOADPICTURE(datei)

END SUB 3. Dir1_Change

PRIVATE SUB Dir1_Change() File1.Path = Dir1.Path END SUB

4. Drive1_Change PRIVATE SUB Drive1_Change() Dir1.Path= Drive1.Drive File1.Path = Dir1.Path END SUB

Mit den wenigen Zeilen Code ist man bereits „fertig“! Benutzerfehler führen allerdings noch zum Abbruch, deshalb wird im nächsten Beispiel die Fehlerbehandlung eingeführt

Objektorientierte Programmierung mit Visual Basic

37

2.7.4 PicView2 - Fehlerbehandlung Nun erweitern wir unser Programm um eine Fehlerbehandlung, für den Fall, daß der Benutzer ein Laufwerk auswählt, welches keinen Datenträger enthält. Dazu erweitern wir Drive1_Change() PRIVATE SUB Drive1_Change() ‘ Springe bei Fehler zur Marke drive1_change_error ON ERROR GOTO drive1_change_error Dir1.Path= Drive1.Drive File1.Path = Dir1.Path EXIT SUB drive1_change_error: SELECT CASE Err CASE 68 ‘ Datenträger oder Gerät nicht verfügbar MsgBox “Gerät/Datenträger nicht verfügbar“, _

vbCritical, “PicView 2 - Fehler“ Drive1.Drive=Dir1.Path Exit Sub

CASE ELSE ‘ sonstiger Fehler MsgBox “Fehler : “ & Error(Err) & vbCrLf , _

vbCritical, “PicView 2 - Fehler“ END SELECT END SUB Nachdem der Code eingefügt ist, versuchen Sie doch mal das Laufwerk A: auszuwählen, ohne eine Diskette einzulegen. Wenn alles richtig ist, kommt ein Hinweis und das Programm läuft anschließend weiter.

Objektorientierte Programmierung mit Visual Basic

38

2.7.5 ein Programm ohne Form Mit diesem Beispiel soll demonstriert werden, dass man mit Visual Basic auch rein prozedural programmieren kann. 1. ein neues Projekt anlegen 2. die leere Form entfernen 3. ein neues Quellmodul MODUL1.BAS einfügen 4. in MODUL1 eine Prozedur MAIN einfügen

PUBLIC SUB main() DIM inp AS INTEGER DIM x AS INTEGER DO inp = VAL(INPUTBOX(“Zahl:“)) x = MSGBOX(“Eingabe : “ & STR$(inp) & vbCRLF & “Weiter?“, vbYesNo) LOOP WHILE x = vbYes END SUB

5. Extras/Optionen/Projekt/Startform auf SubMain einstellen Schon hat man ein Programm, welches eine Benutzereingabe erwartet und anschließend die eingegebene Zahl wieder ausgibt. Das Programm wird beendet, wenn der Benutzer NEIN wählt.

Objektorientierte Programmierung mit Visual Basic

39

Objektorientierte Programmierung mit Visual Basic

40

3 Objektorientierte Programmierung mit Visual Basic

3.1 Welche Konzepte der OOP unterstützt VB6?14 To be continued…

14 Vgl. McKinney S.182 f.

Objektorientierte Programmierung mit Visual Basic

3.2 Welche Objekte bietet VB6 und welche kann man selbst erstellen15

3.2.1 Formen Formen waren die ersten Objekte, die Visual Basic kannte. Sie gab es schon, bevor jemand auf die Idee kam, sie Objekte zu nennen. In der aktuellen Version kann man Formen jedoch seinen Bedürfnissen anpassen und neue Methoden und Eigenschaften hinzufügen. Sie können mit DIM NeueForm AS NEW FrmMain ein neues Objekt NeueForm aus der Klasse FrmMain anlegen. Wenn man eine Form entwirft und ihr einen Namen gibt, wird eine neue Klasse gebildet, die den Namen der Form erhält.

3.2.2 Steuerelementobjekte Steuerelemente sind das Herzstück von Visual Basic. Man kann mit VB eigene Steuerelemente erzeugen Steuerelemente verwenden den generischen Namen CONTROL. CONTROL kann als Platzhalter für ein beliebiges Steuerelement verwendet werden. Jedes Steuerelement hat aber auch einen eigenen Klassennamen, wie z.B. ListBox, TextBox, Image, Label, usw.

3.2.3 Datenzugriffsobjekt Das Datenzugriffsobjekt (DAO) dient der Kommunikation von Visual Basic Steuerelementobjekten mit der Datenbankschnittstelle. Eine genaue Beschreibung der Datenbankschnittstelle ist ziemlich komplex und füllt alleine ein Buch.

3.2.4 Systemobjekte Visual Basic stellt folgende Systemobjekte zur Verfügung:

App Programm Clipboard Zwischenablage Debug Debug-Fenster Printer Drucker Screen Bildschirm Err Fehlerbehandlung

Ihr Name stellt sowohl den Objekt- als auch den Klassennamen dar. Sie brauchen nicht extra angelegt werden und liegen vom Programmstart an vor.

41

15 Vgl. McKinney S. 186 f.

Objektorientierte Programmierung mit Visual Basic

42

3.2.5 Collection-Objekte Collection-Objekte (Auflistungen) sind dynamische Datenfelder, mit sicheren Methoden und Eigenschaften zum Zugriff auf die Daten. Vom System werden die Auflistungen Controls, Forms und Printers zur Verfügung gestellt. Benutzerdefinierte Auflistungen haben den Klassennamen COLLECTION. Die Auflistungen speichern Daten mit dem Datentyp Variant. • Collection-Objekte wachsen und schrumpfen automatisch • Wie bei einem Datenfeld kann man auf die Elemente über ihre Indizes

zugreifen. Man kann auf die Einträge auch über Schlüssel zugreifen • Collection-Objekte sind unsortiert • Auflistungen sind eindimensional • Man irrt sich leicht beim Umgang mit Indizes, weil der Index

benutzerdefinierter Collection-Objekte bei 1 beginnt, der Index vordefinierter Collection-Objekte dagegen bei 0 (Kompatibilität zu älteren Versionen von VB)

• Als Alternative zum Collection-Objekt bietet sich das Datenzugriffsobjekt als Superauflistung an.

• Die Listenfelder (z.B. ListBox) verhalten sich wie Auflistungen, sind aber keine.

3.2.6 OLE-Server-Objekte Die Anwendung von OLE-Objekten war bereits in der Version 3.0 mit dem OLE-Container-Control möglich. In der Version 4.0 kann man OLE-Server selbst erstellen. Der Klassenname der OLE-Server-Objekte wird vom Entwickler selbst festgelegt. Der Formeleditor von MS-OFFICE ist zum Beispiel ein OLE-Server. Man kann mit VB seine Klassen als Server zur Verfügung stellen und diese in andere Programme einbinden.

3.2.7 Benutzerdefinierte Klassen Man kann seine Funktionen in eine Klasse umwandeln und diese in vielen Programmen nutzen. Wie man eine Klasse erzeugt, wird im nächsten Kapitel behandelt. Dort wird die Erstellung einer Klasse an einem Beispiel demonstriert.

3.2.8 Generische Objekte Generische Objekte sind ein Oberbegriff für alle Objekte. Sie können als Platzhalter für beliebige Objekte benutzt werden. Ihr eigener Klassenname ist OBJECT.

Objektorientierte Programmierung mit Visual Basic

43

3.3 Nutzung der Objekte16 Im Folgenden wird beschrieben, wie in Visual Basic mit Objekten umgegangen wird. Um Unterschiede zu den üblichen OOP-Sprachen zu zeigen, werden Beispiele in C++ aufgeführt. • Eine Objektreferenz anlegen

VB: Dim rdng as Ding C++: Ding *pdng;

• Ein Objekt deklarieren VB: Dim dng AS NEW Ding C++: Ding dng;

• Ein Objekt deklarieren und mit Startwerten initialisieren VB: Dim dng AS NEW Ding dng.Create param C++: Ding dng(param); In VB ist es nicht möglich direkt bei der Deklaration Initialisierungswerte anzugeben, mit denen das Objekt initialisiert wird. Beim Anlegen des Objekts wird zwar automatisch CLASS_INITIALIZE aufgerufen, aber hier kann man nur Standardwerte, welche für alle Objekte des Typs gelten, setzten. Deshalb behilft man sich mit einer eigenen Methode z.B. create, mit der man dann direkt nach der Deklaration die Initialisierung vornimmt. Zur Sicherheit sollte man innerhalb der Klasse einen Schalter führen, mit dem man sicherstellen kann, dass das Objekt initialisiert wurde. In C++ kann man direkt bei der Deklaration die Initialisierungswerte angeben, welche an den sog. Konstruktor als Parameter übergeben werden. Beim Zerstören des Objekts wird automatisch CLASS_TERMINATE aufgerufen. Die Methoden CLASS_INITIALIZE und CLASS_TERMINATE entsprechen dem Konstruktor und Destruktor von C++, mit dem Unterschied, daß CLASS_INITIALIZE im Gegensatz zum Konstruktor keine Parameter erhält.

16 Vgl. McKinney S.190 ff.

Objektorientierte Programmierung mit Visual Basic

44

• Eine Referenz auf ein Objekt initialisieren

VB: SET rdng=dng C++: pdng=&dng;

• Zugriff auf öffentl. Objektvariablen VB: rdng.Var1 = Wert dng.Var1 = Wert C++: pdng->Var1 = Wert; dng.Var1 = Wert; Visual Basic macht bei der Benutzung von Referenzen und Objekten keinen Unterschied.

• Aufruf von Methoden VB: rdng.Meth1(Param) dng.Meth1(Param) C++: pdng->Meth1(Param); dng.Meth1(Param); Visual Basic macht auch hier bei der Benutzung von Referenzen und Objekten keinen Unterschied.

Objektorientierte Programmierung mit Visual Basic

45

3.4 Die Klasse CPerson17 als Beispiel Als Beispiel wird im folgenden ein Objekt Person nachgebildet, welches möglichst dem Objekt Person aus der realen Welt entsprechen soll. Im ersten Schritt notieren wir alle Eigenschaften, die eine Person kennzeichnen: Name, Wohnort, Straße, Geschlecht, Geburtsdatum (Alter), Religion, Haarfarbe, Augenfarbe, Familienstand, Beruf, Größe, IQ, Bildung, Hobbys, Gesundheitszustand, ..... Im zweiten Schritt notieren wir alle Methoden, welche auf eine Person angewendet werden können: Geburt, Tod, Hochzeit, Scheidung, Taufe, Berufswechsel, wachsen, laufen, sprechen, essen, trinken, schlafen, ..... Bei der Entwicklung einer echten Klasse wird man natürlich nur Eigenschaften und Methoden notieren/suchen, die wirklich benötigt werden. Man wird von der Realität zu einem Modell abstrahieren.

Eigenschaft Gültigkeitsregel/-bereich Name Straße Wohnort Geschlecht männlich, weiblich Familienstand ledig, verheiratet, geschieden, verwitwet Religion Geburtsdatum <= heute

Tabelle 14 - „Eigenschaften einer Person“

Methode Parameter Bedingungen Create/Geburt Geschlecht,

Geburtsdatum, Name

nicht initialisiert

Taufe Name, Religion nicht getauft Hochzeit Familienstand <> verheiratet Scheidung Familienstand = verheiratet Verwitwet Familienstand = verheiratet Geschlechtsumwandlung

Geschlecht

Tabelle 15 - Entwurf der Klasse Person

Die Modellierung der Klasseneigenschaften erfolgt analog zur Modellierung von Datenbanken. Zur vertiefenden Lektüre empfiehlt sich das Buch: „Datenbanksysteme - Konzeptionelle Datenbankmodellierung und Datenbankarchitekturen, Gabriel/Röhrs, Springer Lehrbuchverlag, 2. Auflage 1995“

17 Anmerkung: CPerson steht für Class Person

Objektorientierte Programmierung mit Visual Basic

46

Implementierung einer vereinfachten Klasse mit VB

• Die Eigenschaften implementieren wir als Properties, um die Kontrolle über den Inhalt zu haben. Würden die Eigenschaften als PUBLIC-Variablen implementiert könnte man von außen jeden Wert in die Variablen schreiben. Damit würde die ganze Kapselung keinen Sinn mehr machen.

• Die Eigenschaften Familienstand, Geburtsdatum, Geschlecht und Religion werden als Schreibschutzeigenschaften implementiert, d.h. wir definieren nur die Property Get Funktion und entfernen den Property Let Funktionsrahmen aus dem Programm.

• Die restlichen Eigenschaften werden als Lese-/Schreibproperty mit Let und Get definiert

• Die Werte der Eigenschaften speichern wir in privaten Variablen, denen wir als Namen den Eigenschaftsnamen mit vorangestellten m geben. z.B.: PRIVATE mName AS STRING

• Als Klasseneigenschaften vergeben wir Instancing: 2-Creatable Multiuse (ist meistens die richtige Einstellung) Name: CPerson Public: false die Klasse ist nicht öffentlich

• Zur Demonstration für Public Variablen erzeugen wir eine Variable STATUS, welche verschiedene Informationen enthalten kann. Da der Inhalt unwichtig ist, ist eine Kontrolle des Inhalts unnötig.

Objektorientierte Programmierung mit Visual Basic

47

4 Entwicklungsmethodik beim Entwurf einer neuen Klasse18 Ein kurze Betrachtung, wie man bei der Entwicklung von Klassen (objektorientierten Systemen) vorgehen sollte. Bei der geschilderten Methode handelt es sich um die Gemeinsamkeiten der meisten in der Literatur erwähnten Methoden und nicht um eine spezielle Methode. Die beste Methode, Klassen zu entwerfen, besteht darin, sie erst zu verwenden. Man schreibt ein Beispielprogramm und verwendet darin die Klasse, als ob sie bereits existiert. Man erstellt die Objekte einer Klasse in jeder erdenklichen Art, benutzt alle Methoden und Eigenschaften. Dabei finden sich immer neue Methoden und Eigenschaften, welche jederzeit verworfen und geändert werden können. Natürlich ist diese Methode nur bei kleinen Projekten praktikabel, aber auch bei großen Projekten wird der mit dem Entwurf beauftragte Entwickler in seiner Vorstellung ähnlich vorgehen. Auch er wird hoffentlich seinen Entwurf mit einem Beispielprogramm abliefern, welches die Funktion veranschaulicht. Die Entwicklung ist ein iterativer Prozess, bei dem sich die Details der Implementierung als ungeschickt erweisen können und durch neue Ideen ersetzt werden. Das spart Kosten, weil die Gefahr, eine nutzlose Implementation zu entwickeln, damit verringert wird. Allerdings darf man sich gerade am Anfang nicht zu sehr an seinen Entwurf binden und muss Fehler im Entwurf akzeptieren und durch bessere Lösungen ersetzen. Die Methode, Klassen nach der Methode „try and error“ zu entwickeln ist kein Feature der OOP, sondern lässt sich auch beim Entwurf von Prozeduren anwenden.

18 Vgl. McKinney S.184ff.

Objektorientierte Programmierung mit Visual Basic

48

Die einzelnen Schritte Beim Entwurf wird man folgende Stufen antreffen bzw. durchlaufen. Der Entwurf verläuft iterativ und jeder Schritt wird mitunter mehrfach durchlaufen: 1. Grobkonzeption

Bei der Grobkonzeption werden die Eigenschaften und Methoden, welche die Klasse haben soll, sinnvollerweise in einem Klassendiagramm dargestellt. Dabei findet bereits die Abstraktion vom Anwendungsfall zur Implementation statt, weil es uneffektiv wäre, unnötige Details durch die weiteren Entwicklungsstufen mitzuschleppen. Weiterhin sollte bereits hier definiert werden, was die Klasse eigentlich leisten soll.

2. Aufbau des Beispielcodes Hier wird Beispielcode, der alle Anwendungsfälle durchspielt, in einem Programm zusammengefaßt. Dieses Programm kann später als erster Test für die fertige Klasse benutzt werden. Bereits beim Entwurf des Beispielprogramms findet man übersehene oder ungeschickt aufgeteilte Details, die man so noch frühzeitig bereinigen kann.

3. Datenschema/Eigenschaften Welche Daten soll die Klasse speichern? In welchem Format werden die Daten benötigt? Welche Werte sind gültig? Welche Methode greift auf welche Daten zu?

4. Methodendefinition

Welche Methoden, mit welchen Parametern werden benötigt? Wie und in welchem Zusammenhang werden die Methoden gebraucht? Welche Eigenschaften werden durch die Methode verändert oder benutzt?

Neben den oben geschilderten Schritten sollte natürlich eine ordentliche Dokumentation stehen, in der steht, warum etwas so gemacht wurde und nicht anders. Fehler und Probleme sollten dabei ebenso festgehalten werden, wie die Entscheidung für einen bestimmten Datentyp. Erst im Anschluss an diese Schritte erfolgt die eigentliche Implementation, bei der man aber nicht davor zurückschrecken darf, Änderungen am Entwurf vorzunehmen, wenn sich der Entwurf als unpraktikabel oder schlecht erweist. Wenn sich die Implementation bei der Benutzung als unbrauchbar erweist, hat das größere Auswirkungen, als eine Änderung des Entwurfs.

Objektorientierte Programmierung mit Visual Basic

49

Klassenname

5 Darstellung von Klassen und Klassenhierarchien Für die Darstellung von Klassen gibt es genauso viele Methoden, wie es Autoren gibt. Im folgenden werden 2 Varianten vorgestellt.

Instanzmethoden

(1)

Instanzeigenschaften

(2)

Klassenmethoden

- new Objektbildung

(3)

Klasseneigenschaften

(4)

Abbildung 7 - Klassendiagramme nach „Jell/von Reeken“19

(1) Instanzmethoden werden von den Objekten (Instanzen) selber ausgeführt (2) Instanzenvariablen haben für jede Instanz einen eigenen Wert (3) Klassenmethoden werden von der Klasse selbst aufgerufen.

In VB sind dies CLASS_INITIALIZE und CLASS_TERMINATE, in C++ sind dies der Konstruktor und Destruktor

(4) Variablen, die für alle Objekte einer Klasse den gleichen Wert haben. (z.B. alle Autos haben 4 Räder)

19 Vgl. Jell/von Reeken S. 23

Objektorientierte Programmierung mit Visual Basic

50

Klasse1

Private Variablen

Methoden Eigenschaften

Meth1Meth2

Prop1Prop2Obj1Obj2

Private Variablen

Klasse2

Meth3 Prop3

LEGENDE:

Variableneigenschaft - read onlyVariableneigenschaft - read/writeObjekteigenschaft - read onlyObjekteigenschaft - read/write

Sub - MethodeFunction - Methode

Abbildung 8 - Klassendiagramme nach „Bruce McKinney“20

Jell/von Reeken McKinney Darstellung der Methoden • Aufteilung in Klassen- und

Instanzmethoden ersichtlich • keine Unterscheidung

zwischen Prozeduren und Funktionen

• keine Aufteilung zwischen Klassen- und Instanzmethoden

• Unterscheidung zwischen Prozeduren und Funktionen

Darstellung der Eigenschaften • Aufteilung in Klassen- und Instanzeigenschaften

• nicht erkennbar, ob Eigenschaften Privat oder Public sind

• nicht erkennbar ob Eigenschaften nur „read only“ oder „read/write“ Zugriff zulassen

• keine Aufteilung zwischen Klassen- und Instanzeigenschaften

• Aufteilung zwischen privaten und öffentlichen Eigenschaften

• zeigt, ob Variablen „read only“ oder „read/write“ Zugriff erlauben.

Zusammenspiel zwischen Klassen

• kein Zusammenspiel zwischen mehreren Klassen ersichtlich

• Vererbungshierarchien werden nicht sichtbar

• Beziehungen werden zum Teil sichtbar, weil enthaltene Objekte dargestellt werden.

• Vererbungshierarchien werden hier auch nicht sichtbar

Tabelle 16 - Vergleich der beiden Darstellungen

20 Vgl. McKinney S.195 f.

Objektorientierte Programmierung mit Visual Basic

51

Objektorientierte Programmierung mit Visual Basic

52

Abbildungsverzeichnis: ABBILDUNG 1 - BEISPIEL KLASSENHIERARCHIE BOOTE ............................................................ 9 ABBILDUNG 2 - KLASSE FRACHTER (GESAMTDARSTELLUNG)................................................. 10 ABBILDUNG 3 - VISUAL BASIC WERKZEUGLEISTE ................................................................... 12 ABBILDUNG 4 - BILDSCHIRMPHOTO BEISPIELPROGRAMM 1 .................................................... 31 ABBILDUNG 5 - MENÜEDITOR ................................................................................................... 34 ABBILDUNG 6 - BILDSCHIRMPHOTO: ENTWURF PICVIEW ........................................................ 35 ABBILDUNG 7 - KLASSENDIAGRAMME NACH „JELL/VON REEKEN“ ........................................... 49 ABBILDUNG 8 - KLASSENDIAGRAMME NACH „BRUCE MCKINNEY“........................................... 50 Tabellenverzeichnis: TABELLE 1 - VISUAL BASIC DATENTYPEN ................................................................................ 14 TABELLE 2 - NAMENSKONVENTIONEN FÜR OBJEKTE............................................................... 18 TABELLE 3 - DATENZUGRIFFSOBJEKTE.................................................................................... 19 TABELLE 4 – REGELN FÜR MENÜS .......................................................................................... 19 TABELLE 5 – REGELN FÜR VARIABLEN .................................................................................... 19 TABELLE 6 - RECHENOPERATOREN ......................................................................................... 25 TABELLE 7 - VERGLEICHSOPERATOREN .................................................................................. 25 TABELLE 8 - VERKNÜPFUNGSOPERATOREN ............................................................................ 25 TABELLE 9 - EINIGE EXEMPLARISCHE NUMERISCHE FUNKTIONEN ........................................... 26 TABELLE 10 - EINIGE EXEMPLARISCHE STRINGFUNKTIONEN................................................... 27 TABELLE 11 - WICHTIGE PROPERTIES...................................................................................... 28 TABELLE 12 - WICHTIGE EREIGNISSE....................................................................................... 28 TABELLE 13 - MENÜSTRUKTUR FÜR BEISPIEL 2 ...................................................................... 34 TABELLE 14 - „EIGENSCHAFTEN EINER PERSON“.................................................................... 45 TABELLE 15 - ENTWURF DER KLASSE PERSON....................................................................... 45 TABELLE 16 - VERGLEICH DER BEIDEN DARSTELLUNGEN ....................................................... 50 Abkürzungsverzeichnis: DAO DATA ACCESS OBJECTS (ENGL. DATENZUGRIFFSOBJEKTE) OCX OLE CUSTOM CONTROL (ENGL. OLE ZUSATZSTEUERELEMENTE) OLE OBJECT LINKING AND EMBEDDING OOP OBJEKTORIENTIERTE PROGRAMMIERUNG PP PROZEDURALE PROGRAMMIERUNG VB VISUAL BASIC

Objektorientierte Programmierung mit Visual Basic

53

Quellenverzeichnis

1. Brad J. Cox Object-Oriented Programming - An Evolutionary Approach Addison-Wesley, 1987

2. Gabriel/Röhrs Datenbanksystem - Konzeptionelle Datenmodellierung .... Springer Lehrbuch, 1995 2. Auflage

3. Jell/von Reeken Objektorientierte Programmierung mit C++ Hanser, 1991

4. Andreas Maslo Praxisbuch Visual Basic 4.0 Data Becker, 1996 1. Auflage

5. Bruce McKinney Hardcore Visual Basic Microsoft Press, 1996

6. Michael Ringel Warum Sie die objektorientierte Programmierung beinahe selbst Microsoft System Journal entdeckt hätten... Sep/Okt 1993, S. 79 ff.

7. Steffen Schäfer Objektorientierte Entwurfsmethoden Addison-Wesley, 1994 1. Auflage

8. Microsoft Visual Basic 4.0 Online Handbücher Syntaxdarstellungen und Sprachspezifikationen sind dem Visual Basic 4.0 Online Handbuch entnommen und nicht gesondert gekennzeichnet!

Literaturempfehlungen:

Für Anfänger 1. das „Praxisbuch Visal Basic 4.0“ von Andreas Maslo., welches sehr gründlich auf die

Bedienung und die grundlegenden Sprachkonzepte von Visual Basic eingeht. Begleitend werden zu den einzelnen Themen Beispielanwendungen entwickelt und ausführlich erklärt.

2. das Programierhandbuch von Visual Basic, welches gerade in den ersten Kapiteln langsam an die Materie heranführt.

Für Fortgeschrittene/Experten 1. das Programmierhandbuch und die Sprachreferenz von Visual Basic, welche sich auch für

Fortgeschrittene immer wieder als Fundgrube erweist. 2. das Buch „Hardcore Visual Basic“ von Bruce McKinney, mit dem man an die Grenzen von

Visual Basic geführt wird und dabei jede Menge Tips und Tricks erhält 3. das Magazin „BasicPro“ (Steingräber Verlag), welches alle 2 Monate über aktuelle

Entwicklungen für Visual Basic, Visual Basic für Applikationen und verwandte Produkte informiert. Auf der zum Magazin gehörenden CD befinden sich regelmäßig Updates, Tools, Sourcen, ...