Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Визуальное программирование / Визуальное_программирование_лекция_18.doc
Скачиваний:
43
Добавлен:
07.06.2015
Размер:
191.49 Кб
Скачать

Лекция № 18 визуальное программирование

Методы построения классов. Иерархии классов

  1. Класс

Класс – это тип данных (например, Real или String), а объект – конкретный существующий в памяти компьютера экземпляр класса, переменная соответствующего типа.

Класс это структурный тип данных, который включает описание полей данных, а также процедур и функций, работающих с этими полями данных. Применительно к классам такие процедуры и функции получили название методов.

Метод определяет реакцию на некоторое внешнее или внутреннее сообщение о событии.

Переменные типа класс обычно называют объектами. Объект–переменная должен быть:

  • создан – для него должна быть выделена память;

  • инициирован – полям объекта присваиваются значения;

  • уничтожен – память, выделенная под объект, должна быть освобождена.

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

В зависимости от способа выделения памяти под объект переменную различают статические объекты, память под которые выделяется при компиляции программы, и динамические, выделение памяти под которые производится в процессе выполнения программы.

  1. Методы построения классов

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

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

Отношения между различными классами проекта можно иллюстрировать диаграммой отношений классов (диаграммой классов).

На диаграмме классов наследование изображают линией с треугольной незакрашенной стрелкой на конце, направленной к классу родителю.

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

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

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

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

На диаграмме классов наполнение изображают аналогично композиции, но ромб не закрашивают. Количество объектов указывается в виде диапазона, например, «0..» ил просто «*».

Полиморфным наследованием называется наследование, при котором осуществляется переопределение методов класса-родителя потомком. Метод потомка в этом случае имеет то же имя, что и метод родителя, но выполняет другие действия. Переопределение методов – частный случай полиморфизма в программировании.

При переопределении методов различают простой и сложный полиморфизмы.

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

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