Кент Рейсдорф. BORLAND C++BUILDER. Раздел 1

Кент Рейсдорф. BORLAND C++BUILDER. Страница 85

В этом примере this используется в конструкторе (для установки свойства Owner кнопки, об этом я буду рассказывать на восьмой день, «Компоненты VCL»), а также присваивается свойству Parent вновь создаваемой кнопки. При создании приложений C++Builder вы будете использовать указатель this в основном таким образом.

Начав работать с VCL, вы быстро поймете, когда в приложениях C++Builder требуется использовать this.

Один пример

Сейчас самое время привести пример использования классов. Последую­щие листинги содержат программу, в которую включены классы. Эта про­грамма позволяет вам побыть в роли авиадиспетчера, выдавая команды трем самолетам. Листинг 4.1 — это заголовочный файл для класса Airplane, лис­тинг 4.2 содержит исходный код для класса Airplane, а листинг 4.3 — основную программу.

Листинг 4.1. AIRPLANE.H



Листинг 4.2. (продолжение)


Листинг 4.3. AIRPORT.CPP


Листинг 4.3. (продолжение)


Давайте начнем с заголовочного файла из листинга 4.1. Прежде всего, обратите внимание на директивы #define. Они устанавливают соот­ветствие между двумя текстовыми строками. Во время компиляции происходит замена первой строки на вторую. #define используется здесь потому, что гораздо легче запомнить строку текста, чем номер. Что из приве­денного ниже вы предпочтете?

По традиции для записи имен констант, определенных с помощью #de- fine, используются буквы верхнего регистра, но вы можете смешивать про­извольным образом прописные и строчные буквы. Я предпочитаю использо­вать только верхний регистр, поскольку это позволяет с первого взгляда отличать константу от переменной.

Следующее, на что нужно обратить внимание в заголовочном файле — это использование подставляемых функций. Эти функции настолько малы, что имеет смысл сделать их подставляемыми. Вы могли также заметить, что класс Airplane имеет одну перегруженную функцию с именем GetStatusQ. При вызове с аргументом в виде символьного массива она возвращает строку состояния, а при вызове без аргументов — значение переменной status. За­метьте, что из всех членов-данных лишь один является открытым. Доступ к остальным членам возможен только через открытые функции. Например, вы можете изменить скорость, высоту и курс самолета, только выдав ему соответствующую команду. Аналогично этому, авиадиспетчер не может фи­зически изменить направление полета самолета. Максимум, что он может сделать — это дать указание пилоту изменить курс.

Web-дизайн (с) 2010 All rights reserved