Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРОГРАММНАЯ ИНЖЕНЕРИЯ.docx
Скачиваний:
116
Добавлен:
09.09.2018
Размер:
2.83 Mб
Скачать

1.7 Понятие наследования

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

В повседневной жизни мы часто сталкиваемся с разбиением классов на подклассы: например, класс жи- вотные можно разбить на подклассы млекопитающие, земноводные, насекомые, птицы и т. д. Класс наземный транспорт делится на классы автомобили, грузови- ки, автобусы, мотоциклы и т. д. Принцип, положенный в основу такого деления, заключается в том, что каж- дый подкласс обладает свойствами, присущими тому классу, из которого выде- лен данный подкласс. Автомобили, грузовики, автобусы и мотоциклы обладают колесами и мотором, являющимися характеристиками наземного транспорта. Кроме тех свойств, которые являются общими у данных класса и подкласса, подкласс может обладать и собственными свойствами: например, автобусы име- ют большое число посадочных мест для пассажиров, в то время как грузовики обладают значительным пространством и мощностью для перевозки тяжеловес- ных грузов и т. д. Иллюстрация этой идеи приведена на рис. 1.6.

Подобно этому, в программировании класс также может породить множест- во подклассов. В C++ класс, который порождает все остальные классы, называ- ется базовым классом, остальные классы наследуют его свойства, одновременно обладая собственными свойствами. Такие классы называются производными.

Роль наследования в ООП такая же, как и у функций в про- цедурном программировании, — сократить размер кода и упростить связи между элементами программы. В результате использования механизма наследование отпадает

необходимость заново описывать уэюе существующие в классе-родителе поля

и методы. Требуется описать только те поля и методы, которых недостает в

классе-родителе.

Особый интерес представляют элементы, обладающие модификатором доступа protected. Модификатор protected используется тогда, когда необходимо, чтобы некоторые члены базового класса оставались закрытыми, но были бы доступны для производного класса.

Новый класс строится на базе уже существующего с помощью конструкции следующего вида:

class Parent {....};

class Child : [модификатор наследования(public)] Parent {....};

1.8 Структура классов в Delphi

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

Благодаря механизму наследования свойств и методов, потомки базовых классов умеют "общаться" друг с другом; работают в среде разработки, взаимодействуя с Палитрой компонентов и Инспектором объектов; распознаются операционной системой как элементы управления и окна.

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

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

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

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

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

Класс TControl происходит от класса TComponent. Его основное назначение — обеспечить функционирование визуальных компонентов. Каждый визуальный компонент, произошедший от TControl, наделяется основными признаками элемента управления. Благодаря этому, каждый визуальный компонент умеет работать с GUI (Graphic User Interface — графический интерфейс пользователя ОС) и отображать себя на экране.

Класс TWinControl расширяет возможности разработчиков по созданию элементов управления. Он наследуется от класса TControl и обеспечивает создание оконных элементов управления.

На основе класса TWinControl создан еще один дополнительный класс — TCustomControl. Он обеспечивает создаваемые на его основе компоненты возможностями по использованию канвы — специального объекта, предназначенного для отображения графики (подробнее о канве см. гл. Л).

Класс TCustomControl является общим предком для целой группы классов, обеспечивающих создание различных нестандартных типов оконных (получающих фокус) элементов управления Windows: редакторов, списков и т. д.

Для создания неоконных (не получающих фокус) элементов управления используется класс TGraphicControl, являющийся потомком класса TControli.

В целом иерархия базовых классов обеспечивает полноценную работу разработчиков в Delphi, позволяя проектировать любые типы приложений.