Визуальное/Объектно-ориентированное программирование (ООП) – это методика разработки программ, в основе которой лежит понятие объекта, как некоторой структуры, описывающей объект реального мира, его поведение. Задача, решаемая с использованием методики ООП, описывается в терминах объектов и операций над ними, а программа при таком подходе представляет собой набор объектов и связей между ними.
Визуальное программирование оперирует такими понятиями как классы. Классы – это специальные блоки кода, предназначенные для выполнения тех или иных часто встречающихся задач. Объекты являются конкретными реализациями (экземплярами) классов.
В основе классов принято выделять 3 фундаментальных принципа:
1. Инкапсуляция — это механизм связывающий воедино код и данные, которыми он манипулирует, а также ограждающие их от внешнего воздействия и неправильного применения. Т.е. любой класс должен рассматриваться как чёрный ящик — пользователь класса должен видеть и использовать только интерфейс (от английского interface — внешнее лицо, т. е. список декларируемых свойств и методов) класса и не вникать в его внутреннюю реализацию. Этот принцип (теоретически) позволяет минимизировать число связей между классами и, соответственно, упростить независимую реализацию и модификацию классов.
В Delphi для создания скрытых полей или методов, их достаточно объявить в секции private.
TMyClass = class
private
FMyField: Integer;
procedure SetMyField(const Value: Integer);
function GetMyField: Integer;
protected
public
property MyField: Integer read GetMyField write SetMyField;
end;
Для создания интерфейса доступа к скрытым полям в Delphi введены свойства.
2. Полиморфизм является свойством, которое позволяет нескольким объектам имеющим общие характеристики получать доступ к одному интерфейсу и реализовывать имеющиеся в нем методы. Классы-потомки могут изменять реализацию метода класса-предка, сохраняя его сигнатуру (таким образом, сохраняя неизменным интерфейс класса-предка). Это позволяет обрабатывать объекты классов-потомков как однотипные объекты, не смотря на то, что реализация методов у них может различаться.
3. Наследованием называется возможность порождать один класс от другого с сохранением всех свойств и методов класса-предка (иногда его называют суперклассом) и добавляя, при необходимости, новые свойства и методы. Наследование призвано отобразить такое свойство реального мира, как иерархичность.
Простое наследование
Класс, от которого произошло наследование, называется базовым (base class) или родительским (parent class). Классы, которые произошли от базового, называются потомками, наследниками или производными классами (англ. derived class).
Множественное наследование
При множественном наследовании у класса может быть более одного предка. В этом случае класс наследует методы всех предков. Достоинства такого подхода в большей гибкости.
В Delphi для использования механизма наследования необходимо, в объявлении класса, справа от слова class указать класс предок:
Предок:
TAncestor = class
private
protected
public
[Виртуальная процедура.]
procedure VirtualProcedure; virtual; abstract;
procedure StaticProcedure;
end;
Наследник:
TDescendant = class(TAncestor)
private
protected
public
[Перекрытие виртуальной процедуры.]
procedure VirtualProcedure; override;
procedure StaticProcedure;
end;
В Delphi создать новый класс от некоторого класса-родителя можно следующим образом:
type tStudent = class(tPerson);