#oop
#ооп
Вопрос:
Меня смущает то, как создавать объекты здесь в этом сценарии. Я работаю с приложением для iPhone.
Предположим, у меня есть 2 основных объекта, STUDENTS и SUBJECTS , теперь здесь есть количество элементов «многие ко многим». Мне нужно отслеживать все оценки, полученные каждым учеником по каждому предмету.
Таким образом, таблиц базы данных становится 3, подобных этому STUDENT SUBJECTS МЕТКИ СТУДЕНТА — (описывают связь student и subject)
Теперь ERD мне понятен, но я запутался в моделировании OO здесь, какие объекты / классы мне нужно создать здесь, и как они будут взаимодействовать? Пожалуйста, если кто-нибудь может мне объяснить.
Заранее спасибо.
Редактировать:
Как только 2 класса могут соответствовать моим требованиям? Позвольте мне объяснить:
Класс subject содержит все свойства, конкретно относящиеся к предмету, такие как его имя, количество зачетных часов, класс, в котором он обучается и т.д.
Класс Student имеет свои собственные специфические свойства, такие как имя, возраст, класс, в котором зарегистрирован, и т.д. И т.п.
Теперь, где мне хранить эту информацию о том, что студент получил 90 баллов по предмету. Как и в случае DB, у меня есть другая таблица для этого, как в отношении m-m. Итак, мой вопрос в том, должен ли я также создать класс этой 3-й таблицы, скажем, STUDENTMARKS, как указано выше, потому что основной объект student или subject не может содержать всю информацию, такую как StudentA ..to … StudentZ зарегистрирован в subjectA, и все эти объекты student содержатся в Subject Object, но где хранить оценки каждого student, потому что объект student не может иметь атрибута marks, потому что marks не связан напрямую / только с student.
Может кто-нибудь, пожалуйста, составить подробный список классов для этого, учитывая Obj-C.
Комментарии:
1. Это был более обобщенный вопрос по дизайну. После редактирования вы сделали мой ответ неактуальным. @Sohail в следующий раз, когда ваша концепция OO будет ясна, вам следует создать новый пост, касающийся Obj-C : (
Ответ №1:
Многие ко многим, класс Student будет иметь список объектов Subject, а Subject будет иметь список объектов Student…Если вы предлагаете определенный предмет дважды в год, то в каждом семестровом объекте будет список студентов.
public class Student{
private ArrayList<Subject> current;
private ArrayList<Subject> passed;
...
}
public class Subject{
private ArrayList<Student> enrolled;
private ArrayList<Student> passed;
...
}
Удачного кодирования
Добро пожаловать в мир OO!
После вашего выпуска,
Вы можете иметь. Хэш-карта внутреннего класса Student в качестве атрибута.
Нравится
private HashMap<Subject,Integer> transcript....
Здесь Subject — это ключ, а Integer — оценки, которые получает студент. Если вы хотите получить оценки от исходного объекта для определенной темы, сделайте это,
S1.getScore(subject)
Где s1 — объект Student, subject — объект Subject класса.
Внутри класса Student вы можете добавить метод, подобный,
public Integer getScore(Subject sub){
return transcript.get(sub);
}
Я прошу прощения, если отступ неверен, поскольку я пишу это с мобильного 😉
Комментарии:
1. Проверьте мою правку … если вам это нравится, чем просто оцените, проголосовав за, спасибо, приятель!
2. Крио, да, мне это нравится, я попробую. Спасибо. Но моя репутация в ОС сейчас составляет всего 9, поэтому я не могу проголосовать, так как для этого требуется минимум 15. Но да, мне это нравится, и большое вам спасибо за вашу поддержку.
Ответ №2:
Как насчет этого (предполагая C #):
public class StudentMarks
{
public Student Student { get; set; }
public Subject Subject { get; set; }
public decimal Mark { get; set; }
}
public class Student
{
public string Name { get; set; }
}
public class Subject
{
public string Name { get; set; }
}