|
Podstawy pisania komponentów Strona
3 z 9 Dalej |
w oparciu o materiały ze stron The Bits
|
Teraz przyjrzyjmy się plikowi nagłówkowemu LED.h (jeżeli używasz C++ Buildera 1 to nie zobaczysz makra 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
No cóż, zbyt wiele za nas nie zrobiono. Są tylko liczne dołączenia (#include) . Czas teraz napisać coś samemu. Będziemy potrzebować zmienną typu bool, która będzie przechowywać stan diody (On/Off), a także zmienną TColor, w której będzie kolor diody. A ponieważ jesteśmy dobrymi programistami OOP (object oriented programming - programowanie obiektowo orientowane), wiemy, że należy ukrywać informacje i te zmienne powinny być umieszczone w sekcji private definicji klasy. Po zrobieniu tego kod wygląda następująco:
private:
bool FOnOff;
TColor FOnColour;
TColor FOffColour;
Do standardowej konwencji nazywania prywatnych członków komponentu należy dodanie literki "F" na początku nazwy zmiennej (co pozwoli na użycie nazwy zmiennej bez "F" w sekcji published). Teraz kiedy mamy już zmienne, potrzebujemy akcesorów (funkcji, dzięki którym uzyskamy dostęp do danych klasy) i mutatorów (funkcji, za pomocą których będziemy mogli zmieniać wartości zmiennych). Umieszczamy je w sekcji private albo protected (dlaczego akurat tam - wyjaśnię później).
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);
Z reguły nazwę akcesora zaczyna się przedrostkeim "Get", zaś mutatora "Set" (zwiększy to przejrzystość kodu i ułatwi nam pracę). Jeżeli do tej pory nie używałeś modyfikatora __fastcall, możesz się zastanawiać, do czego on służy. Używany jest on do deklarowania funkcji, które oczekują parametrów przesyłanych w rejestrach, na przykład funkcji Pascala. A to oznacza, że kiedy dziedziczysz klasy z VCL, wszystkie funkcje powinny używać konwencji __fastcall.
Uwaga: Autorzy oraz The Bits, nie ponoszą odpowiedzialności za ewentualne
szkody wynikłe z postępowania według zasad tego samouczka.
(c)1997 Kris Erickson. (c)1999 Will Green.
Tłumaczenie: Maciek Frankiewicz
|
1 2 3 4 5 6 7 8 9
|
|
|