АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Объект – экземпляр класса

Читайте также:
  1. Count - свойство содержащее количество объектов
  2. I ступень – объектив- центрическая система из 4-10 линз для непосредственного рассмотрения объекта и формирования промежуточного изображения, расположенного перед окуляром.
  3. Obj: TTextReader; // объектная переменная
  4. The Objective Infinitive Construction. Объектный инфинитивный оборот.
  5. V. Результаты объективного осмотра больного.
  6. XIV. Объективность культурной истории
  7. АВАРИИ НА РАДИАЦИОННО-ОПАСНЫХ ОБЪЕКТАХ
  8. АВАРИИ НА ХИМИЧЕСКИ ОПАСНЫХ ОБЪЕКТАХ
  9. Акцизы: налогоплательщики и объекты налогообложения. Особенности определения налоговой базы при перемещении подакцизных товаров через таможенную границу РФ.
  10. Анализ объекта проектирования. Описание компонента РЭС
  11. Анализ производственно-хозяйственной деятельности конкретного объекта исследования.
  12. Анализа реальных экономических объектов.

 

Классы объектов определяются в секции type глобального блока. Описание класса начинается с ключевого слова class и заканчивается ключевым словом end. По форме похоже на обычные записи, но помимо полей данных классы могут содержать объявления пользовательских процедур и функций.

 

Type

TDelimitedReader = class

 

// поля

FileVar: TextFile;

Items: array of string;

 

//заголовки методов

procedure PutItem(Index: Integer; constItem: string);

function GetEndOfFile: Boolean;

procedure SetActive(const _Active: Boolean);

end;

 

Класс содержит поля и методы. Заголовки методов, следующие за списком полей, играют роль упреждающих (forward) описаний.

Класс обычно описывает сущность, моделируемую в программе.

 

Объявление ссылки на объект класса:

 

var Reader: TDelimitedReader;

 

Объекты в Delphi – динамические данные, т.е. распределяются в динамической памяти. Поэтому переменная Reader — это просто ссылка на экземпляр (объект в памяти), которого физически еще не существует.

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

 

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

 

type

TReadersList = class; // упреждающее объявление классаTReadersList

TDelimitedReader = class

Owner: TReadersList;

...

end;

TReadersList = class

Readers: array of TDelimitedReader;

...

end;

 

Классы удобно помещать в модули: описание помещается в секцию interface, а код методов — в секцию implementation. Создавая модули классов, нужно придерживаться следующих правил:

– все классы, предназначенные для использования за пределами модуля, следует определять в секции interface;

– описание классов, предназначенных для употребления внутри модуля, следует располагать в секции implementation;

– если модуль B использует модуль A, то в модуле B можно определять классы, порожденные от классов модуля A.

Понятие метода

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

procedure TDelimitedReader.SetActive(const _Active: Boolean);

begin

if _Active then

Reset(FileVar)

else

CloseFile(FileVar);

end;

 

Внутри методов обращения к полям и другим методам выполняются как к обычным переменным и подпрограммам без уточнения экземпляра объекта. Такое упрощение достигается путем использования в пределах метода псевдопеременной Self (стандартный идентификатор). Физически Self – дополнительный неявный параметр, передаваемый в метод при вызове. Он указывает экземпляр объекта, к которому данный метод применяется.


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.)