Облака / Clouds
    Go to Copy.com
    Copy.com
    The bast cloud service
    Get 20 GB free!!!
    Support WebDav.
    Show more >>

    Go to Dropbox.com
    Dropbox.com
    time-tested cloud storage
    Support WebDav.
Все бесплатно
    Все ссылки на файлы, расположенные на страницах сайта, добавлены пользователями и доступны для бесплатного скачивания. За содержание этих файлов администрация сайта ответственности не несет.



Вопросы
  Как в Memo прокрутить текст
   Категория: Компоненты
  Получить список запущенных приложений
   Категория: Приложение
  Пароль на ADO
   Категория: Базы данных
  Компонент MainMenu
   Категория: Компоненты
  Округление времени до 5 мин
   Категория: Базы данных
  Что такое хук (hook)?
   Категория: Приложение
  Определение размера файла
   Категория: Файловая система

Delphi - Справочник: Class

ABCDEFGHIJKLMNOPQRSTUVWXYZ

  << Вернуться  

 Class
1 type Name = {packed} class
Definitions...
{class function|procedure ...}
end;

2 type Name = class(BaseClass);

3 type Name = class;

4 type Name = {packed} class(BaseClass)
Class definition...
end;

5 type Name = {packed} class(BaseClass {,Interfaces})
Class definition...
end;

6 type MetaClassName = class of class type;
Ключевое слово (Unit )
Начинает объявление типа объектного класса
Описание:
Ключевое слово Class это центральная часть Объектно-ориентированного кода.

Это определение содержит так называемые 'члены' - данные и методы (подпрограммы). Когда объект класса создан, он становится автономным элементом - вы можете обратиться к данным и методам объекта независимо от любого другого объекта. Оно похоже на запись Delphi, но с активными компонентами - методами.

Эти элементы определены в определении типов класса. Элементы метода осуществлены в разделе implementation модуля.

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

type
className = class(BaseClass)
private
// Определения данных/методов локальные для этого модуля
protected
// Определения данных/методов, локальных для этого класса + потомки
public
// Определения данных/методов пригодных для использования всеми объектами этого класса
published
// Внешне общественные определения
end;


Параметры можно передать при создании объектного образца класса. Они передаются методу Constructor класса. Слово Constructor используется вместо функции или метода. Вы можете иметь множество конструкторов для различных наборов параметра. Они снабжены ключевым словом overload; после конца определения конструктора.

Обычно, название метода конструктора - Create.

См. код для примера.

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

Обычно, название метода деструктора - Destroy.

Есть множество использований слова Class:

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

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

2. Определение класса базируются на указанном классе, но без местных добавлений или изменений. Вы имеете новый класс, который действует тождественно к классу BaseClass

3. Ускоренное объявление класса. Оно позволяет всем классам в модуле быть перечисленными в начале раздела type. Так что это вопрос удобства, а не чего-нибудь еще.

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

5. Класс может содержать выполнение внешне предопределенных интерфейсов.

6. Ссылка metaclass позволяет переменной быть использованной для указания класса, а не объекта.
Пример кода: Модуль с 2 определениями класса и кодом, который использует оба класса

// Полный код Модуля. // ----------------------------------------------------------- // Вы должны поместить этот код в модуль с именем Unit1 и с формой // названную Form1, которая имеет событие OnCreate названное FormCreate. unit Unit1; interface uses SysUtils, Forms, Dialogs; type // Определение классов в самом начале этого Модуля для ясности TForm1 = Class; // Это опережающее определение класса TFruit = Class(TObject) // Это фактическое определение класса : // Внутреннее определение полей класса - доступны только в этом модуле private isRound : Boolean; length : single; width : single; diameter : single; // Поля и методы, доступные только для этого класса и потомков protected // Внешне доступные поля и методы public // 2 конструктора - один для круглого фрукта, другой для удлинённого фрукта (fruit) constructor Create(diameter : single); overload; constructor Create(length : single; width : single); overload; // Внешне доступные и видимые поля и методы published // Обратите внимание, что свойства должны использовать разные имена для местных определений property round : Boolean read isRound; property len : single read length; property wide : single read width; property diam : single read diameter; end; // Конец определения класса TFruit // Фактически, класс TForm1 теперь определен TForm1 = Class(TForm) procedure FormCreate(Sender: TObject); procedure ShowFruit(fruit : TFruit); private // Нет локальных данных public // Используются только публичные определения предков класса TForm end; var Form1: TForm1; implementation {$R *.dfm} // Создание круглого объекта fruit constructor TFruit.Create(diameter: single); begin // Указываем, что мы имеем круглый fruit, и установка его размера isRound := true; self.diameter := diameter; end; // Создание удлинённого объекта fruit constructor TFruit.Create(length, width: single); begin // Указываем, что мы имеем удлинённый fruit, и установка его размера isRound := false; self.length := length; self.width := width; end; // Объект формы - действие, предпринимаемое, когда форма создана procedure TForm1.FormCreate(Sender: TObject); var apple, banana : TFruit; begin // Позволяет нам создавать наши fruit объекты apple := TFruit.Create(3.5); banana := TFruit.Create(7.0, 1.75); // Показ подробностей о наших фруктах ShowFruit(apple); ShowFruit(banana); end; // Показ, каковы характеристики нашего плода procedure TForm1.ShowFruit(fruit: TFruit); begin if fruit.round then ShowMessage('Мы имеем круглый фрукт с диаметром = '+ FloatToStr(fruit.diam)) else begin ShowMessage('Мы имеем удлинённый фрукт'); ShowMessage(' его длина = '+FloatToStr(fruit.len)); ShowMessage(' его ширина = '+FloatToStr(fruit.wide)); end; end; end.

Результат:
Мы имеем круглый фрукт с диаметром = 3.5
Мы имеем удлинённый фрукт
его длина = 7
его ширина = 1.75
Примечание:
Дополнительное ключевое слово packed говорит Delphi, чтобы он минимизировал память взятую классом. Это прекращает выравнивать данные относительно 2, 4-или 8-байтовых границ.

  << Вернуться