КЛАССЫ И ОБЪЕКТЫ 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) и компоненты доступа и управления базами данных. Существует еще множество других классов,
ПОЛИМОРФИЗМ Полиморфизмнеразрывно связан с наследованием Полиморфизм– возможность замещения методов класса-родителя одноименными методами класса-потомка. Другими словами, - это свойство классов решать сходные по смыслу задачи разными способами. Изменяя алгоритм того или иного метода в потомках класса, программист может придавать этим потомкам отсутствующие у родителя специфические свойства.
Для изменения метода необходимо перекрыть его в потомке, т.е. объявить в потомке одноименный метод и реализовать в нем нужные действия. В результате в -родителе и -потомке будут действовать два одноименных метода, имеющих разную алгоритмическую основу. Способность использования одного и того же метода сообразно своему классу называется полиморфизмом. В зависимости от того, какие действия происходят при вызове, методы делятся на следующие группы: · статические методы; · виртуальные методы; · динамические методы. Пример: Класс 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. Следует обратить внимание, что конструктор базового класса вызывается в этом случае как процедура, а не как функция, при этом создания нового объекта не происходит.
Популярное: Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе... Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (1027)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |