Правильное использование класса ассоциации

Я новичок в использовании UML и не уверен, что моя диаграмма верна. Хотелось бы совета от человека более опытного, чем я.

В постановке моей проблемы говорится:

Студенты изучают курсы, и каждый студент может пройти несколько курсов «учеба» каждый. Любой курс может изучаться более чем одним студентом.

Студенты, которые идентифицируются числовым кодом, имеют имя, дату рождения и одну или несколько национальностей. Студент, который учится, может получать стипендию.

Студент может получить более одной стипендии за курс. И индивидуальная стипендия может быть предоставлена ​​более чем одному студенту. Стипендии имеют числовой код, который их идентифицирует, имя, базовую сумму и различные условия, которые необходимо выполнить во время назначения.

Мое предложение следующее: введите здесь описание изображения

Я хочу представлять студентов, гранты и курсы, которые берет студент, и я не уверен, следует ли мне использовать ассоциативное отношение или троичное отношение.

Может ли кто-нибудь подтвердить, является ли мое предложение диаграммой UML правильной?


person myhappycoding    schedule 26.05.2017    source источник


Ответы (3)


Единственным утверждением, непосредственно касающимся студентов, курсов и грантов, является неясное «[a s]студент может получить более одного гранта на курс».

На самом деле это только говорит о том, что каждая пара студент-курс может иметь более одного связанного гранта. (Возможно, автор задания думал, что это предложение «за» говорит больше, чем это, но это не так.) О студенте не сказано, зависит ли его грант от его курса, и если да, то как. Ваш дизайн лучше всего подходит, когда вы не можете ничего сказать ни о каком другом триплете. Дизайн с Takes (студент, курс) и Receives (студент, курс, грант) с th FK (внешний ключ) {студент, курс} от Receives к Takes лучше всего, когда вы знаете пару студента и курса, тогда вы знаете его гранты . Если гранты предоставляются студенту независимо от курсов, то достаточно дизайна с Takes(student,course) & Receives(student,grant).

Уточните у своего инструктора.

person philipxy    schedule 29.05.2017

Почти. Ромбовидный (или ромбовидный) элемент сам по себе является ассоциативным классом, который связывает все связанные классы. Что вы хотите, это простой класс ассоциации между Student и Studies, например:

введите здесь описание изображения

Scholarship представляет экзамены, сданные учащимися по конкретным предметам. Отношение класса ассоциации обозначено пунктирной линией, связанной с ассоциацией (которая имеет кратность m-n).

person qwerty_so    schedule 26.05.2017
comment
Studies не кажется мне допустимым классом. - person Jim L.; 31.05.2017
comment
@ДжимЛ. Я думаю, это должен быть Курс. Я склонен давать здесь довольно краткие ответы, поскольку в большинстве случаев необходимо обсуждать модели, поэтому используется UML. Поэтому обычно у вас нет ответа, но есть пища для размышлений. - person qwerty_so; 31.05.2017

Прежде чем вы перейдете к каким-либо атрибутам, я не вижу связи между существительными в условии задачи и вашими классами. Я ожидаю увидеть следующие классы:

  • Student
  • Course
  • Nationality
  • Scholarship

Я также ожидаю увидеть класс ассоциации, названный CourseEnrollment, который будет иметь следующие свойства, выделенные курсивом на концах ассоциации:

  • Student изучаемый курс [1..*] Course
  • Course учитсяСтудент [1..*] Student

Этот класс ассоциации будет иметь еще одну ассоциацию с Scholarship, называемую ScholarshipAward, которая будет иметь следующие свойства, выделенные курсивом на концах ассоциации:

  • CourseEnrollment присуждена стипендия [0..*] Scholarship
  • Scholarship получениеCourseEnrollment [0..*] CourseEnrollment

При таком расположении Scholarship может быть присуждено комбинации Student и Course.

person Jim L.    schedule 29.05.2017