InfoCity
InfoCity - виртуальный город компьютерной документации
Реклама на сайте







Размещение сквозной ссылки

 

Теперь давайте взглянем на .h файл, созданный Билдером. Если этого еще не сделано, зайдите в редактор и выберите соответствующую закладку. На экране появится содержимое LED.h (если вы используете C++Builder v1, там не будет макроса PACKAGE):


//-----------------------------------------------------------------
#ifndef LEDH
#define LEDH
//-----------------------------------------------------------------
#include <SysUtils.hpp>
#include <Controls.hpp>
#include <Classes.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
//-----------------------------------------------------------------
class PACKAGE TLED : public TShape
{
private:
protected:
public:
        __fastcall TLED(TComponent* Owner);
__published:
};
//-----------------------------------------------------------------
#endif

Да, не очень-то много. Только множество включений файлов, которые пришлось бы делать вручную. Теперь надо кое-что написать самим в дополнение к скелету, соданному Билдером. Нам будет нужна булева переменная для хранения статуса и специальные переменные для хранения цветов обоих состояний индикатора. Тип bool подойдет для статуса, а для хранения цвета имеется специальный класс (вернее, перечисляемый тип) TColor. Хорошее правило ООП - делать переменные внутри класса скрытыми, чтобы другие программисты имели к ним доступ только через интерфейс класса - это гарантия, что данные не будут испорчены. Поэтому все наши переменные будут в секции private. Наш класс будет выглядеть примерно так (пишем colour, как это принято в Великобритании и Канаде):


private:
	bool FOnOff;
	TColor FOnColour;
	TColor FOffColour;

Префикс F в именах переменных - стандартное соглашение именования членов компонент (позволяет использовать то же имя, только без F, для соотв. свойства (published property)). Теперь, раз у нас есть переменные, нам нужны аксессоры (accessors) - функции, осуществляющие доступ, по-английски "access", к данным класса извне, и мутаторы (mutators) - функции, меняющие значения данных класса, по английски - "mutate", (здесь еще добавлены ключевые слова __published и __property, но об этом позже). Довольно странным может показаться, что эти функции помещены в ту же секцию, что и данные, но это также будет объяснено позже:


private:
	bool FOnOff;
	TColor FOnColour;
	TColor FOffColour;
	void __fastcall SetOnOff(const bool Value);
	void __fastcall SetOnColour(const TColor OnColour);
	void __fastcall SetOffColour(const TColor OffColour);

Также существует стандартное соглашение о том, что имена аксессоров начинаются с "Get" , а имена мутаторов - с "Set". Хотя это может показаться так же неудобным, как начинать имена переменных с F, на самом деле это облегчит жизнь в дальнейшем.

Если вы еще не использовали модификатор __fastcall для ваших функций, объясним, зачем он нужен. Это означает, что при наследовании от классов VCL все функции должны быть __fastcall.

[Назад][Вперед]


Реклама на InfoCity

Яндекс цитирования



Финансы: форекс для тебя








1999-2009 © InfoCity.kiev.ua