Bir nesneyi kaydetmek ve almak istersem, onu işlemek için başka bir sınıf mı oluşturmalıyım, yoksa bunu sınıfın kendisinde mi yapmalıyım? Ya da belki her ikisini de karıştırıyor?
OOD paradigmasına göre hangisi önerilir?
Örneğin
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!
}
}
E karşı. (Aşağıdakilerin tavsiye edildiğini biliyorum, ancak bana Student
sınıfın uyumuna karşı biraz görünüyor )
Class Student { /* */ }
Class DB {
public bool AddStudent(Student s)
{
}
public Student RetrieveStudent(Criteria)
{
}
public List<Student> RetrieveAllStudents()
{
}
}
Onları karıştırmaya ne dersiniz?
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
}
}