
- •Обзорная лекция по курсу: «Основы ооп»
- •5 Основные механизмы ооп
- •6 История создания объектно-ориентированных систем программирования
- •7 Определение класса
- •Таким образом, структура модуля, содержащего описание класса, приблизительно выглядит следующим образом:
- •8 Конструкторы и деструкторы
- •9 Наследование в Object Pascal. Правила наследования.
- •10 Реализация событий на уровне языка Object Pascal
- •11 Понятие «исключительная ситуация»
7 Определение класса
Классом в Object Pascal называется структура, похожая на запись, которая может иметь в своем составе переменные, функции и процедуры. Переменные, в зависимости от предназначения, называются полями или свойствами. Процедуры и функции класса называются методами.
Поля объекта аналогичны полям записи. Это – данные, уникальные для каждого созданного в программе экземпляра класса. Поля объекта являются переменными, объявленными внутри класса. Они предназначены для хранения данных во время работы экземпляра класса (объекта). Ограничений на тип полей в классе не предусмотрено.
Методы – это процедуры и функции, описанные внутри класса и предназначенные для операций над его полями и свойствами. При описании структуры класса указываются только заголовки методов (имя процедуры или функции, список передаваемых формальных параметров, тип функции) .
Свойства представляют собой атрибуты, которые составляют индивидуальность объекта и помогают описать его. Например, обычная кнопка в окне приложения обладает такими свойствами, как цвет, размеры, положение. Для экземпляра класса "кнопка" значения этих атрибутов задаются при помощи свойств – специальных переменных, определяемых ключевым словом property.
Формат описания нового класса выглядит следующим образом:
type <имя-класса> = class(<имя-родительского-класса>)
<имя поля данных1>: <тип данных1>;
…
<имя поля данныхN>: <тип данныхN>;
procedure <имя метода 1>(<список параметров>);
function <имя метода 2>(<список параметров>) : <тип функции>;
…
procedure <имя метода L>(<список параметров>);
…
function <имя метода М>(<список параметров>) : <тип функции>;
end;
Имя родителя указывать необязательно, по умолчанию считается, что если имя родителя не указано, то класс непосредственно наследуется класса Tobject.
Чтобы использовать класс в программе, нужно, как минимум, объявить переменную этого типа. Переменная объектного типа называется экземпляром класса, или объектом.
var
<имя экземпляра класса> : <имя класса>;
На втором этапе описываются тела методов внутри раздела реализации модуля (implementation), причем перед именем метода через точку указывается имя класса, а список параметров и тип функции можно опустить.
procedure <имя класса>.<имя метода 1>;
<описание локальных переменных, процедур и функций>;
begin
<операторы>
end;
…
Таким образом, структура модуля, содержащего описание класса, приблизительно выглядит следующим образом:
unit Unit1;
interface
uses
…..
type
<описание класса>; (1)
end;
…
var
<имя экземпляра класса> : <имя класса>;
…
implementation
procedure <имя класса>.<имя метода 1>;
<описание локальных переменных, процедур и функций>; (2)
begin
<операторы>
end;
…
end.
Кроме того, формат описания нового класса (1) включает в себя разделы реализации:
Type <имя объявляемого класса>=class(<имя родителя>)
private <скрытые элементы класса>
protected <защищенные элементы класса>
public <общедоступные элементы класса>
published <опубликованные элементы класса>
automated <элементы, реализующие OLE-механизм>
end;