- •1. Новые концепции ооп в языке Oblect Pascal
- •2. Объектно-ориентированный подход в программировании
- •Основные понятия
- •3. Понятие класса и объекта
- •4. Поля, методы и свойства объекта
- •5. Ключевое слово Self, примеры использования
- •6. Перегруженные методы
- •7. Создание и удаление объектов
- •8. Инкапсуляция
- •9. Инкапсуляция и модули
- •10. Директивы видимости
- •11. Инкапсуляция при помощи свойств
- •12. Свойства-массивы
- •13. Индексированные свойства
- •14. Свойства и иерархия классов
- •15. Конструкторы, перегрузка конструкторов, 16. Деструкторы
- •17. Ссылочная модель объектов Delphi
- •18. Наследование
- •19. Совместимость типов
- •20. Полиморфизм и позднее связывание
- •21. Виртуальные, динамические методы
- •22. Абстрактные методы
- •23. Бе6зопасное преобразование типов
- •24. Ссылки на класс
- •25. Создание компонентов при помощи ссылок на класс
- •26. Интерфейсы
- •27. Технические приемы, связанные с использованием интерфейсов (делегирование, использование директивы implements)
- •28. Исключительные ситуации
- •29. Порядок выполнения программы и блок finally
- •30. Классы исключений
- •31. Исключения и отладка приложений
- •32. Класс tObject, использование методов класса Tobject
- •33. Понятие события
- •34. Обработчики событий. Делегирование в Delphi
- •35. События стандартных визуальных компонент и их использование
13. Индексированные свойства
Индексированные свойства - свойства со спецификатором Index. В этом случае несколько различных свойств, имеющих уникальные имена, используют одни и те же методы чтения и записи для доступа для доступа к разным элементам одного и того же поля – массива. Другими словами происходит автонастройка методов доступа в зависимости от того какое свойство они обслуживают в данный момент.
Unit UIndex;
Interface
TMasks = class
Private
FMasks: array[1..3] of word;
Function GetMask(Index:integer):word;
Procedure SetMask(Index:integer; Value:word);
Public
Property MaskForTask1:word index1 read GetMask write SetMask;
Property MaskForTask2:word index2 read GetMask write SetMask;
Property MaskForTask3:word index3 read GetMask write SetMask;
End;
Р
еализация
методов Get
и Set
Function TMasks.GetMask;
Begin
Result:=FMasks[index];
End;
procedure TMasks.SetMask;
Begin
FMasks[index]:=Value;
End;
….
Begin
myMasks:=TMasks.Create;
with myMasks do
begin
maskForTask1:=10;
maskForTask2:=5;
maskForTask3:= maskForTask1 and maskForTask2;
end;
End;
////Последний оператор SetMask(3, GetMask(1) and GetMask(2) ).
14. Свойства и иерархия классов
Свойство (property), подобно полю, является атрибутом, некоторой характеристикой объекта. Однако, в отличие от поля, которое просто является областью для хранения некоторого данного, свойство ассоциировано со специфическими действиями по чтению и модификации данных свойства. Значения свойств вообще могут не существовать в памяти, например, они могут быть прочитаны из базы данных, вычислены и т.д.
Свойства обеспечивают контроль над доступом к данным и позволяют достичь двух основных положительных эффектов:
· упрощение доступа к полям данных, которые, в соответствии с парадигмами ООП, должны быть закрытыми (private);
· гарантированное выполнение обязательных операций, которые должны быть выполнены при получении значений свойств или их модификации.
//ИЕРАРХИЯ
В основе всего многообразия классов и компонентов, используемых в Delphi, лежат всего лишь пять базовых классов. Они обеспечивают выполнение основных функций любого объекта — будь это стандартный компонент VCL или специализированный объект, выполняющий некоторые операции в приложении.
Благодаря механизму наследования свойств и методов, потомки базовых классов умеют "общаться" друг с другом; работают в среде разработки, взаимодействуя с Палитрой компонентов и Инспектором объектов; распознаются операционной системой как элементы управления и окна.
В основе иерархии классов лежит класс TObject. Он обеспечивает выполнение важнейших функций "жизнедеятельности" любого объекта. Благодаря ему, каждый класс получает в наследство механизмы создания экземпляра объекта и его уничтожения. Кроме этого, класс TObject обеспечивает создание и хранение информации об экземпляре объекта и обслуживание очереди сообщений.
Класс TPersistent происходит непосредственно от класса TObject. Он обеспечивает своих потомков возможностью взаимодействовать с другими объектами и процессами на уровне данных. Его методы позволяют передавать данные в потоки, а также обеспечивают взаимодействие объекта с Инспектором объектов.
Класс TComponent является важнейшим для всех компонентов. Непосредственно от него можно создавать любые невизуальные компоненты. Механизмы, реализованные в классе TComponent, обеспечивают взаимодействие компонента со средой разработки, главным образом с Палитрой компонентов и Инспектором объектов. Благодаря возможностям этого класса, компоненты начинают работать на форме проекта уже на этапе разработки.
Класс TControl происходит от класса TComponent. Его основное назначение — обеспечить функционирование визуальных компонентов. Каждый визуальный компонент, произошедший от TControl, наделяется основными признаками элемента управления. Благодаря этому, каждый визуальный компонент умеет работать с GUI (Graphic User Interface — графический интерфейс пользователя ОС) и отображать себя на экране.
Класс TWinControl расширяет возможности разработчиков по созданию элементов управления. Он наследуется от класса TControl и обеспечивает создание оконных элементов управления.
На основе класса TWinControl создан еще один дополнительный класс — TCustomControl. Он обеспечивает создаваемые на его основе компоненты возможностями по использованию канвы — специального объекта, предназначенного для отображения графики. Класс TCustomControl является общим предком для целой группы классов, обеспечивающих создание различных нестандартных типов оконных (получающих фокус) элементов управления Windows: редакторов, списков и т. д.
Для создания неоконных (не получающих фокус) элементов управления используется класс TGraphicControl, являющийся потомком класса TControl.
В целом иерархия базовых классов обеспечивает полноценную работу разработчиков в Delphi, позволяя проектировать любые типы приложений.
