- •3. Основные проектные операции Delphi. Файлы, генерируемые системой Delphi. Взаимосвязь файлов на этапе проектирования и выполнения программы.
- •4.Модуль. Структура модулей. Интерфейсная часть. Раздел реализации. Компиляция модулей. Ссылки модулей. Области видимости идентификаторов.
- •5. Основные элементы языка Object Pascal. Константы и константные выражения. Переменные.
- •Зарезервированные слова языка Паскаль
- •6. Процедуры и функции. Параметры, механизмы их передачи.
- •7. Операторы Object Pascal
- •8.Динамическое распределение памяти в Object Pascal. Указатели.
- •9.Типы данных Object Pascal. Классификация типов ObjectPascal. Приведение типов.
- •10.Порядковые типы данных. Целые типы данных. Действительные типы данных. Булевы типы данных. Символьные типы данных.
- •11. Перечислимые типы. Ограниченные типы. Типы данных, специфичные для Windows.
- •12. Строки. Традиционные строки Pascal. Длинные строки Delphi.
- •Val(st: string; X: числовая переменная; var code: integer)
- •13.Массивы. Статические массивы. Операции с массивами, передача массивов как параметров. Динамические массивы.
- •14. Множества. Записи.
- •15. Файлы. Типы файлов.
- •16 Тип variant. Массивы типа Variant.
- •Теоретические положения объектно-ориентированного программирования. История, основные принципы ооп.
- •Принцип инкапсуляции в ооп. Принцип наследования в ооп.
- •Понятие полиморфизма в ооп. Языки ооп. Объектно-ориентированный анализ и проектирование.
- •Классы. Объявление классов. Реализация принципа инкапсуляции в Object Pascal. Поля. Директивы private, protected и public. Инкапсуляция и формы. Свойства.
- •21.Понятие объекта и экземпляра объекта в Object Pascal.
- •22.Конструкторы и деструкторы. Ключевое слово self.
- •23.Методы и их наследование. Статические методы.
- •25. Абстрактные методы.
- •33. Общие свойства компонентов: положение, размеры и оформление компонент.
- •35.События клавиатуры. Фокус ввода.
- •36. Механизм перетаскивания Drag&Drop, механизм причаливания Drag&Dock.
- •39. Решение проблемы утечки ресурсов с использованием механизма исключений.
- •42. Класс tList.
- •44.Класс tStream и его потомки – потоки данных.
- •45. Глобальный объект Application.
- •47. Глобальный объект Printer.
Классы. Объявление классов. Реализация принципа инкапсуляции в Object Pascal. Поля. Директивы private, protected и public. Инкапсуляция и формы. Свойства.
Класс-это пользовательский тип данных, который может иметь в своём составе поля, методы, св-ва и события. Класс д.б. объявлен до того как будет объявлена хотя бы одна переменная класса, называемая объектом.
При описании классов следует учитывать следующее.
Класс описывается в разделе описания типов, обычно расположенном в разделе модуля interface. Если класс используется только внутри данного модуля, его описание может располагаться в разделе описания типов раздела модуля implementation. Класс не может быть описан внутри процедуры и функции.
Имя класса - это любой доступный идентификатор.
Синтаксис объявления полей класса схож с объявлением переменных или полей в записях.
Синтаксис объявления методов в простейшем случае не отличается от объявления процедур и функций.
Доступ к объявляемым элементам класса определяется тем, в каком разделе они объявлены (public, published, protected, private), что является одним из механизмов реализации принципа инкапсуляции.
Класс наследует поля, методы, свойства и события от своих предков. Имя класса родителя указывается в скобках после ключевого слова class.
Разделы описания класса private, protected и public
Хороший стиль программирования требует, чтобы данные в классах были скрыты или инкапсулированы. Концепция инкапсуляции очень проста: нужно просто думать о классе как о «черном ящике» с очень маленькой видимой частью. Видимая часть, которая называется интерфейсом класса, позволяет остальным частям программы получать доступ к объектам данного класса. Однако реализация объекта должна быть скрыта от пользователя.
Object Pascal заимствовал из классического ООП три спецификатора доступа:
private - определяет поля и методы класса, которые недоступны вне модуля, в котором определен класс.
public - определяет поля и методы, к которым может обращаться любая часть программы;
protected - определяет частично доступные поля и методы, доступ к которым может получить данный класс и все его потомки.
Дополнительный спецификатор доступа published определяет такие же права доступа к эл-там класса, как public и предназначен для облегчения интеграции пользовательских программ в среду обработки Delphi.
Свойства
Одной из ключевых целей инкапсуляции является уменьшение числа глобальных переменных, поскольку использование глобальных переменных затрудняет отладку и снижает надежность программы.
Свойство не хранит данных, свойство класса - это специальная конструкция языка Object Pascal, которая определяет, каким образом будет осуществляться доступ к защищенным данным класса. Данные, в конечном счете, всегда хранятся только в полях класса. Свойство класса объявляется оператором вида: property <имя свойства»: <тип>
read <иия поля или метода чтения> write <имя поля или метода записи> <директивы эапоминания>;
Свойство может быть векторным. В этом случае синтаксис его объявления:
property AButtons [Index: Integer]: TButton read GetButton write SetButton;
Для векторного свойства необходимо описать не только тип элементов массива, но также имя и тип индекса. После ключевых слов read и write в этом случае должны стоять имена методов - использование здесь полей типа массив недопустимо. Метод, читающий значение векторного свойства, должен быть описан как функция, возвращающая значение того же типа, что и элементы свойства, и имеющая единственный параметр того же типа и с тем же именем, что и индекс свойства:
function GetButton (Index: Integer):TButton;
Если у объекта есть векторное свойство с директивой default, то при обращении к его элементам идентификатор свойства можно не упоминать, а ставить индекс в квадратных скобках сразу после имени объекта.
Поля целесообразно объявлять в разделе private, в редких случаях их можно помещать в раздел protected - защищенном разделе класса, чтобы возможные потомки класса имели к ним доступ. Доступ должен осуществляться через свойства, определяющие методы чтения и, при необходимости, записи полей.