Warum noch ein Access-Buch?
Für wen ist das Buch?
Jetzt bestellen
+ direkter Download des eBooks!
Nur EUR 59,95!
Fehler gefunden?
Bitte melden!
Wünsche an das Buch?
Her damit!
Was denken die Leser über dieses Buch?
Lesen Sie aktuelle Rezensionen!
Kapitel des noch nicht veröffentlichten Buchs zum Downloaden, Probelesen und Kommentieren
Beispieldatenbanken
Zusätzliches Material

Das Buch im HTML-Format

Für unbestimmte Zeit bieten Addison-Wesley und André Minhorst den kompletten Inhalt des Buchs als Download an. Schauen Sie rein und informieren Sie sich über den Inhalt! Und wenn Ihnen das Buch nützlich erscheint und Sie glauben, dass Sie etwas gelernt haben oder durch das Gelesene sogar etwas Zeit und somit Geld bei Ihrer Arbeit einsparen konnten, können Sie sich ja beim Autor und beim Verlag revanchieren - beispielsweise durch den Kauf dieses Buchs.

Am schönsten wäre es natürlich, wenn Sie das Buch direkt hier bestellen - Sie erhalten das Buch dann direkt vom Verlag, und der Autor und Verlag haben dann noch mehr davon, als wenn Sie es anderswo kaufen.

Danke für Ihr Interesse!

15.9.2 Vereinheitlichen per Schnittstellenvererbung

15.9.3 Realisierung der Schnittstellenvererbung

Im Code sind zur Anwendung der Schnittstellenvererbung drei Schritte erforderlich:

  • Erstellen der Schnittstelle in Form eines eigenen Klassenmoduls mit den öffentlichen Eigenschaften und Prozeduren
  • Anpassen oder Erstellen der Klassen, die die Schnittstelle implementieren
  • Anpassen der Klassen, die auf die Schnittstelle zugreifen sollen
  • Erstellen der Schnittstelle

    Die Schnittstelle enthält die Deklaration aller Eigenschaften und Methoden, die in allen Implementierungen realisiert werden müssen. Deklaration bedeutet in diesem Fall, dass nur die Rümpfe der jeweiligen Methoden, aber keinesfalls Implementierungsdetails angelegt werden. Die Schnittstelle für obiges Beispiel enthält lediglich die Methode Import():

    Option Compare Database
    Option Explicit

    Public Function Import(strDateiname As String)

    End Function

    Listing 15.39: Klassenmodul mit einer Schnittstelle

    Das Klassenmodul enthält keine Merkmale, die es von anderen Klassenmodulen unterscheiden - mit Ausnahme der Tatsache, dass die Methode keine Implementierung enthält, und mit einem zweiten Unterschied, der hier nicht offensichtlich wird: Schnittstellen-Klassenmodule erhalten ein I (für »Interface«) statt des für Klassenmodule üblichen cls als Präfix. Das obige Klassenmodul heißt folglich IImport.

    Implementieren der Schnittstelle

    Beim Implementieren bestehender Klassenmodule sind erhebliche Umbauarbeiten angesagt.

  • Eine Anweisung legt die zu implementierende Schnittstelle fest (beispielsweise Implements IImport).
  • Die Eigenschaften und Methoden, die in der Schnittstelle enthalten sind und implementiert werden sollen, müssen als private Elemente deklariert werden.
  • Die Namen der betroffenen Eigenschaften und Methoden erhalten ein Präfix, das aus der Bezeichnung der Schnittstelle und einem Unterstrich besteht (zum Beispiel IImport_Import). Dementsprechend sind auch die Variablen zum Speichern der Rückgabewerte von Funktionen anzupassen.
  • Die Implementierung der Schnittstelle IImport für den Import aus Textdateien sieht beispielsweise wie in folgendem Listing aus:

    Option Compare Database
    Option Explicit

    Implements IImport

    Private Function IImport_Import(strDateiname As String)
        'Import der Daten aus der Textdatei
        '[... viele weitere Zeilen Code]
        MsgBox "Import aus Textdatei läuft..."
        IImport_Import = True
    End Function

    Listing 15.40: Inhalt des Klassenmoduls clsImport_txt

    Anpassen der Klassen, die auf die Schnittstelle zugreifen

    Auch die auf die unterschiedlichen Implementierungen einer Schnittstelle zugreifenden Routinen muss man ordentlich umbauen. Das nachfolgende Listing zeigt das Aussehen der neuen Version der Routine aus Listing 15.37. Besonderes Augenmerk sollten Sie der Vorgehensweise bei der Deklaration und Instanzierung der Schnittstelle und der Import-Objekte widmen. Die Objektvariable objImport wird zunächst als Interface IImport deklariert. Erst im Select Case-Teil der Routine erfolgt die Instanzierung des Objekts. Dort wird je nach gewähltem Import-Algorithmus eine Instanz der entsprechenden Implementierung erzeugt. Ebenfalls zu beachten ist, dass der Zugriff auf das einzige Element der Schnittstelle - das heißt auf die Import-Funktion - nur noch von einer Stelle aus erfolgt.

    Private Sub cmdImportieren_Click()

        Dim objImport As IImport
        Dim strDateiname As String

        strDateiname = Me!txtDateiname

        Select Case Me.ogrImportart
            Case 1 'Text (.txt)
                Set objImport = New clsImport_txt
            Case 2 'XML (.xml)
                Set objImport = New clsImport_xml
            Case 3 'Access-Tabelle (.accdb)
                Set objImport = New clsImport_mdb

            Case 4 'Excel-Tabelle (.xls)
                Set objImport = New clsImport_xls
        End Select

        If objImport.Import(strDateiname) = True Then
            MsgBox "Import ist erfolgt."
        End If

    End Sub

    Listing 15.41: Zugriff auf unterschiedliche Implementierungen einer Schnittstelle

    Nächster Abschnitt:

    15.9.4 Was vom Beispiel übrig bleibt ...

    © 2006-2008 André Minhorst Alle Rechte vorbehalten.