реферат Простые операторы. Характеристика форм.docx. Лр операторы и выражения Delphi
Скачать 1.3 Mb.
|
Особенности объявления методовХотя по своей сути метод является процедурой или функцией, в объектно-ориентированном программировании в него вкладывается значительно более глубокий смысл. Концепция ООП предполагает возможность класса наследовать методы своего предшественника, а при необходимости и переопределять их поведение. Для обеспечения этой, очень сложной задачи в Delphi методы разделяются на три категории: статические (директива static); динамические (директива virtual); виртуальные (директива dynamic). По умолчанию, любой вновь описанный метод, становится статическим. Такое название метод заслужил из-за того, что во время компиляции статическому методу выдается постоянный адрес, такой способ называется статическим связыванием (static binding). У метода с постоянным адресом есть две особенности: высокая скорость вызова (что не может не радовать) и абсолютная невозможность изменить поведение этого метода в дочерних классах (что является отрицательной стороной статического связывания). Одним словом, объявляя статический метод, мы должны понимать, что наносим удар по полиморфизму (наследник класса утратит возможность переопределить этот метод). В отличие от своего статического собрата виртуальные и динамические методы исповедуют идеи позднего связывания (late binding). Это означает, что адреса таких методов не "высечены в граните", а могут изменяться. Так адреса виртуальных методов класса заносятся в таблицу виртуальных методов этого класса, а адреса динамических методов — в специальный список методов этого класса. Благодаря технологии позднего связывания доступ к виртуальным и динамическим методам осуществляется несколько медленнее, но зато они допускают переопределение своего поведения у классов-потомков. Поля класса и методы классаОдно из правил объектно-ориентированного программирования предполагает, что обращение к полям и методам, описанным в классе, невозможно до тех пор, пока из класса не будет создан объект — экземпляр класса. С точки зрения программы Delphi это означает, что начало работы со свойствами и методами объекта должно предваряться вызовом его конструктора Create(). Однако из правил существуют исключения. В состав класса могут входить особые поля и методы, которые остаются доступными даже в отсутствие экземпляра объекта. Такие поля и методы называют соответственно полями класса (class fields) и методами класса (class methods). По своей сути поле класса представляет собой обычную переменную, для ее объявления следует воспользоваться ключевыми словами class var или просто var. Метод класса представляет собой процедуру или функцию с первым словом в заголовке class, например class procedure или class function. Благодаря полю класса и методу класса мы можем внести очередное усовершенствование класса двигателя TEngine (листинг 3.13). Листинг 3.13. Объявление поля класса и метода класса TEngine TEngine=class private fEnabled :boolean; fAutomobile:TAutomobile; public class var fMax_HorsePower : word; //переменная класса class function GetMax_HorsePower : word; //метод класса ... end; {реализация функции класса} class function TEngine.GetMax_HorsePower: word; begin Result:=fMax_HorsePower; end; Как и утверждалось ранее, для обращения к полям и методам класса совсем не обязательно создавать объект, вполне допустимо воспользоваться строками кода из листинга 3.14. Листинг 3.14. Обращение к полю класса и методу класса TEngine var X:Word; begin with TEngine do begin fMax_HorsePower:=250; X:=GetMax_HorsePower; end; end; |