Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Виды отношений между классами
Ассоциация представляет смысловую связь между сущностями(объектами),создаваемыми на основе классов. Ассоциация (association) определяется некото-рой связью между классами. Когда в системе создаются представители ассоции-рованных классов, они связываются так, как определяет данная ассоциация.
Ассоциации между классами разрабатываются в процессе так называемого семантического моделирования:моделирования структуры данных исходя изих смысла. Для этого полезно использовать ER-диаграммы (Entity – Relationship: Сущность – Связь).
Примечание. ER-диаграммы используются в разных аспектах проектированиясложных программных комплексов, причем, не только комплексов, разрабатываемых с использованием объектно-ориентированной парадигмы, но и при разработке баз данных и во многих других приложениях.
Основными понятиями, используемыми при построении ER-диаграмм, яв-ляются:
1. Сущность –класс однотипных объектов,информация о которыхдолжна быть учтена в модели. Сущность в рамках ООП представляется классом.
2. Экземпляр сущности –объект,создаваемый на основе класса.
3. Атрибут сущности –именованная характеристика.В ООП–инфор-мационный член класса 4. Ключ сущности –совокупность атрибутов,однозначно определяющихобъект.
5. Связь –ассоциация между сущностями.
Типы связей:
− один к одному − один ко многим
− многие ко многим
Пример связи: группа – студенты. Связь может иметь одну из двух модаль-ностей:
− может (может быть, а может и не быть)
− должен
При разработке ER-модели определяется следующая информация:
− Список сущностей − Список атрибутов
− Описание связей
Связи между сущностями реализуются с помощью механизмов наследова-ния, агрегирования, использования.
Наследование –отношение между классами,при котором один класс по-вторяет структуру и поведение другого класса (одиночное наследование) или других (множественное наследование) классов.
Класс, поведение и структура которого наследуется, называется базовым (родительским) классом, а класс, который наследует – производным классом.
В производном классе структура и поведение базового класса (информаци-онные члены и методы), дополняются и переопределяются. В производном классе указываются только дополнительные и переопределяемые члены класса. Произ-водный класс является уточнением базового класса:
class z: public y{... };
Агрегация –это отношение между классами типа целое/часть.Агрегируе-мый класс в той или иной форме является частью агрегата. Объект класса-агрегата может хранить объект агрегируемого класса, или хранить ссылку (указатель) на него.
Пример:
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);
Использование –отношение между классами,при котором один класс всвоей реализации использует в той или иной форме реализацию объектов другого класса.
Использование одним классом объектов другого класса может проявляться одним из следующих образов:
• Имя одного класса используется в профиле метода другого класса
• В теле метода одного класса создаётся локальный объект другого класса
• Метод одного класса обращается к методу другого класса (не совсем частный случай предыдущего способа использования, так как при вы-зове статических членов классов локальный объект не создаётся).
Одиночное наследование
Правила наследования
Наследование является одним из трех основных механизмов ООЯП. В ре-зультате использования механизма наследования осуществляется формирование иерархических связей между описываемыми типами. Тип-наследник уточняет базовый тип.
Прототип объявления типа-наследника:
Пример:
struct A { int x,y;
};
struct B: A { int z;
};
A a1;
B b1; b1.x = 1; b1.y = 2; b1.z = 3; a1 = b1;
Объект типа B наследует свойства объекта типа A.
Таким образом, объект типа-наследника содержит внутри себя члены ба-зового типа:
При наследовании наследуются не только информационные члены, но и методы. Не наследуются: Конструкторы Деструктор
Операция присваивания
Как уже было описано, единственный способ использования конструктора базового класса – список инициализации. Он записывается при описании кон-структора производного класса:
При создании объекта производного типа B сначала будет вызван конст-руктор базового типа A. При этом если конструктору базового типа нужны па- раметры, то его необходимо вызывать явно в списке инициализации. Затем будет вызван конструктор производного типа B.
Деструкторы вызываются в обратном порядке. При разрушении объекта производного типа сначала будет вызван деструктор этого типа, а затем дест-руктор базового типа. Допустимо присвоение объекту базового типа объекта производного типа. При этом объекту базового типа будет присвоена та часть объекта производного типа, которая структурно совпадает с базовым типом.
10.2. Преобразования указателей.
Безопасным приведением является приведение указателя на объект ти-па-наследника к указателю на объект базового типа.
Пусть A и B – типы из предыдущего примера. Тогда
A a1; A* pa; B b1; B* pb; pb = &b1;
pa = pb; // Указателю pa присваивается адрес объекта
// b. Т.к. указатель pa описан как указатель
// на объект типа A, то с его помощью видна
// только та часть объекта b, которая // структурно соответствует типу A.
pa = & a1; pb = (B*)pa; // Допустимое, но небезопасное явное
// преобразование указателя на объект // базового типа к указателю на объект // производного типа. Через указатель на
// объект типа B можно обращаться к // информации, которая присутствует в // типе В. Однако, в структуре объекта a1
// базового типа A отсутствуют // дополнительные члены производного // типа. // pb -> z; // Ошибочное обращение к таким членам после
// указанного преобразования (ошибка во // время исполнения программы).
|
|||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2017-02-05; просмотров: 420; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.118.12.222 (0.023 с.) |