ローカル変数とグローバル変数 • ローカル変数 定義された関数内だけで使用できる変数 • グローバル変数 プログラム全体で使用できる変数 ローカル変数とグローバル変数 • ローカル変数 定義された関数内だけで使用できる変数 void add(int a, int b) { int c; c = a+b; } void main() { add(1,2); printf("%d\n",c); } エラーになる ローカル変数とグローバル変数 • グローバル変数 プログラム全体で使用できる変数 int c; void add(int a, int b) { c = a+b; } void main() { add(1,2); printf("%d\n",c); } グローバル宣言 エラーにならない クラスと構造体 •構造体 複数のデータをまとめた新しい型 •メンバ変数 構造体の保持する個々のデータ クラスと構造体 •クラス 構造体に専用のメンバ関数を追加 •メンバ関数 クラスのデータの処理を行う関数 クラスの定義方法 • ほとんど、構造体と同じ。 • メンバ関数が追加 • 宣言部分と、定義部分を分けて記述できる。 クラスの宣言と定義 class TForm1 : public TForm { __published: // IDE 管理のコンポーネント private: // ユーザー宣言 public: // ユーザー宣言 __fastcall TForm1(TComponent* Owner); }; ←クラスの宣言 __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) ←クラスのメンバ関数の定義 { } クラスのメンバの種類 • public: クラスの外からも利用できる。 構造体と同じ。 • private: クラスのメンバのみ利用できる。 • __published: 例えばForm1に貼り付けたコンポーネントや、 コンポーネントのイベントのメンバ関数がBCBに より自動的に追加される。 クラスの宣言と定義 • Formにボタンを貼り付けると・・・ • ボタンをクリックすると・・・ class TForm1 : public TForm { __published: // IDE 管理のコンポーネント TButton //*Button1; private: ユーザー宣言 void __fastcall Button1Click(TObject private: public: // ユーザー宣言 // ユーザー宣言 *Sender); private: ユーザー宣言 public: __fastcall// TForm1(TComponent* // ユーザー宣言 Owner); public: // ユーザー宣言 }; __fastcall TForm1(TComponent* Owner); }; __fastcall TForm1(TComponent* Owner); }; メンバ関数の定義 • コンポーネントをクリックするとメンバ関数 の定義部分が作られる。 void __fastcall TForm1::Button1Click(TObject *Sender) { } ↑ ここにコード(プログラム)を書く メンバ関数の定義 • オブジェクトインスペクタのイベントタグで そのイベントに対応したメンバ関数、 イベント名をクリックすると、 “イベントハンドラ関数”が用意される メンバ関数の定義 コンポーネントをダブルクリックした場合も オブジェクトインスペクタに登録される。 メンバ関数の書き方 • イベントハンドラ以外のメンバ関数は、 クラスの宣言のところにプロトタイプ宣言を 記述する。 privateでもpublicでも良い。 class TForm1 : public TForm { __published: // IDE 管理のコンポーネント TButton *Button1; void __fastcall Button1Click(TObject *Sender); private: // ユーザー宣言 void henkou(); public: // ユーザー宣言 __fastcall TForm1(TComponent* Owner); }; メンバ関数の書き方 • 関数の型 クラス名 :: 関数名 引数 { // 実装部 } :: は、この関数がクラスのメンバ関数で あることをしめす演算子です。 void TForm1::henkou() { Caption = "Test"; } メンバ関数の書き方 メンバ変数/メンバ関数への アクセス方法 • メンバ変数やメンバ関数を使用する場合は、 参照演算子を使う • “ . ”演算子 クラスの変数のメンバにアクセス • “->”演算子 クラスのポインタ変数のメンバにアクセス ※コンポーネントやFormはポインタ変数 メンバ変数/メンバ関数への アクセス方法 • void TForm1 :: henkou(void) { Caption = "TEST": } では、CaptionはAnsiStringクラスの変数ですが、 これはクラスTForm1のメンバ変数なので、 おなじくTForm1のメンバ関数であるhennkou( )で 使用する際には、参照演算子はいりません。 メンバ変数/メンバ関数への アクセス方法 • Button1のCaptionに変更する場合は、 void TForm1 :: henkou(void) { Button1->Caption = “TEST”: } となります。 Button1はTForm1のメンバ変数、 “Button1のCaptionはButton1自体のメンバ変数” Button1->Captionというように参照演算子“->”を使って、 所属をはっきりさせる。 ※Button1はクラスTButtonのポインタ変数なので、 参照演算子は"->"となる。 プロパティ操作による コンポーネントの変更 • 通常は、オブジェクトインスペクタの プロパティタグで変更できるが、 プログラムでプロパティ変数を直接変更す ることも出来る。 例: Top=100;
© Copyright 2024 ExpyDoc