グループ分け(オブジェクト指向ライク)

→戻る
 クラスを定義して、そのクラスのインスタンスを生成するという従来のオブジェクト指向は、概念を覚えるまでに時間もかかり、なでしこの簡単、手軽と言う思想に反します。そこで、構造体をちょっとだけ拡張したものを『グループ』と呼ぶことにして、このグループをなでしこのオブジェクト指向としました。
■グループとは?
■グループが提供する機能
  ┣分類分け
  ┣グループ項目のコピー
  ┣グループ内関数
  ┣グループ・ミックス
  ┣セッター・ゲッター
  ┣コンストラクター
■グループの利用
  ┣オブジェクト.メンバ変数
  ┣グループ内関数
  ┣グループイベント
■グループの定義
  ┣グループを利用する意義
  ┣定義方法
  ┣定義例
■ゲッターとセッター
■コンストラクター
  ┣初期メンバ
■その他
  ┣グループメンバーの動的決定
  ┣グループメンバにグループを指定する
■デフォルトの設定

グループとは?

変数がたくさんに増えると変数の管理が大変になります。

普段の書類整理を例にとってみても、書類がたくさん溜まってしまうと、管理が大変になるので、普通は分類をして分かりやすくグループに分けます。

なでしこの『グループ』の機能もちょうどこの分類に当たります。

グループが提供する機能

『グループ』は以下の機能を持ちます。

分類分け

『(グループ名)の(変数名)』という感じで、変数名の前に修飾語のようにグループ名をつけて変数に対して読み書きをすることができます。

グループ項目のコピー

『(グループ名)とは(グループ名)』とグループ名を宣言式として書くと、グループ内の変数を全部コピーすることができます。

グループ内関数

『(グループ名)で(関数名)する』と書くと、グループ内で定義した関数を実行することができます。

グループ・ミックス

グループを宣言するとき、他のグループをミックスすることができます。オブジェクト指向で言えば継承に当たりますが、それほど高度な機能ではなく、ただ単に、グループ内の項目をコピーしているだけです。グループ内に変数名の衝突があれば上書きしてしまいます。

セッター・ゲッター

グループ内の関数をあたかも変数かのように扱うことができます。グループの利用

コンストラクター

グループを生成(宣言)したときに、コンストラクターを実行させることができます。

グループの利用

オブジェクト.メンバ変数

グループ内の変数を利用するには、

(グループ名)の(変数名)

と、格助詞の「の」を使って指定する。

りんごの値段 // 「りんご」グループの変数「値段」を表す
携帯の着信音 // 「携帯」グループの変数「着信音」を表す

グループ内関数

グループ内の関数を呼び出すには、

【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設定という関数が呼び出され、ボタンの座標が変更されるという仕組みを提供する。

コンストラクター

コンストラクターは「作る」というメソッドを定義します。

初期メンバ

グループを作成すると必ず、名前というメンバが自動的に生成されます。この名前にはグループにつけた名前が代入されています。

その他

グループメンバーの動的決定

 グループのメンバは、『グループのメンバ』と指定しますが、この方法だとプログラムの実行時に、静的な指定しかできません。グループのメンバを動的に決定するには、『グループ@(変数名)』のように、@を使うとメンバを変数や文字列で指定することができます。

■書籍
 ・著者
 ・ジャンル

ナデシコ入門とは書籍。
ナデシコ入門の著者は「クジラ飛行机」

メンバ名は「著者」
ナデシコ入門@メンバ名を表示。
待機

グループメンバにグループを指定する

 グループ内にグループのメンバを持つ場合は、グループ定義するときに、グループであることを明示しておきます。

■口グループ
 ・歯{="とがってる"}
 ・舌

■魚グループ
 ・{口グループ}口
 ・ヒレ

魚とは魚グループ

魚の口の歯を表示
魚@"口"@"歯"を表示。

待機。

 ただし、@を使ったメンバの動的決定を使う場合は、明示する必要はありません。

!変数宣言が必要
■口グループ
 ・歯{="とがってる"}
 ・舌

■魚グループ
 ・口
 ・ヒレ

魚とは魚グループ
口とは口グループ

魚の口は、口。

魚の口@"歯"を表示。
# 魚の口の歯を表示。# @で動的決定しないと未定義のエラーになる。

待機。

デフォルトの設定

各グループのメンバを省略したときに、グループの初期メンバを登録しておくことで、グループの扱いが楽になる。

たとえば「母艦のテキストを表示」から「テキスト」を省略して「母艦を表示」と書いても、問題なく母艦のテキストが表示される。

これを設定するにはグループの宣言を以下のように行う。

■人間
 ・F身長
 ・身長取得〜それはF身長
 ・身長設定(V)〜F身長=V
 ・身長 ←身長設定 →身長取得 デフォルト

人間=160
人間を言う。

→トップへ