- •Объектно-ориентированное программирование
- •Объектно - ориентированное программирование, достоинства ооп. Принцип действия программ управляемых событиями.
- •Основные понятия
- •События
- •События в Delphi
- •Модульное программирование.
- •Нисходящее программирование.
- •Структурное программирование.
- •Понятия объекта, класса объектов.
- •Основные понятия объектно-ориентированного программирования: инкапсуляция, наследование и полиморфизм.
- •Данные типа класс, объявление класса, объекты.
- •Данные типа запись, оператор присоединения, правила использования.
- •Методы объекта и их реализация с помощью процедур и функций..
- •Конструкторы и деструкторы.
- •Палитра компонентов. Окно Формы. Инспектор объектов. Окно редактора кода (Среда delphi).
- •Файл проекта. Модуль формы. Файл ресурсов. Файл параметров проекта. Модули. Связь между файлами проекта. (Среда delphi).
- •Визуальные компоненты. Свойства компонентов, динамическое изменение свойств. События и делегирование.
- •Компоненты ввода-вывода и редактирования при разработке приложений.
- •Меню. Создание главного и контекстного меню. Создание приложений с использованием меню.
- •Данные строкового типа. Стандартные подпрограммы для строкового типа.
- •Иерархия объектов. Характеристики объектов. Абстрактный класс. Визуальные компоненты.
- •Создание списков и таблиц. Кнопочные компоненты, переключатели Формы. Модальные формы sdi и mdi приложения.
- •Использование файла ресурсов.
- •Обработка исключительных ситуаций. Стандартные классы исключений.
- •Способы хранения и обработки данных. Связанные списки Использование строковых массивов.
- •Потоки.
- •Процедуры и функции для преобразования данных.
- •Компонент Memo, назначение, правила использования, основные свойства компонента. Ввод и вывод числовых данных с помощью компонента Memo.
- •События. Переменные и их типы.
- •Константы, выражения и функции. Перегрузка функций.
- •Динамические данные. Указатели. Ссылочный тип. Динамические массивы.
- •Организация ссылок на ресурсы Internet, связей между компьютерами.
- •Объявления переменных. Встраиваемые функции.
- •Интерфейсы и реализация.
- •Свойство Canvas. Назначение, свойства объекта Canvas.
- •Основные методы класса Tcanvas для программного построения изображений.
- •Построение изображений в delphi: компоненты Bevel, Shape, назначение, свойства.
- •Создание изображений в Delphi: компонент Image, назначение, свойства.
- •Данные типа файл, типы файлов, объявление файловых переменных. Действия с файлами, связь с внешним файлом.
- •Библиотека dll, назначение, структура библиотеки, правила записи. Использование подпрограмм из dll библиотеки в проекте Delphi.
- •Окна для вывода сообщений (MessageDlg), назначение, принципы использования.
- •Внедрение объектов. Анимация, мультимедиа. Подпрограммы.
- •Ввод и вывод файлов в delphi. Процедуры открытия файлов для чтения, записи, добавления. Закрытие файлов. Текстовые файлы, назначение, правила использования.
Интерфейсы и реализация.
Интерфейс (от лат. inter — между и лат. face — поверхность) — это семантическая и синтаксическая конструкция в коде программы, используемая для специфицирования услуг, предоставляемых классом или компонентом. Интерфейс определяет границу взаимодействия между классами или компонентами, специфицируя определенную абстракцию, которую осуществляет реализующая сторона. В отличие от многих других видов интерфейсов, интерфейс в ООП является строго формализованным элементом объектно-ориентированного языка и, в качестве семантической конструкции, широко используется кодом программы.
Реализация методов интерфейса. Класс, который реализует интерфейс, нужен, чтобы обеспечить реализацией каждый метод, объявленный в интерфейсе. Реализация может быть обеспечена или явным объявлением или в соответствии с наследованием от предка класса.
Вариантов реализаций здесь несколько:
- Запрет. В одном классе просто запрещается реализовывать несколько интерфейсов, имеющих методы с одинаковыми сигнатурами.
- Явное разрешение неоднозначности. Вариантом этого решения является явное переименование для совпадающих по именам наследуемых или реализуемых методов
- Общая реализация одноимённых методов. Хорошо подходит для случаев, когда одноимённые методы разных интерфейсов идентичны по предполагаемой функциональности.
В Delphi интерфейсы были введены для поддержки COM технологии фирмы Microsoft.
Интерфейсы в Delphi напоминают классы. Как все классы являются наследниками класса TObject, так и все интерфейсы происходят от интерфейса IUnknown, соответствующего стандартному одноимённому COM-интерфейсу.
Пример объявления интерфейса:
IMyInterface = interface
procedure DoSomething;
end;
Для того, чтобы объявить о реализации интерфейсов, в описании класса необходимо указать их имена в скобках после ключевого слова class, после имени класса-предка. Так как интерфейс — это контракт, который нужно выполнить, программа не компилируется пока в реализующем классе не будет реализована procedure DoSomething;
Вышеупомянутая ориентированность интерфейсов Delphi на технологию COM привела к некоторым неудобствам. Дело в том, что интерфейс IUnknown (от которого наследуются все остальные интерфейсы) уже содержит три метода: QueryInterface,_AddRef, _Release, следовательно, любой класс, реализующий любой интерфейс, обязан реализовать эти методы, даже если интерфейс и класс не имеют никакого отношения к COM.
Пример класса, реализующего интерфейс
TMyClass = class(TMyParentClass, IMyInterface)
procedure DoSomething;
function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
function _AddRef: Integer; stdcall;
function _Release: Integer; stdcall;
end;
Программист должен правильно реализовать методы QueryInterface,_AddRef, _Release. Чтобы избавиться от необходимости писать стандартные методы, предусмотрен библиотечный класс TInterfacedObject — он реализует три вышеупомянутых метода и любой класс, наследуемый от него и его потомков, получает эту реализацию:
Пример класса — наследника TInterfacedObject
TMyClass = class(TInterfacedObject, IMyInterface)
procedure DoSomething;
end;
Недостатком такого решения является ограничение на структуру дерева классов: невозможно унаследовать класс, реализующий интерфейс, от какого-либо другого своего класса.