Урок 59 - Классы Delphi, (часть 1/5)

  Класс — это тип данных, определяемый пользователем. То, что в Delphi имеется множество предопределенных классов, не противоречит этому определению -ведь разработчики Delphi тоже пользователи Object Pascal.

  Класс должен быть объявлен до того, как будет объявлена хотя бы одна переменная этого класса. Т.е. класс не может объявляться внутри объявления переменной.

  В любом вашем Делфи-приложении вы можете увидеть строки:

type
	TForml = class(TForm)
		Buttonl: TButton;
		procedure ButtonlClick(Sender: TObject);
	end;
var
	Forml: TForml;

  Это объявление класса TForml вашей формы и объявление переменной Forml -объекта этого класса.

  В общем случае синтаксис объявления класса следующий:

Туре
	<имя  класса> = Class(<имя класса - родителя>)
	public    // т.е. доступно всем
		<поля, методы, свойства, события>
	published // т.е. видны в Инспекторе Объекта и изменяемы
		<поля, свойства>
	protected // доступно только  потомкам
		<поля, методы, свойства, события>
	private	// доступно только в этом модуле
		<поля, методы, свойства, события>
	end;

   Имя класса может быть любым допустимым идентификатором. Но принято идентификаторы большинства классов начинать с символа "Т". Имя класса - родителя может не указываться. Тогда предполагается, что данный класс является непосредственным наследником TObject - наиболее общего из предопределенных классов. Таким образом, эквивалентны следующие объявления:

type 
	TMyClass = class
	end;
 и
type 
	TMyClass = class(TObject)
	end;
  В приведенном ранее объявлении класса формы TForml видно, что его родительским классом является класс TForm.

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

  Раздел public (открытый) предназначен для объявлений, которые доступны для внешнего использования. Это открытый интерфейс класса. Раздел published (публикуемый) содержит открытые свойства, которые появляются в процессе проектирования на странице свойств Инспектора Объектов и которые, следовательно, пользователь может устанавливать в процессе проектирования. Раздел private (закрытый), содержит объявления полей, процедур и функций, используемых только внутри данного класса. Раздел protected (защищенный) содержит объявления, доступные только для потомков объявляемого класса. Как и в случае закрытых элементов, можно скрыть детали реализации защищенных элементов от конечного пользователя. Однако в отличие от закрытых, защищенные элементы остаются доступны для программистов, которые захотят производить от этого класса производные объекты, причем не требуется, чтобы производные объекты объявлялись в этом же модуле.

  Объявления полей выглядят так же, как объявления переменных или объявления полей в записях:

<имя поля>: <тип>;


  В приведенном ранее объявлении класса формы вы можете видеть строку

Buttonl: TButton;

  Это объявление объекта (поля) Buttonl типа (класса) TButton.

  Имеется одно очень существенное отличие объявления поля от обычного объявления переменной: в объявлении поля не разрешается его инициализация каким-то значением. Автоматически проводится стандартная инициализация: порядковым типам в качестве начального значения задается 0, указателям — nil, строки задаются пустыми. При необходимости задания других начальных значений используются конструкторы, описанные далее в 4 части.

  Объявления методов в простейшем случае также не отличаются от обычных объявлений процедур и функций.



   В следующем уроке мы узнаем о свойствах классов.

Удачи!
Встретимся в следующем уроке!



  1. DevSergo.ru
    DevSergo.ru a year ago
    Подскажите, если поля и методы объявлены ни в одной из секций (Public, Published, Private, Protected) тогда считается как будто они добавлены в Public, правильно?
Отменить.