простая задача дизайна: родитель, ребенок; преподаватель, студент - PullRequest
0 голосов
/ 04 июня 2011

очень простая проблема, но я хочу посмотреть, как на это смотрят эксперты.

Это просто воображаемое программное обеспечение только для понимания ООП. У меня есть программное обеспечение для школьной администрации. Итак, у меня есть классы

  • Студент
  • CLASSROOM
  • Учитель

Теперь я назначаю учителя классным учителем для определенного класса. таким образом ClassRoom содержит

Teacher classTeacher; 
Student[] students; 

Теперь полная программа написана, и все отлично работает ...

Проблема:

Теперь, что если директор устанавливает новое правило, что не должно быть ученика, для которого Учитель является Родителем. Теперь нам нужно внести больше параметров и множество изменений в наш код для небольшого требования. Каким должен быть проект, чтобы будущие изменения требований (которые неизбежно возникнут) требовали лишь незначительных изменений в коде?

1 Ответ

2 голосов
/ 04 июня 2011

Это не должно быть большим изменением кода, это должно быть изменением проверки.

псевдопользователей-код:

Class ClassRoom {
    List<Student> students
    Teacher teacher

    ClassRoom(Teacher _teacher, List<Student> students) {
        teacher = _teacher;
        SetStudents(students);
    }

    void SetStudents(List<Student> _students) {
         foreach (Student s in _students) {
             if (validate(s)) {
                 students.add(s);
             } else {
                 // error handling logic
             }
         }
    }

    void validate(Student student) {
        if (student.parent == teacher) {
            return false;
        }
        return true;
    }
}

class Student : Person {
    Person parent
}

class Teacher : Person { }

Конечно, вам нужно будет зайти в базу данных и кодовую базу и добавить свойства «Родитель» для всех ваших учеников. Но это также не должно быть слишком сложно.

...