Announcement

Collapse
No announcement yet.

Objektorientierung

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Objektorientierung

    Hallo Zusammen,

    Ich habe eine Frage zur Objektorientierung.
    Folgende Situation:

    Ich habe 2 Klassen: User und Contact. Die User-Klasse beinhaltet u.a. eine Funktion, um den Benutzer mit Benutzernamen und Passwort in die tbl_user einzutragen. Außerdem gibt es eine Funktion um den Contact mit dem User in der tbl_contact_to_user zu verknüpfen. Die Contact-Klasse beinhaltet eine Funktion um Name, Vorname, Anrede, etc... in die tbl_contact einzutragen.

    Meine Frage: Ist es basierend auf bestmöglicher Objektorientierung optimaler, wenn ich in der Klasse MainWindow.xaml.cs erst die Klasse Contact aufrufe, den Kontakt eintrage, mir die ID wiedergeben lasse, und danach die Klasse User aufrufe, die Id des Kontaktes in der Klasse speichere, den User eintrage und dann die Zuordnung mache oder ist es optimaler, wenn ich in der MainWindow.xaml.cs nur die Klasse User und ihre Funktion "Input" aufrufe, die dann alles erledigt, also: Klasse Contact aufrufen, Contact eintragen, Id wiedergeben, User eintragen, Id des Users wiedergeben, Ids in Klasse speichern. ???

  • #2
    Ich würde die 2.te Methode vorziehen da du so weniger Logik in der UI hasst. Beides ist aber meiner Meinung nach eher mäßig.

    User und Contact scheinen Klassen des Domänenmodels zu sein (enthalten Anwendungslogik) und sollten daher von der Persistierung unabhängig sein. Deine Funktionalität zum speichern in der Datenbank sollte, also wenn möglich, in anderen Klassen stecken. Insbesondere deine erste Lösungsmethode zeigt anschaulich eins der Probleme. So wie du das speichern dort vornehmen wolltest hast du an den Benutzer der Klasse(n) ein Implementierungsdetail veröffentlicht mit dem er dann umgehen muss. (Das Verwenden von db-seitig generierten Schlüsseln). Wenn du das in Zukunft auf ein anderes Verfahren ändern möchtest/musst kommst du in Schwierigkeiten weil du a.) das aktuelle Verhalten irgendwie nach basteln müsstest oder b.) die veröffentlichte API ändern müsstest.

    Comment

    Working...
    X