- •22)Windows- приложение
- •23.Проект приложения в Delphi.
- •24.Приложение в Delphi.
- •25.Структура программы проекта.
- •26.Структура модуля.
- •27. Модули в Delphi.
- •29.Класс как тип данных.
- •31. Базовый класс всех объектов – Tobject.
- •32. Объектные переменные.
- •37.Наследование.
- •38.Статические методы.
- •39.Виртуальные методы.
- •40.Другие виды методов.
- •41.Конструктор и деструктор, указатели на объекты.
- •42. Полиморфные объекты.
- •44.Делегирование обработчиков.
- •46. Исключительные ситуации.
- •49.Граф.Определения.
- •50. Визуализация графа.
- •51.Алгоритмы в графах.
- •52.Построение минимального остовного дерева в графе.
32. Объектные переменные.
Создание объектных переменных.
• Когда вы используете один из классов Delphi или свой собственный, вы должны создать его экземпляр. Что это
значит: вы должны распределить память и установить на
распределенный блок памяти указатель. В некоторых языках
это выглядит безобразно, в Delphi же это выглядит так...
MyVar := TMyClass.Create;
• Это действительно просто, поскольку метод конструктора Create класса TMyClass является классовым методом - он
работает в классе, а не в отдельном объекте. Когда вы вызываете конструктор, Delphi распределяет память и
возвращает значение указателя.
• Объявление объектной переменной
некоторого типа.
• Создание объекта вызовом метода
конструктора класса.
• Использование объекта по назначению.
• Освобождение объекта.
Пример реализации класса:
procedure Example;
var
MyObj: TMyClass; // класс, который вы создаете
MyList: TList; // встроенный класс
begin
MyObj := TMyClass.Create;
// теперь MyObj содержит адрес блока памяти, распределенной для
экземпляра вашего класса
MyList := TList.Create;
// Код для работы с MyList
....
здесь что-то делаем с объектом
....
MyList.Free;
// Ресурсы MyList удаляются из кучи
MyObj.Free; // тоже самое для MyObj
end;
33.Основные понятия ООП. 1) Первая особенность типа класс заключается в том, что в
одном типе объединены данные и код для обработки
этих данных. Это свойство класса называется
инкапсуляцией.
2) Наследование – вторая важная особенность объектных типов. Правила
объявления класса таковы, что любой объявляемый класс -потомок обязательно
должен быть связан с каким-либо другим классом- родителем(кроме класса
TObject). Объявляемый класс –потомок может использовать какие-либо
свойства, поля, методы уже существующих классов.
3) Свойство одного и того же метода вести себя по-разному называется
полиморфизмом ( одно и то же имя метода можно использовать у разных классов объектов).
34.Иерархия классов в Delphi. На первых порах разработчика программ
интересуют не все классы, а компоненты.
Компоненты – неотъемлемая часть
прикладной программы. Они формируют
основу интерфейса пользователя.
Компоненты для разработки интерфейса и
системные компоненты соответственно
называются визуальными и невизуальными. Невизуальные компоненты используются для реализации логической части приложения и функциональных
возможностей системной составляющей.
Визуальные компоненты входят в палитру компонентов и позволяют строить
пользовательский интерфейс приложения.
Delphi имеет большое количество встроенных
классов, которые образуют иерархическое дерево. Иерархию и отдельные элементы классов можно
увидеть с помощью Browse Objects, окно которого вызывается из меню: View-Browse.
Каждый класс обязательно является наследником
другого класса, за исключением TObject. TObject является предком для всех классов. Предком всех
компонент является класс TComponent.
Каждый класс обладает набором своих методов, свойств и полей, да
еще наследует массу подобных элементов. Многие свойства и методы имеют много общего и называются одинаково. Базовые встроенные классы следует рассматривать как библиотеку функций и возможностей,
которые к тому же можно наследовать при разработке собственных
классов.
Класс TObject реализует функции, которые обязательно будут
выполняться в процессе построения любого объекта: 1) Создание экземпляра класса и его уничтожение. Эта операция для размещенных на форме объектов выполняется автоматически.
2) Содержит ряд методов, обеспечивающих представление
информации о себе в потомках. Информация о себе используется
приложением и средой разработки. Основное назначение класса TPersistent ( в переводе означает: устойчивый, постоянный) заключается в возможности выполнения
операции копирования содержимого одного объекта (Source) в
другой (Self).
Self – специальная переменная в объете-приемнике. При этом
используется метод Assign – простым присваиванием содержимое
не копируется, а замещается с уничтожением внутренней
структуры объекта-приемника.
Класс TСomponent используется в качестве основы для создания невизуальных компонентов и реализует основные механизмы, которые обеспечивают функционирование любого компонента.
Вслед за TСomponent в иерархии классов располагается группа
из трех классов, которые обеспечивают создание различных визуальных компонентов. Визуальные компоненты должны уметь отображать себя на
экране монитора и реагировать на целый ряд новых событий –
реакция на мышь, клавиатуру, движение курсора и т.д. Для этого в
них встроен специальный механизм, обеспечивающий
взаимодействие компонентов с графической подсистемой
операционной среды (GUI). Базовым для всех визуальных компонентов является класс TControl, который инкапсулирует механизмы отображения
компонентов на экране. Новые свойства : Top, Left, Height, Width,
значения свойств задаются в пикселях. Для определения
местоположения компонента используется система координат
рабочей области владельца (Owner – владелец) данного
компонента, например формы. Далее в иерархии классов стоит очень важный визуальный
компонент TWinControl, который обеспечивает использование в
Delphi оконных элементов управления. Главное отличие оконного элемента управления от других элементов – наличие дескриптора окна hWnd. Дескриптор окна – это специальный идентификатор,
присваиваемый операционной системой всем объектам, которые
должны обладать свойствами окна. Если элемент управления имеет дескриптор окна, то он должен уметь выполнять следующие операции:
• Получать и передавать фокус управления во время выполнения
приложения;
• Воспринимать управляющие воздействия от мыши и
клавиатуры;
• Уметь размещать на себе другие элементы управления.
Класс TWinControl предоставляет большой набор свойств, включая
следующие:
• ControlCount - указывает количество дочерних элементов управления.
• Controls - содержит список всех дочерних элементов управления.
• TabOrder - указывает номер элемента управления в табулированном
порядке родительского элемента управления.
35.Класс как объектный тип. Класс позволяет создавать собственные модели поведения объектов. При этом используется, как
правило, иерархические совокупности понятий, с
помощью которых можно представлять решение задачи. Понятие класс позволяет программисту ввести
новый тип, который специфицирует данные,
необходимые для представления объектов этого типа, и множество операций для работы с этими объектами. Класс задает поведение объектов, т.е. как
они создаются, как может осуществляться работа с ними и как они уничтожаются.
36.Инкапсуляция. Класс – основной элемент
программирования в Delphi. Как тип, класс
имеет ряд особенностей. Первая особенность
типа класс заключается в том, что в одном
типе объединены данные и код для
обработки этих данных. Это свойство
называется инкапсуляцией.
Синтаксически класс подобен типу record, в
котором можно выделить следующие
элементы:
• Поля служат для записи данных;
• Методы – процедуры и функции для
обработки полей;
• Свойства – специальные методы, к
которым можно обращаться как к полям.
Тип класс называется объектным типом. Объект представляет
собой реализацию класса. Один и тот же класс может порождать
множество объектов. Однако не существует двух объектов с
одинаковыми значениями.
Объявленные переменные объектных типов физически не
представляют собой экземпляров класса. Они являются просто
ссылками. Объекты создаются только в процессе выполнения
программы. Под объекты необходимо не просто выделить память
– их необходимо построить. Например, при построении формы
используется файл ресурсов. Однако Delphi позволяет трактовать
объект как обычную переменную.
В отличии от других типов class можно объявить только
глобально. Запрещено объявлять классы внутри процедур и функций.
Правила объявления класса таковы, что любой класс обязательно
должен быть связан с каким-либо другим классом (существует одно исключение – класс TObject, являющийся корнем иерархического дерева классов).