Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 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; просмотров: 544; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.006 с.) |