Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Пример. Желая автоматизировать розничную торговую точку, мы обнаруживаем две абстракции – товары и продажи. Введем два класса: класс Product – это то, что мы продали в некоторой сделке, а класс Sale – сама сделка, в которой продано несколько товаров.
class Product; class Sale;
class Product {
Sale* lastSale;
...
};
class Sale {
Product** productSold;
...
};
Ассоциация – смысловая связь. По умолчанию, она не имеет направления и не объясняет, как классы общаются друг с другом. Мы можем только отметить семантическую зависимость, указав, какие роли играют классы друг для друга.
Так, ассоциация "Product – Sale" – двустороннее отношение: задавшись товаром, можно выйти на сделку, в которой он был продан, а пойдя от сделки, найти, что было продано.
Кратность (мощность) ассоциации – это количество ее участников. Различают три случая кратности ассоциации:
– один-к-одному;
– один-ко-многим;
– многие-ко-многим.
Рассмотренная в примере ассоциация имеет тип один-ко-многим: каждый экземпляр товара относится только к одной последней продаже, в то время как каждый экземпляр Sale может указывать на совокупность проданных товаров.
Отношение один-к-одному обозначает очень узкую ассоциацию. Например, в розничной системе продаж примером могла бы быть связь между классом "Продажа" и классом "Снятие денег с кредитной карточки": каждая продажа соответствует ровно одному снятию денег с данной кредитной карточки.
Отношение многие-ко-многим тоже нередки. Например, каждый объект класса "Покупатель" может инициировать сделку с несколькими объектами класса "Торговый агент", и каждый "Торговый агент" может взаимодействовать с несколькими объектами класса "Покупатель".
Класс может иметь ассоциацию с самим собой. Такая ассоциация называется рефлексивной.
Дата публикования: 2015-04-06; Прочитано: 404 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!