Bezug zu "Hauptklasse"

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von mrMo.

    Bezug zu "Hauptklasse"

    Hallo liebes Forum,

    habe nur eine kurze Frage.

    Habe ein Modell zum Speichern von Daten. Habe eine "Datenbankklasse", welcher jeweils die Kontakte und die Gruppen speichert. In der Gruppe speichere ich die IDs der Mitglieder, nun sollen die Objekte mittels einer Property auf Anfrage in der Datenbank mithilfe der IDs aufgelöst werden. Ich muss dazu die Datenbankklasse als statisch deklarieren. Wäre es auch möglich das ohne statische Klasse zu machen, welche sich auch für größere Objektmengen eignen. Also fällt die Lösung raus, dass man in jedem Gruppen/Kontaktobjekt einen Verweis auf die Datenbankklasse speichert.

    Hoffe ihr versteht, was ich meine.

    Vielen Dank für die Hilfe im Voraus

    Julian
    Hmkay. :|

    jedijaeger schrieb:

    Hoffe ihr versteht, was ich meine


    Hab jetzt bestimmt 15 Minuten versucht deine Frage zu verstehen. Je mehr ich lese und überlege, desto konfuser erscheint mir das alles.
    Also -> Ne, irgendwie nicht :thumbup:

    ​Vielleicht magst du deine Frage nochmal genauer Beschreiben ohne irgendwelche Fachbegriffe zu verwenden. Ich glaube nämlich, dass hier der ein oder andere Begriff nicht ganz korrekt angewendet wird.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Sorry für die verspätete Antwort.

    @mrMo und @ErfinderDesRades Gut. Ich versuche es nochmal.

    Ich habe folgende Klasse:

    C#-Quellcode

    1. public class Database
    2. {
    3. private static List<Contact> contacts = new List<Contact>();
    4. private static List<Group> groups = new List<Group>();
    5. public static Contact FindContactByID(string id)
    6. {
    7. return contacts.Find(contact => contact.ID == id);
    8. }
    9. ...
    10. }


    Jetzt habe ich in der Klasse Group eine ID des Kontakts, der die Gruppe gegründet hat:

    C#-Quellcode

    1. public class Group
    2. {
    3. private string founderID = "";
    4. public Contact Creator { get => Database.FindContactByID(founderID); }
    5. ...
    6. }


    Wie ihr seht musste ich die Database Methode FindContactByID als static markieren. Wenn ich in meinem Programm, aber mit mehreren Datenbanken gleichzeitig arbeiten will, müsste ich jeder Group ja ein Objekt vom Typ Database als Bezugsstation für die Ermittlung des Contact mit dran hängen.

    Gibt es da andere Möglichkeiten?

    Hoffe jetzt ist es verständlicher.

    Liebe Grüße

    Julian
    Hmkay. :|
    Lern relationale Datenmodellierung.
    Vorzugsweise am typisierten Dataset, zunächstmal ohne Datenbank.
    Poste Bildle des Dataset-Designers, wo du dein Datenmodell drin entworfen hast. Dann kann man vernünftig über dein Datenmodell sprechen.

    So wie hier: mit schlecht benamten Klassen und unvollständigem Code macht das in meinen Augen nicht viel Sinn.
    Zumal OOP-Datenmodelle (also selbstgecodete Klassen) vom Prinzip her den relationalen Datenmodellen an Leistungsfähigkeit unterlegen sind:
    Die Wirklichkeit ist meist zu komplex, als dass sie in einem OOP-Modell darstellbar wäre, während ein relationales Datenmodell die Anforderung noch gut bewältigt.
    Öhm ja, ich kann leider nicht nachvollziehen was nun das Problem ist. Auch ist mir das Datenmodell alles andere als klar.

    Was mach denn dein Programm so im Allgemeinen? Adressverwaltung?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    @ErfinderDesRades
    Nein, da ich die Daten aus einer Android Datenbank importiere ist das nur begrenzt möglich. Das ganze soll später die WhatsApp Datenbank abbilden. Und bis jetzt funktioniert das auch gut nur dadurch, dass die Datenbank statisch sein muss, ist das instanzieren von mehreren Datenbanken bis jetzt nicht möglich.

    @mrMo
    Im Allgemeinen soll das Programm WhatsApp Datenbanken managen. Also verschiedene Backups mergen und Chatstatistiken erstellen usw. Damit man das vernünftig machen kann will ich halt anständige Klassen haben mit denen ich Arbeiten kann.
    Hmkay. :|

    jedijaeger schrieb:

    Nein, da ich die Daten aus einer Android Datenbank importiere ist das nur begrenzt möglich.
    Was soll das?
    Weil die Daten aus Android kommen, ist dir nur begrenzt möglich, relationale Datenmodellierung zu erlernen?

    Sieh es mal anders (und richtig) herum: Ohne relationale Datenmodellierung zu beherrschen wirst du die Watzapp-Datenbanken sicherlich nicht bewältigen können - denen liegt nämlich allerhöchstwahrscheinlich ein relationales Datenmodell zugrunde.
    Ok, auch wenn ich das Datenmodell nicht verstanden habe und dein veröffentlichter Code gekürzt ist, versuche ich mal zu helfen.

    Wie ihr seht musste ich die Database Methode FindContactByID als static markieren. Wenn ich in meinem Programm, aber mit mehreren Datenbanken gleichzeitig arbeiten will, müsste ich jeder Group ja ein Objekt vom Typ Database als Bezugsstation für die Ermittlung des Contact mit dran hängen.


    Ne, wieso "muss" die static sein? Das static spart dir nur die arbeit die Klasse zu instanziieren um an die Methode zu kommen. Wenn du pro Group eine Database Klasse brauchst, gib der Group diese als Property.

    Wenn du bestimmte Daten brauchst um z.B. die Klasse Contact zu instanziieren, nutze einen Konstruktor und über gib diesem die benötigten Daten.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen