Классы
и исключения
Данная глава расскажет
вам, как использовать классы в среде Kylix. Кроме того, вы узнаете, что такое
исключительная ситуация и как можно самостоятельно обрабатывать исключительные
ситуации. Вы научитесь создавать обработчики исключений, а также генерировать
собственные исключения.
Работа с классами в
Kylix
Напомним основные положения
о классах, которые были достаточно подробно рассмотрены в пятой главе книги.
Класс — это абстрактное
определение, инкапсулирующее понятия: свойства, методы, события и члены класса
(например, локальные переменные, объявленные внутри класса).
Когда вы создаете экземпляр
класса — он называется объектом. Термин "объект" часто
в документации по Kylix используется более свободно, и, где различие между объектом
и классом, не важно. Этот термин может обозначать класс, от которого данный
объект произошел.
Часто программисту приходится
создавать собственные классы для решения каких-либо задач, не предусмотренных
стандартными классами CLX Kylix. Класс, который вы создаете, может иметь в качестве
предка основной класс TObject
или его потомок. Объявление нового
класса содержит три допустимые секции, обеспечивающие доступ к полям и методам
класса:
ТyреTClassName = Class(TObject)
public
{public fields}
{public methods} protected
{protected fields}
{protected methods} private
{private fields}
{private methods} end;
Kylix позволяет вам объявлять
самостоятельно нужные классы для использования их в своих приложениях. Некоторые
версии Kylix включают в себя специальные возможности, которые называются завершение
класса. Данные возможности позволяют упростить работу программиста по созданию
нового класса. Упрощение происходит благодаря автоматическому генерированию
скелета кода для членов класса, который вы определяете.
Ниже перечислены шаги,
позволяющие вам объявить новый класс.
(interface)
секцию uses
и type
.
type
напишите объявление нового класса. Здесь вам необходимо объявить все внутренние
переменные класса, свойства, методы и события класса. Например,
TMyClass = class;
{Новый класс является потомком класса TObject} public
...
private
...
published{Класс
является потомком TPersistent или его потомков}
. . .
Примечание
Вы должны включить в описание класса секциюpublished
только в том случае, если ваш класс является потомком классаTPersistent
или его потомков.
Если вы хотите создать свой
класс как потомка определенного класса, то вам необходимо указать это в объявлении
класса:
TMyClass
= class(TParentClass); {Новый класс является потомком класса TParentClass}
Например,
type TMyButton =
class(TButton)
property Size: Integer;
procedure DoSomething;
end;
В этом примере мы определяем
класс TMyButton
, который является потомком класса TButton
и будет иметь все свойства, события и методы своего родителя, а также дополнительное
свойство Size
целого типа и процедуру DoSomething
.
Если ваша версия Kylix
включает завершение класса, выполните следующие действия: поместите курсор внутри
определения методов класса в секции интерфейса (interface
) и нажмите
комбинацию клавиш <Ctrl>+ +<Shift>+<C> или щелкните правой
кнопкой мыши и в выпадающем меню выберите пункт Complete Class at Cursor
(Завершить класс в пределах курсора). Kylix завершит объявление каждого
незавершенного свойства и создаст необходимые пустые методы в секции реализации
(implementation
). Если же ваша версия Kylix не поддерживает завершение
классов, вам придется делать все самостоятельно.
В приведенном ниже примере,
если у вас есть завершение класса, Kylix добавит слова read
и write
,
включая все поддерживаемые поля и методы:
type TMyButton =
class (TButton)
property
Size: Integer read FSize write SetSize;
procedure
DoSomething;
private
FSize:
Integer;
procedure
SetSize(const Value: Integer);
Он также добавит следующий код в секцию реализации модуля:
{ TMyButton }
procedure
TMyButton.DoSomething;
begin
end
;
procedure
TMyButton.SetSize(const Value: Integer);
begin
FSize
:= Value;
end;
Теперь
заполните методы. Для примера, если вы хотите, чтобы кнопка издавала звуковой
сигнал каждый раз при вызове метода DoSomething
, добавьте команду
Bеер
между словами begin
и end
данного
метода в разделе реализации:
{
TMyButton }
procedure
TMyButton.DoSomething;
begin
Beep;
end;
procedure
TMyButton.SetSize(const Value: Integer);
begin
FSize
:= Value;
DoSomething;
end;
Примечание
Наша
кнопка будет также издавать звуковой сигнал в случае, если вы вызовете метод
SetSize
для изменения ее размера.