Correct use of an association class

2019-07-11 06:20发布

I am new to using UML and I am not sure if my diagram is correct. I would like some advice from someone more experienced than me.

The statement of my problema says:

Students study courses and each student can take several courses "studies" each. Any course can have more than one student studying it.

Students, who are identified by a numerical code, have a name, date of birth and one or more nationalities. A student who studies can receive scholarships.

A Student can recieve more than one scholarship per course. And an individual scholarship can be given to more than one student. The scholarships have a numeric code, which identifies them, a name, a base amount and different conditions to be fulfilled at the time of the assignment.

My proposal is the following: enter image description here

What I want is to represent students, grants and the courses the student takes, and I am not sure if I should use an associative relation or a ternary relation.

Can anybody confirm if my proposal UML diagram is the right one?

3条回答
戒情不戒烟
2楼-- · 2019-07-11 06:48

Before you get to any attributes, I don't see a correlation between the nouns in the problem statement and your classes. I would expect to see the following classes:

  • Student
  • Course
  • Nationality
  • Scholarship

I would also expect to see an association class, called CourseEnrollment, that would have the following italicized properties at the ends of the association:

  • Student studiedCourse [1..*] Course
  • Course studyingStudent [1..*] Student

That association class would have yet another association with Scholarship, called ScholarshipAward, that would have the following italicized properties at the ends of the association:

  • CourseEnrollment awardedScholarship [0..*] Scholarship
  • Scholarship receivingCourseEnrollment [0..*] CourseEnrollment

With this arrangement, a Scholarship can be awarded to a combination of Student and Course.

查看更多
我欲成王,谁敢阻挡
3楼-- · 2019-07-11 07:07

The only statement directly relating students, courses & grants is the unclear "[a s]tudent can receive more than one grant per course".

It only actually says that each student-course pair can have more than one associated grant. (Maybe the author of the assignment thought that that "per" sentence is saying more than that, but it's not.) It doesn't say of a student whether their grants depend on their courses, and if so how. Your design is best when given a triplet you can't tell anything about any other triplet. The design with Takes(student,course) & Receives(student, course, grant) with th FK (foreign key) {student, course} from Receives to Takes is best when if you know a student & course pair then you know its grants. If grants are given to a student independently of courses then a design with Takes(student,course) & Receives(student,grant) is enough.

Clarify with your instructor.

查看更多
男人必须洒脱
4楼-- · 2019-07-11 07:13

Almost. The lozenge (or diamond) shaped element is itself an association class which associates all connected classes. What you want it a simple association class between Student and Studies like this:

enter image description here

The Scholarship represents the exams passed by the students in specific studies. The association class relation is indicated by the dashed line linked to the association (which has a m-n multiplicity).

查看更多
登录 后发表回答