Отношения класса Rhapsody-UML

В чем разница между ассоциацией и композиционным отношением в uml.
Например..

class Student
{
Prof p;
//other features..
};
class Prof
{
Student s;
//other features..
};

где приведенный выше код является примером для композиционных отношений в C++..
И точно так же, какова кодировка для отношений ассоциации...?
Работая в uml, как это реализовать и как найти, какие отношения следует отдавать предпочтение?
Таким же образом, как реализовать концепцию множественности в этом отношении...?
Объясните эту вещь как можно более подробно в реальном времени.
Спасибо заранее..

2 ответа

Решение

композиция - это особый вид бинарной ассоциации.

В случае A, составленного B, экземпляр A отвечает за создание и уничтожение экземпляра B; это также означает, что один экземпляр B может составлять не более одного экземпляра A.

В вашем коде оба класса используют композицию, но есть ошибка, потому что есть круговая композиция (студент нуждается в профессоре, а студент нуждается в ученике).

Обычно Проф связан со многими студентами, а Студент связан со многими Профессорами; в этом случае вы можете использовать агрегацию в обоих классах с кратностью больше 1.

class Student;  // Forward declaration

class Prof {
    std::vector<Student*> _students;
};

class Student {
    std::vector<Prof*> _profs;
};
Другие вопросы по тегам