Wenn ich ein Objekt speichern und abrufen möchte, sollte ich eine andere Klasse erstellen, um damit umzugehen, oder wäre es besser, dies in der Klasse selbst zu tun? Oder vielleicht beides mischen?
Was wird nach dem OOD-Paradigma empfohlen?
Beispielsweise
Class Student
{
public string Name {set; get;}
....
public bool Save()
{
SqlConnection con = ...
// Save the class in the db
}
public bool Retrieve()
{
// search the db for the student and fill the attributes
}
public List<Student> RetrieveAllStudents()
{
// this is such a method I have most problem with it
// that an object returns an array of objects of its own class!
}
}
Gegen. (Ich weiß, das Folgende wird empfohlen, aber es scheint mir ein bisschen gegen den Zusammenhalt der Student
Klasse)
Class Student { /* */ }
Class DB {
public bool AddStudent(Student s)
{
}
public Student RetrieveStudent(Criteria)
{
}
public List<Student> RetrieveAllStudents()
{
}
}
Wie wäre es, sie zu mischen?
Class Student
{
public string Name {set; get;}
....
public bool Save()
{
/// do some business logic!
db.AddStudent(this);
}
public bool Retrieve()
{
// build the criteria
db.RetrieveStudent(criteria);
// fill the attributes
}
}