Zum Inhalt springen

Welche Methode in welche Klasse?


Sandbox

Empfohlene Beiträge

Hallo zusammen,

ich habe das Problem, dass ich nicht wirklich weiß, welche Methode in welcher Klasse am besten geeignet ist. Wie strukturiere ich meine Klassen?

Ich programmiere in C#, das sollte aber keine Rolle spielen.

Ich programmiere ein Tool mit dem User verwaltet werden. Ich habe bis jetzt eine Klasse "User" in der ich die User Daten (Name, Telefon..) mit Getter und Setter kapsle.

Um einen User zu Speichern habe ich eine Methode "saveUser". Um die Daten für einen bestimmten User zu laden habe ich einen überladenen Konstruktor in dem ich eine ID mitgeben kann, sodass dieser dann über die Methode "loadUser" geladen wird.

Zudem gibt es noch weitere Methoden die im weiteren Verlauf notwendig sind. z.b: "LoadCalendar" - userspezifisch

Nun habe ich ein Verständnisproblem!!

Ich benötige für eine Übersicht alle User aus der Datenbank. Natürlich kann ich das über ein SQL Statement laden, aber wie kann ich hier die Klasse "User" nutzen?

Ist es sinnvoll/gängige Praxis, dass ich nun eine Methode "loadAllUser" in der Klasse "User" implementiere? Somit müsste ich ein Objekt vom Typ "User" erstellen um alle Daten zu erhalten?!? --> Kann ich mir jetzt nicht vorstellen!

Oder muss ich mir hier eine Klasse "Users" definieren, dort die Methode "loadAllUsers" die mir dann alle User als Objekte zurückgibt? Wenn ja, wäre dies dann ein Array? Wie würde diese Klasse aussehen? Wie Lade ich dann meine Objeke vom Typ "User"?

Das sind jetzt vieleicht viele Fragen, aber vieleicht kann mir hier jemand helfen.

Gruß,

Sandbox

Link zu diesem Kommentar
Auf anderen Seiten teilen

Die knappe Antwort:

beschäftige dich mit den grundlagen der Objektorientierung, Single Responsibility Pattern, Repository Pattern und Entity Framework.

Ausführlich:

Dein Problem ist, dass du die grundlegenden Prinzipien der Objektorientierung noch nicht verstanden bzw. verinnerlicht hast. Jede Klasse sollte nur eine Aufgabe haben. Und eine Klasse User ist nicht dazu da, um auch direkt noch User zu verwalten. Z.B. könntest du dafür eine Klasse UserRepository einführen, die User speichert, lädt, anlegt usw.

Beispiel in C#


public class User

{

    public string Name {get; set;}

    public int Age {get; set; }

}

public class UserRepository

{

    public IEnumerable<User> GetAllUsers()

    {

         //Deine Implementierung inkl. Datenzugriffstechnologie

         //Beispiel Entitiy Frameworks

        using(var context = new DbContext())

        {

             return context.Users.toList();

        }

    }

}

Was deine Frage bezüglich des Durchschnitts angeht: Du hast doch hier eine klare fachliche Funktion die du also separat kapseln kannst, z.B. in eine Klasse UserCalculations:

public class UserCalculations

{

    public int UserAgeAverage()

    {

       var userRepo = new UserRepository();

       var users = userRepo.GetAllUsers();

       int sumAge;

       foreach(var user in users)

       {

           sumAge += user.Age;

       }

       return sumAge / users.Count;

    }


}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...