Вы все еще упускаете важный момент: класс связывает данные с его методами. Таким образом, метод, который устанавливает учителя Джима, является частью класса Student, как и метод, который устанавливает оценку Джима.
Сначала подумайте об этом на естественном языке. «Джим - студент; у учеников есть имена, строгие идентификационные номера и классы. В классах есть учителя и классы. Студенты получают оценки по каждому классу в конце семестра».
Итак, у нас есть ученик класса. Студент, когда вы создаете объект из него, нуждается в имени студента и идентификаторе студента, поэтому «конструктор» должен быть чем-то со строкой имени и идентификатором студента - также назовите его String - чтобы инициализировать его. Я не знаю C #, поэтому я сделаю псевдокод с фигурными скобками ...
class Student {
String name;
String studentID;
Course crsList = List<Course>; // "list of courses."
Student(String name, String studentID ){
// Make a new student, the "constructor"
this.name = name;
this.studentID = studentID;
}
addCourse(Course c){
// Add a course to the student's list
this.crsList.append(c); // Adds c to end of crsList
}
}
Здесь написано: «У ученика есть имя и идентификатор, и мы можем добавить классы в их коллекцию классов».
class Teacher {
String name;
Course crsList = List<Course>;
Teacher(String name){
this.name = name;
}
// ... more methods here.
}
Но мы видим, что учителя и ученики - это люди разных типов, поэтому мы «рефакторинг» это, чтобы собрать общую часть
class Person {
String name;
Person(String name){
this.name = name;
}
// ... more methods
}
Теперь мы меняем Учителя и Ученика, поэтому мы говорим
class Student : Person {
String studentID;
Student(String name, String studentID){
// Now we need to initialize the Person part
super(name);
// and the special Student part
this.studentID = studentID;
}
}
, который теперь говорит, что «Студент - это тот человек, у которого есть дополнительный идентификатор студента, и к которому мы можем добавлять занятия».
Вы продолжите определять «addClass» для Teach, , но как часть класса Teacher . Зачем? Потому что добавление класса для учителя означает нечто иное, чем добавление класса для ученика. Вы добавили бы метод к Студенту, который берет Курс и Оценку, находит Курс и назначает ему оценку как-то. (Тест на популярность: является частью курса или частью студента?)