Eigenschaften und Methoden VISUAL BASIC 12. Benutzerdefinierte Datentypen Lerninhalte ? Aufzählungstyp (Enumerationstyp) ? Verbundtyp (Record, Struktur) ? With .. End With Lerninhalte Einführungsbeispiel: In einem Programm sollen die Farben einer Ampel oder Wochentage verarbeitet werden. Eine mögliche Deklaration: Dim AmpelFarbe As Long 'rot=0, gelb=1, gruen=2 Dim Wochentag As Long 'Sonntag=0, Montag=1,... . . . If AmpelFarbe = 2 ... 'Welche Farbe ist das denn? If AmpelFarbe = 5 ... 'Wert nicht definiert ? ? Ein solches Programm ist schlecht lesbar ? ? Es passieren leicht Programmierfehler L1 Aufzählungstyp (Enumerationstyp) Man kann für Variablen wie AmpelFarbe oder Wochentag, die einen begrenzten abzählbaren Wertebereich haben (rot, gelb, gruen bzw. Sonntag, Montag, ...) einen eigenen Datentyp definieren, einen sogenannten Aufzählungstyp oder Enumerationstyp. In Visual Basic legt man einen benutzerdefinierten Datentyp in einem Modul an: Enum TFarbe rot gelb gruen End Enum Enum definiert einen Aufzählungs-Datentyp (Enumerationstyp). Der selbstdefinierte Datentyp Farbe kann leicht mit einer Variablen verwechselt werden, daher kann man vereinbaren, daß man einem Typbezeichner ein "T" voranstellt (für "Typ"), also TFarbe. VISUAL BASIC Eigenschaften und Methoden Im Visual Basic-Proramm kann man diesen selbstdefinierten Datentyp benutzen wie andere Datentypen auch, ja er taucht sogar augenblicklich in der Eingabehilfe auf: Der Zugriff auf die Elemente des Typs erfolgt wie gewohnt: Dim AmpelFarbe As TFarbe . . AmpelFarbe = gelb . . If Ampelfarbe = rot then ... Achtung! Die Werte werden nicht in Anführungszeichen gesetzt; es handelt sich nicht um Strings! Vielmehr werden die Werte intern als Long-Werte abgebildet. Übung 1 Erläutere die Syntax der Deklaration eines Aufzählungstypen unter Verwendung der Visual BasicHilfe! Syntax: [Private] Enum Typname Listenelement1 [= Konstante] Listenelement2 [= Konstante] . . . End Enum Zusammenfassung: ? ? Benutzerdefinierte Typen werden ausschließlich in Modulen deklariert ? ? Sie sind standardmäßig "Public" im Projekt; Ausnahme: "Private"-Deklaration ? Typ ist nur innerhalb des Moduls verfügbar ? ? Dem Namen kann man zur Unterscheidung von anderen VB-Schlüsselwörtern ein "T" voranstellen Eigenschaften und Methoden VISUAL BASIC Aufgaben 1. Deklariere einen benutzerdefinierten Datentyp "TWochentag" mit den Elementen Montag=1, Dienstag=2, ..., Sonntag=0! Schreibe ein Programm, das dem Benutzer gestattet, einen Tag auszuwählen (Combobox), der dann anschließend angezeigt wird. 2. Deklariere einen benutzerdefinierten Datentyp "TJahreszeit"! Schreibe ein Programm, das dem Benutzer gestattet, eine Jahreszeit auszuwählen. Abhängig von der gewählten Jahreszeit soll in einem Bildfeld jeweils ein passendes Bild angezeigt werden. 3. Auf welche Werte werden die Elemente rot, gelb, gruen intern abgebildet? Enum TFarbe rot gelb = 5 gruen End Enum 4. Welche der folgenden Anweisungen ist erlaubt? (Begründung!) a) a = rot + gelb b) if b > gelb then b = gruen c) Dim x As TFarbe, y As TFarbe, z As TFarbe x = "rot" y=4 z=6 d) rot = 3 5. Schreibe ein Programm, das einen Aufzählungstypen mit allen Ampelphasen enthält. Diese sollen in einer verschachtelten Schleife dreimal der Reihe nach ausgegeben werden. VISUAL BASIC L2 Eigenschaften und Methoden Verbunddatentyp (Record, Struktur) (in Pascal/Delphi heißt ein Verbund Record, in C/C++ Struktur) Manche Dinge gehören einfach zusammen: ? ? Name, Vorname, Alter, Geschlecht ? ? Zähler und Nenner ? ? Name, Vorname, Straße, Hausnummer, PLZ, Wohnort ? ? Artikelnummer, ArtikelBezeichnung, Regalnummer, Warengruppe Dinge, die sinnvoll unter einem Oberbegriff zusammengefaßt werden können, z.B. Personendaten, Brüche, Adressen, Artikeldaten, ... werden in Visual Basic realisiert durch den strukturierten Datentyp Verbund. Die Definition erfolgt wiederum in einem Visual Basic-Modul: Type TPerson Name as String Vorname As String Alter As Long Geschlecht As TGeschlecht End Type Type definiert einen Verbund-Datentyp (Record, Struktur). Wie bei Aufzählungstypen kann man auch hier dem Typbezeichner ein "T" voranstellen, also TPerson. Im Gegensatz zum Aufzählungstyp stellen die Typelemente keine Aufzählung dar, sondern Attribute wie in einer Datenbank-Tabelle. Folglich hat jedes Attribut seinen eigenen Datentyp. (Dieser kann nun auch wieder ein Aufzählungstyp oder ein weiterer Verbundtyp sein - siehe weiterführende Beispiele) Eigenschaften und Methoden VISUAL BASIC Die Deklaration im Visual Basic-Programm erfolgt wie bei den anderen Typen. Auch hier wird der neue Typ sofort in die Hilfefunktion übernommen. Die Variable Lehrer heißt Verbundvariable oder Strukturvariable; sie besteht aus mehreren Elementen oder Attributen. Die Elemente des Verbunds werden über den Punktoperator oder Qualifizierer "." angesprochen; der Vorgang heißt dementsprechend Qualifizierung. Auch hier steht die Online-Hilfe zur Verfügung: Beachte: Die Variable Lehrer repräsentiert einen Verbund mit allen seinen Komponenten, dagegen wird mit Lehrer.Alter nur auf eine Komponente des Verbunds zugegriffen! Die Zuweisung Nachbar = Lehrer kopiert also den gesamten Verbund Lehrer einschließlich aller Komponenten in die Variable Nachbar (die natürlich vom gleichen (Verbund-) Typ sein muß wie Lehrer)
© Copyright 2025 ExpyDoc