Prinzipien der Objektorientierung: Kapselung

Heute starte ich eine kleine Serie über objektorientierte Prinzipien, die man grundsätzlich immer wieder anwenden sollte. Den Anfang macht: Die Kapselung. Dazu bediene ich mich des Beispiels einer User-Suche (ja ich weiß, das ist nicht sonderlich originell, aber es ist leicht zu verstehen). User sind gekennzeichnet durch Informationen wie User-ID, Name, Vorname, Geburtsdatum, oder Telefonnummer. Ein ganz naiver Ansatz zur Suche nach einem solchen User könnte so aussehen:


class User
{
    private string id;
    private string vorname;
    private string name;
    private DateTime geburtsdatum;
    private string telefonnummer;


    public User(string id, string vorname, string name, DateTime geburtsdatum, string telefonnummer)
    {
        this.id = id;
        this.vorname = vorname;
        this.name = name;
        this.geburtsdatum = geburtsdatum;
        this.telefonnummer = telefonnummer;
    }

    public string ID
    {
        get { return id; }
    }

    public string Vorname
    {
        get { return vorname; }
    }

    public string Name
    {
        get { return name; }
    }

    public DateTime Geburtsdatum
    {
        get { return geburtsdatum; }
    }

    public string Telefonnummer
    {
        get { return telefonnummer; }
    }

}  

class UserDatabase
{
    private List<User> users;

    public UserDatabase()
    {
        users = new List<User>();
    }

    public void AddUser(string id, string vorname, string name, DateTime geburtsdatum, string telefonnummer)
    {
        User user = new User(id, vorname, name, geburtsdatum, telefonnummer);
        users.Add(user);
    }
    public User GetUserByID(string userID)
    {
        foreach (User _user in users)
        {
            User u = _user;
            if (u.ID.Equals(userID))
                return u;
        }
        return null;
    }
    public User Search(User user)
    {
        foreach (User _user in users)
        {
            User u = _user;
            string name = u.Name;
            if ((name != null) && (!name.Equals("")) && (!name.Equals(u.Name)))
                continue;
            string vorname = u.Vorname;
            if ((vorname != null) && (!vorname.Equals("")) && (!vorname.Equals(u.Vorname)))
                continue;
            string telefonnummer = u.Telefonnummer;
            if ((telefonnummer != null) && (!telefonnummer.Equals("")) && (!telefonnummer.Equals(u.Telefonnummer)))
                continue;
            DateTime geburtsdatum = u.Geburtsdatum;
            if ((!geburtsdatum.ToShortDateString().Equals("")) && (!geburtsdatum.Equals(u.Geburtsdatum)))
                continue;
            return u;
        }
        return null;
    }
}

Weiterlesen

Advertisements