グループ分け(オブジェクト指向ライク)
クラスを定義して、そのクラスのインスタンスを生成するという従来のオブジェクト指向は、概念を覚えるまでに時間もかかり、なでしこの簡単、手軽と言う思想に反します。そこで、構造体をちょっとだけ拡張したものを『グループ』と呼ぶことにして、このグループをなでしこのオブジェクト指向としました。
グループとは?
変数がたくさんに増えると変数の管理が大変になります。
普段の書類整理を例にとってみても、書類がたくさん溜まってしまうと、管理が大変になるので、普通は分類をして分かりやすくグループに分けます。
なでしこの『グループ』の機能もちょうどこの分類に当たります。
グループが提供する機能
『グループ』は以下の機能を持ちます。
分類分け
『(グループ名)の(変数名)』という感じで、変数名の前に修飾語のようにグループ名をつけて変数に対して読み書きをすることができます。
グループ項目のコピー
『(グループ名)とは(グループ名)』とグループ名を宣言式として書くと、グループ内の変数を全部コピーすることができます。
グループ内関数
『(グループ名)で(関数名)する』と書くと、グループ内で定義した関数を実行することができます。
グループ・ミックス
グループを宣言するとき、他のグループをミックスすることができます。オブジェクト指向で言えば継承に当たりますが、それほど高度な機能ではなく、ただ単に、グループ内の項目をコピーしているだけです。グループ内に変数名の衝突があれば上書きしてしまいます。
セッター・ゲッター
グループ内の関数をあたかも変数かのように扱うことができます。
グループの利用
コンストラクター
グループを生成(宣言)したときに、コンストラクターを実行させることができます。
グループの利用
オブジェクト.メンバ変数
グループ内の変数を利用するには、
(グループ名)の(変数名)
と、格助詞の「の」を使って指定する。
りんごの値段 // 「りんご」グループの変数「値段」を表す
携帯の着信音 // 「携帯」グループの変数「着信音」を表す
グループ内関数
グループ内の関数を呼び出すには、
【1】(引数)(助詞)(引数)(助詞)...(オブジェクト名)(助詞)(関数名)
【2】(グループ名)について(引数)(助詞)(引数)(助詞)...(関数名)
のように記述します。
ファイルAからファイルBへファイルをコピーする。
配列Aについて3番目を削除する。
グループイベント
イベントは関数への参照として呼び出される。『(グループ名)の(イベント名)は〜』と書くことで変数内部に直接イベントを記述することができます。
※-----------------------
OKボタンとはボタン。
OKボタンのイベントは〜
「OK」と言う
グループの定義
グループを利用する意義
コード補完機能から変数や関数を選べるようになります。コードのメンテナンス性を高めることができます。
定義方法
■グループ名とは +ミックス・グループ名+ミックス・グループ名...
・変数名
・変数名
・{変数|文字列|数値|整数}変数名
・関数名(引数)〜定義内容...
定義例
#定義
■人間とは
・名前
・趣味
・挨拶する〜「こんにちは」と言う。
・自己紹介する〜「{名前}です。趣味は{趣味}です。」と表示。
■音楽家とは +人間
・担当楽器
・挨拶する〜「どもども」と言う
・演奏する〜「ドミソー」をMML演奏。
・自己紹介する〜
「{名前}です。担当は{担当楽器}です。」と表示。
#利用
トモコとは人間
トモコの名前は「友子」
トモコの趣味は「読書」
トモコが自己紹介する
アイコとは音楽家だ
アイコの名前は「aiko」
アイコが自己紹介する
ゲッターとセッター
変数への代入により関数を呼び出す仕組み。JavaScript?, Delphi などの言語に実装されています。
例えば、ボタンのXという値を変更したら、ボタンのX座標を変更したい場合:
■ボタン
・{非公開}FX
・X ←X設定、→X取得
・X設定(V)〜FX=V。座標変更処理。
・X取得〜それはFX
ボタンのXは、30
Xを変更すると、X設定という関数が呼び出され、ボタンの座標が変更されるという仕組みを提供する。
コンストラクター
コンストラクターは「作る」というメソッドを定義します。
●グローバル変数の強要
オプション指令「!」をつけて以下のように宣言した
変数は強制的にグローバル変数になります。
この宣言で生成したグループ機能