Datenklassen und Vererbung

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Mono.

    Datenklassen und Vererbung

    Guten Morgen,

    ich hätte einmal eine Frage zu Klassen und Vererbung.
    Bei meinem Auftraggeber gibt es eine Datenbank wo in den Tabellen teilweise gleiche Spalten enthalten sind.
    z.B.
    Tabelle A - Spalte A, Spalte B, Spalte C, Spalte M, Spalte O, Spalte R, Spalte S, Spalte T
    Tabelle B - Spalte A, Spalte B, Spalte C, Spalte X, Spalte Y, Spalte Z
    Tabelle C - Spalte A, Spalte B, Spalte C, Spalte R, Spalte S, Spalte T

    Nun möchte ich Datenbasisklassen schreiben, wo vorerst nur die Propeties enthalten sind und aus diesen dann die eigentliche Datenklasse mit den entsprechenden Methoden erzeugen.
    z.B.
    Class BasisA
    Property Spalte A
    Property Spalte B
    Property Spalte C
    End Class

    Class BasisB
    Property Spalte R
    Property Spalte S
    Property Spalte T
    End Class

    Für die Datenklasse der Tabelle A und Tabelle C würde ich ein inherits von BasisA und BasisB benötigen, was aber nicht geht, weil nur Inherits einmal vorkommen darf. Ich hätte aber Fälle, wo ich drei oder vier inherits Basisklassen machen müsste.

    Nun wollte ich fragen, wie ihr solche Situationen löst. Vielleicht habe ich aber auch den falschen Weg eingeschlagen und es gibt eine elegantere Lösung dafür. Interfaces bringen mich auch nicht weiter...
    Ich möchte mir einfach die Schreibarbeit ersparen und in den Datenklassen nicht immer die gleichen Properties tippen. Vielleicht kommen später dann noch Methoden dazu ...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „GerhardW“ ()

    Naja was du machen könntest wäre, das BasisB bereits von A erbt.
    Mehrfachvererbung ist wie du bereits festgestellt hast nicht möglich. Aber mehrere Vererbungsebenen schon.

    Also

    VB.NET-Quellcode

    1. ​Class BasisA
    2. Class BasisB : BasisA
    3. Class BasisC : BasisA
    4. Und später dann
    5. Class SomeDataB : BasisB


    Diese Klasse enthält nun Properties von BasisB und von BasisA
    Das ist meine Signatur und sie wird wunderbar sein!
    @Mono Danke für deine Antwort. Ja, soweit habe ich es auch gemacht, aber das Problem ist, dass es sein kann, dass BasisKlasse B nicht von BasisKlasse A erben soll. D.h. es gibt Klassen wo ich nur B und C brauche aber nicht A

    Ziemlich kompliziert...
    Nunja, es gibt halt noch die Möglichkeit von Interfaces. Eigentlich gehts ja bei Vererbung nicht vordergründig um Schreibfaulheit sondern um logische Verknüpfung.

    Interfaces können mehrfach verwendet werden und auch Properties haben. Implementierst du ein Interface funktioniert es ja ohne schreibaufwand mit Hilfe der IDE das Interface in der Klasse zu implementieren und dann weißt später immer was die entsprechende Klasse für Properties hat.

    Mehrfachvererbung hat zwar echt gute Seiten, aber auch seine Tücken. Denke darum wurde davon in C# und VB.NET abgesehen
    Das ist meine Signatur und sie wird wunderbar sein!