TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

Описания методов 

             Описание метода внутри объектного типа соответствует  опере-
        жающему  описанию  (forward) этого метода.  Таким образом,  метод
        должен быть реализован где-нибудь после описания объектного  типа
        и внутри той же самой области действия метода путем определяющего
        описания.

             Для процедурных и функциональных методов определяющее описа-
        ния  имеет форму обычного описания процедуры или функции,  за тем
        исключением,  что в этом случае идентификатор процедуры или функ-
        ции рассматривается как идентификатор метода.

             Для методов конструкторов и деструкторов определяющее описа-
        ний принимает форму описания процедурного метода, за тем исключе-
        нием,  что  зарезервированное слово procedure заменяется на заре-
        зервированное слово constructor или destructor. Определяющее опи-
        сание  метода может повторять (но не обязательно) список формаль-
        ных параметров заголовка метода в объектном типе.  В этом  случае
        заголовок  метода должен в точности повторять заголовок в объект-
        ном типе в порядке, типах и именах параметров и в типе возвращае-
        мого функцией результата, если метод является функцией.

             В определяющем  описании  метода всегда присутствует неявный
        параметр с идентификатором Self,  соответствующий формальному па-
        раметру-переменной, обладающему объектным типом. Внутри блока ме-
        тода Self представляет экземпляр,  компонент метода которого  был
        указан  для  активизации метода.  Таким образом,  любые изменения
        значений полей Self отражаются на экземпляре.

             Область действия идентификатора компонента  объектного  типа
        распространяется  на  блоки  процедур,  функций,  конструкторов и
        деструктора,  которые реализуют методы данного  объектного  типа.
        Эффект  получается тот же,  как если бы в начало блока метода был
        вставлен оператор with в следующей форме:

             with Self do
             begin
              ...
             end;

             Исходя из этих соображений, написание идентификаторов компо-
        нентов, формальных параметров метода, Self и любого идентификато-
        ра,  введенного в исполняемую часть метода,  должно быть уникаль-
        ным.

             Ниже приводятся несколько примеров реализаций методов:

             procedure Rect.Intersect(var R: Rect);
             begin
                if A.X < R.A.X then A.X := R.A.X;
                if A.X < R.A.Y then A.Y := R.A.Y;

                if B.X > R.B.X then B.X := R.B.X;
                if B.Y < R.B.Y then B.Y := R.B.Y;
                if (A.X >= B.X) or (A.Y >= B.Y) then Init (0, 0, 0, 0);
             end;

             procedure Field.Display;
             begin
                GotoXY(X, Y);
                Write(Name^, ' ', GetStr);
             end;

             function NumField.PutStr(S: string): boolean;
             var
                E: integer;
             begin
                Val(S, Value, E);
                PutStr := (E = 0) and (Value >= Min) and (Value <= Max);
             end;

Содержание

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz