КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Отношения между классамиКлассы могут взаимодействовать друг с другом, как на этапе проектирования, так и на этапе выполнения программы. Существуют следующие, основные, отношения между классами: · Наследование. Позволяет описать новый класс на основе уже существующего (родительского), при этом свойства и функциональность родительского класса наследуются новым классом. Например: у класса «Автомобиль» есть свойство «Количество колёс». Если класс «Автобус» является наследником класса «Автомобиль», то он также наследует и свойство «Количество колёс»; Опредедение наследования класса выглядит следующим образом: class Child : Parent { } В данном примере, класс «Child» объявляется как наследник класса «Parent»; Различают следующие виды наследования: o Простое наследование. Пример данного наследования показан выше. При простом наследовании дочерний класс наследуется от одного родительского; o Множественное наследование. При множественном наследовании дочерний класс может наследовать свойства и функционал нескольких родительских классов. Возможность реализации данного наследования реализовано в языке C++;
· Ассоциация. Объекты классов вступают во взаимодействие между собой. Т.е. методы одного класса могут создавать и использовать экземпляры (объекты) другого класса; Пример ассоциации выглядит следующим образом: Class Client { string _name = “Иванов Иван Иванович”; float _rest = 0.0f; void LoadRest() { Account acc = new Account(); _rest = acc.LoadRestForClient(_name); } }
В данном примере в методе «LoadRest» класса «Client» используется класс «Account» для получения информации по остатке на счёте клиента. · Агрегация. Объекты одного класса входят в объекты другого. В данном случае, подразумевается, что данными одного класса являются экземпляры других классов. Например: Есть класс «Двигатель», который содержит данные и методы, характеризующие двигатели. У класс «Автомобиль» есть аналогичное свойство, которое принимает значение одного из экземпляров класса «Двигатель»; Пример ассоциации выглядит следующим образом: Class Engine { }
Class Car { Engine _engine; } В данном примере класс «Car» содержит поле с типом «Engine», что является агрегацией. · Композиция. Объекты одного класса, входят в объекты другого и зависят друг от друга по времени жизни. Например: Экранная форма является отдельным классом. На ней расположены различные компоненты (поля для ввода, кнопки и пр.), которые тоже являются классами. При этом, все они, составляют композицию, время жизни всех этих объектов, составляющих композицию, ограничено временем жизни формы (при закрытии формы все объекты удаляются).
|