Виды отношений между классами




Лабораторная работа «Диаграмма классов»

Ключевые понятия: сущность, отношение между сущностями, ассоциация, агрегация, композиция, наследование, зависимость, диаграмма классов.

Цель работы: научиться формализовывать предметную область в виде классовой диаграммы.

Задание кафедры: Для заданной предметной области придумать возможную задачу, которую можно автоматизировать созданием информационной системы. Необходимо выделить сущности предметной области, которые можно описать классами. Каждую сущность следует описать ее свойствами и методами. Необходимо построить диаграмму классов с указанием их свойств и методов, а также связей между классами. На итоговой диаграмме классов (не менее 10 классов) должны быть представлены все основные виды связей (ассоциация, агрегация, наследование, композиция, зависимость). Необходимо добавить краткое описание каждого класса, каждого свойства/метода класса и каждой связи в диаграмме.

 

 

Вар Предметная область   Вар Предметная область
  Животные     Ландшафт
  Растения     Мебель
  Автомобили     Страны
  Бытовая техника     Ювелирные изделия
  Строения     Морские суда
  Продовольственные товары     Видеоигры
  Карты     Музыкальные инструменты
  Условные знаки     Одежда
  Обувь      

Содержание отчета: сведения об авторе и работе; задание кафедры; цель работы; описание задачи, поставленной для информационной системы; диаграмма классов; описание сущностей диаграммы классов (с их свойствами и методами); описание связей между сущностями на диаграмме классов; выводы.

Контрольные вопросы:

1. Какие бывают отношения между классами?

2. Как обозначаются отношения на диаграмме классов?

3. Что обозначает отношение «ассоциация»? Приведите пример.

4. Что обозначает отношение «агрегация»? Приведите пример.

5. Что обозначает отношение «композиция»? Приведите пример.

6. Чем отличается отношение «агрегация» от отношения «композиция»?

7. Что обозначает отношение «зависимость»? Приведите пример.

 


Теоретические сведения

Виды отношений между классами

Ассоциация представляет смысловую связь между сущностями (объектами), создаваемыми на основе классов. Ассоциация (association) определяется некоторой связью между классами. Когда в системе создаются представители ассоциированных классов, они связываются так, как определяет данная ассоциация.

Ассоциации между классами разрабатываются в процессе так называемого семантического моделирования: моделирования структуры данных исходя из их смысла. Для этого полезно использовать ER-диаграммы (Entity – Relationship: Сущность – Связь).

Примечание. ER-диаграммы используются в разных аспектах проектирования сложных программных комплексов, причем, не только комплексов, разрабатываемых с использованием объектно-ориентированной парадигмы, но и при разработке баз данных и во многих других приложениях.

Основными понятиями, используемыми при построении ER-диаграмм, являются:

1. Сущность – класс однотипных объектов, информация о которых должна быть учтена в модели. Сущность в рамках ООП представляется классом.

2. Экземпляр сущности – объект, создаваемый на основе класса.

3. Атрибут сущности – именованная характеристика. В ООП – информационный член класса

4. Ключ сущности – совокупность атрибутов, однозначно определяющих объект.

5. Связь – ассоциация между сущностями.

Типы связей:

− один к одному

− один ко многим

− многие ко многим

Пример связи: группа – студенты. Связь может иметь одну из двух модальностей:

− может (может быть, а может и не быть)

− должен

При разработке ER-модели определяется следующая информация:

− Список сущностей

− Список атрибутов

− Описание связей

Связи между сущностями реализуются с помощью механизмов ассоциации, наследования, агрегирования, зависимости.

Ассоциация – отношение между классами, при котором один класс ссылается на один или несколько экземпляров другого класса по одному или нескольким идентификационным параметрам. Допускается, чтобы оба конца ассоциации относились к одному классу. В ассоциации могут связываться два класса, и тогда она называется бинарной. Допускается создание ассоциаций, связывающих сразу n классов (они называются n-арными ассоциациями). Графически ассоциация изображается в виде линии, соединяющей класс сам с собой или с другими классами.

class Student {

int card_id; //атрибуты карты

… //атрибуты студента

};

class Card{

int card_id; //атрибуты карты

… //другие атрибуты карты

};

Наследование – отношение между классами, при котором один класс повторяет структуру и поведение другого класса (одиночное наследование) или других (множественное наследование) классов. Класс, поведение и структура которого наследуется, называется базовым (родительским) классом, а класс, который наследует – производным классом.

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

class furniture {…}

class table: public furniture {…}

class cupboard: public furniture {…}

Агрегация – это отношение между классами типа целое/часть. Агрегируемый класс в той или иной форме является частью агрегата. Объект класса-агрегата может хранить объект агрегируемого класса, или хранить ссылку (указатель) на него.

Пример:

class node {...}; // агрегируемый класс, описывающий

// вершину дерева

class tree { // класс-агрегат, описывающий дерево.

node* root; // единственным информационным членом

// является указатель на выделенную

// вершину – корень дерева

public:

tree(){root = 0;}

...

};

Композиция является специальным видом агрегирования (так называемое сильное агрегирование). Композиция объектов заключается в использовании объектов типов разработанных классов в качестве информационных членов при описании других классов.

Пример:

class point{

int x,y;

public:

point(){...}

point(int x1, int y1){...}

...

};

class z1{

point p;

int z;

public:

z1(int z2){... }

...

};

z1* z3 = new z1(1);

Зависимость – отношение между классами, когда изменение одного класса может порождать необходимость изменения в другом классе. Например, при наличии класса, отображающего пользователю меню, и при наличии класса, содержащего набор окон, отображаемых пользователю, при добавлении нового окна необходимо будет добавить и новый элемент меню.

class Windows{

Window* windows;

};

class Menu{

MenuItem* items;

};



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-12-12 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: