Отношения класса 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;
};
Также см. В чем разница между агрегацией, составом и зависимостью? и https://stackru.com/search?q=aggregation+and+composition