Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа 2012 / ВВЕДЕНИЕ В ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ.doc
Скачиваний:
45
Добавлен:
07.06.2015
Размер:
183.81 Кб
Скачать

Наследование

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

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

Такой механизм получения новых классов называется порождением.Процесс образования подкласса – специализация. Процесс образования суперкласса – обобщение.

Например,

У базового класса TButton(кнопка) есть дочерние классыBitBtn(кнопка с рисунком и надписью) иTSpeedButton(кнопка с рисунком).

При объявлении класса-потомка указывается класс родителя. Например, класс TEmployee (сотрудник) может быть порожден от рассмотренного выше класса TPerson путем добавления поля FDepartment (отдел). Объявление класса TEmplioyee в этом случае может выглядеть так:

type

TEmployee = class (TPerson)

FDepartment: integer; // номер отдела

constructor Create(Name:TName; Dep:integer);

end;

Правила наследования

1. Объект-наследник (потомок) получает все поля и методы предка.

2. Потомок может (хотя и не обязательно) добавить: собственные поля, методы или перекрыть своими методами одноимённые унаследованные методы.

3. Любой тип–потомок может быть родительским для других типов. В этом случае новый тип наследует поля всех своих предков .

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

5. Имена методов в родительских и дочерних типах могут совпадать. В этом случае метод дочернего типа «перекрывает» метод родительского.

Классы и объекты Delphi

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

Классы и Объекты Delphi имеют следующую иерархию (см. диаграмму): Самый первый класс (основной), который не имеет предков, а сам является предком для всех остальных – TObject.

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

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

Класс TComponent умеет взаимодействовать со средой разработчика и передает это умение потомкам всем компонентам Delphi.

Класс TСontrol умеет взаимодействовать со средой и умеет обслуживать видимые на экране изображения,

а его потомок может создавать Windows-окна и т. д.

Если выразить наследование в виде иерархической структуры, то для созданных элементов управления Button1, Button2 и CheckBox1 получим следующую диаграмму:

Например, элемент управления CheckBox1 (т.е. классCheckBox1) может наследовать все или некоторые свойства и методы, вышестоящих по иерархии классов, а никакие черты от классаTButton– наследовать не может. Другими словами можно сказать, чтоCheckBox1 произведен (derived) непосредственно от класса-предкаTCheckBox, а также отTObject,TPersistent,TComponent,TControlиTWinControl.

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

Во время проектирования формы приложения Delphi автоматически добавляет в текст программы необходимые объекты. Если сразу после запуска Delphi просмотреть содержимое окна редактора кода, то там можно обнаружить следующие строки:

type

TForm1 = class(TForm)

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: Tform1

Это описание класса исходной, пустой формы приложения и объявление объекта — формы приложения.

Когда программист, добавляя необходимые компоненты, создает форму, Delphi формирует описание класса формы. Когда программист создает функцию обработки события формы или ее компонента, Delphi добавляет объявление метода в описание класса формы приложения.

Помимо классов визуальных компонентов в библиотеку классов входят и классы так называемых невизуальных (невидимых) компонентов, которые обеспечивают создание соответствующих объектов и доступ к их методам и свойствам. Типичным примером невизуального компонента является таймер (тип TTimer) и компоненты доступа и управления базами данных. Существует еще множество других классов,