Мегаобучалка Главная | О нас | Обратная связь


КЛАССЫ И ОБЪЕКТЫ Delphi



2018-07-06 976 Обсуждений (0)
КЛАССЫ И ОБЪЕКТЫ Delphi 0.00 из 5.00 0 оценок




Для реализации интерфейса 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) и компоненты доступа и управления базами данных. Существует еще множество других классов,

 

 

ПОЛИМОРФИЗМ

Полиморфизмнеразрывно связан с наследованием

Полиморфизм– возможность замещения методов класса-родителя одноименными методами класса-потомка.

Другими словами, - это свойство классов решать сходные по смыслу задачи разными способами.

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

 

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

В результате в -родителе и -потомке будут действовать два одноименных метода, имеющих разную алгоритмическую основу.

Способность использования одного и того же метода сообразно своему классу называется полиморфизмом.

В зависимости от того, какие действия происходят при вызове, методы делятся на следующие группы:

· статические методы;

· виртуальные методы;

· динамические методы.

Пример:

Класс TEmpioyee должен иметь свой собственный конструктор, обеспечивающий инициализацию класса-родителя и своих полей. Вот пример реализации конструктора класса TEmployee:

constructorTEmpioyee.Create(Name:Tname;Dep:integer);

Begin

inheritedCreate(Name);//inherited (англ.- унаследованный)

FDepartment:=Dep;

end;

В приведенном примере директивой inherited (англ.- унаследованный ) вызывается конструктор родительского класса. После этого присваивается значение полю класса-потомка.

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

Var engineer :TEmployee;

engineer := TEmployee.Create('Сидоров',413);

engineer.address := 'ул.Блохина, д.8, кв.10';

engineer.age := 23;

if engineer.dep=413 then …

________

Пример:

 

Type

Person=class

name: string;

age: integer;

constructor Create(nm: string; ag: integer);

Begin

name:=nm; age:=ag;

end;

procedure Print;

Begin

writeln('Имя: ',name,' Возраст: ',age);

end;

end;

Student=class(Person)

course, group: integer; новые поля

constructor Create(nm: string; ag,c,gr: integer);

begin //директивой inherited (англ.- унаследованный ) вызывается конструктор родительского //класса. После этого присваивается значение полю класса-потомка.

inherited Create(nm,ag); //перекрытие метода родительского

course:=c; group:=gr; //и добавление новых действий в методе

name:=nm; age:=ag;

end;

procedure Print;

Begin

inherited Print; //перекрытие метода родительского

writeln('Курс: ',course,' Группа: ',group);// и добавление новых действий в методе

end;

end;

Здесь метод Print производного класса Student вызывает вначале метод Print, унаследованный от базового класса Person, с помощью конструкции inherited Print. Аналогично конструктор Create класса Student вызывает вначале конструктор Create базового класса Person, также используя служебное слово inherited. Следует обратить внимание, что конструктор базового класса вызывается в этом случае как процедура, а не как функция, при этом создания нового объекта не происходит.

 



2018-07-06 976 Обсуждений (0)
КЛАССЫ И ОБЪЕКТЫ Delphi 0.00 из 5.00 0 оценок









Обсуждение в статье: КЛАССЫ И ОБЪЕКТЫ Delphi

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение...
Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние...
Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (976)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.005 сек.)