Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Описание класса. Свойства и методы



Описание классов разделено на две части — интерфейсную («заголовочную») и описательную. В интерфейсной части располагается заголовок класса, в котором указываются название класса, идентифицирующее его в программе, а также описания свойств и заголовков методов. В описательной части располагается программный код (реализация) методов, заголовки которых указаны в интерфейсной части описания класса.

Интерфейсная часть описания класса располагается в разделах описания типов данных модулей и основных частей программ. Выглядит она следующим образом:

Туре

<Имя класса> = Class {Заголовок описания}

<Имя свойства 1>: <Тип свойства 1>; {Описание свойства 1}

...

<Имя свойства N>: <Тип свойства N>; {Описание свойства N}

<Заголовок метода 1>; {Описание метода 1}

...

<Заголовок метода M>; {Описание метода M}

End;

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

Procedure <Имя класса>.<Имя метода>(<Список параметров>);

или для методов-функций:

Function <Имя класса>.<Имя метода>(<Список параметров>):

<Тип значения>;

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

На этапе выполнения программы такие обращения будут перенаправлены к свойствам объектов, из которых вызываются соответствующие методы.

В листинге 3.1 приведен пример описания модуля, содержащего описание класса.

Листинг 3.1. Описания модуля, содержащего описание класса

Unit UsingClasses;

Interface

Type

TCar = class {Заголовок класса содержит его название TCar}

Mark: AnsiString; {Описание текстового свойства Mark для

хранения марки автомобиля}

EngineVolume: Double; {Описание вещественного свойства для

хранения объема двигателя}

Fuel: Double; {Описание вещественного свойства для хранения

объема топлива}

Function StartEngine: Boolean;

{Заголовок функции-метода "Запустить двигатель"}

Procedure StopEngine;

{Заголовок процедуры-метода "Остановить двигатель"}

Procedure AddFuel(NewFuel: Double);

{Заголовок процедуры-метода "Заправить топливом"}

Implementation

Function TCar.StartEngine: Boolean;

Begin {Описание метода StartEngine. В качестве }

Result:= (Fuel>0); {результата возвращается значение }

end; {логического выражения Fuel>0 }

Function TCar.StopEngine:

Begin {Описание метода StopEngine, не выполняющего}

end; {никаких действий}

Procedure AddFuel(NewFuel: Double); {Описание метода AddFuel}

begin

Fuel:= Fuel + NewFuel; {Увеличение значения свойства Fuel на

величину, переданную в качестве параметра NewFuel при

вызове метода}

end;

End. {Окончание модуля}

Обратим внимание на использование свойства Fuel в методе AddFuel. Метод AddFuel, который является частью описания класса TCar, обращается к данному свойству по имени, хотя на этапе создания класса и неизвестно, какому именно экземпляру будет принадлежать изменяемое свойство. Однако точно известно, что каждый экземпляр обладает свойством Fuel, причем объект, из которого вызван метод AddFuel, также может быть определен системой. При вызове метода AddFuel какого-либо экземпляра класса TCar в качестве изменяемого свойства Fuel автоматически будет выбрано то, которое принадлежит этому же экземпляру.

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





Дата публикования: 2014-11-02; Прочитано: 432 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...