クラスモジュールは、設計図だということをよく耳にします。
設計図ということ、普通に理解できれば、この記事を読む必要はありません。
私が1年以上苦しんだ結果の回答です。
目次
クラスとは設計図だ
こんにちは。伊川(@naonaoke)です。
プログラムの勉強をしていると、なぜかしら、偏ったたとえが多数発生します。
例えば、Functionなら、消費税の計算と合否判定です。
この例えから、Functionプロシージャや、ユーザー定義関数をマスターできる人は、相当優秀な人です。
ACCESSなら、リレーションから、オートルックアップクエリをすぐに理解できたら、相当優秀な人です。
たい焼きの製造過程から、クラスモジュールを理解できる人は、相当優秀な人です。
意外に、それ以外の例えがないということは、プログラムの世界は、閉ざされた世界なのかもしれません。
また、優秀な人が、表に出てこないかもしれません。
クラスモジュールは設計図ということをわかりやすく説明していきたいと思います。
このブログはこんな人にお勧め
- クラスモジュールの説明がピンと来ない人
- クラスモジュールの説明に、たい焼きの話を聴いて納得できない人
- そもそも、クラスモジュールなんてどうでもいいと思っている人
このブログを、読み終わるころには・・・・
なので、読んでいただければ、クラスモジュールが、設計図ということが理解できると思います。
ただ、腑に落ちない人は、今回の記事、または、他の記事を参考して、自分なりの説明をできるようにしてください。
このクラスモジュールを勉強していくと、必ず、人間を定義します。
名前、年齢、生年月日、電話番号、大体、この4つで個人を特定できると思います。
PythonもVBAも、恐らく、他の言語もそうなのかもしれません。
しかし、人間というものを特定しようとするから、このようなジレンマに達するのかもしれません。
たい焼きの話を例えにするなら、最後まで、たい焼きを使って説明するべきです。
なぜ、人間を定義するのだろう?
ここが、私の出発点でした。
しかし、そうなのかと思った瞬間があます。
クラスモジュールは、個人を特定するのではなく、もっと大きなものを定義しているのです。
クラスモジュール 作業手順 その1 設計図と人間
例えば、人間がまだ、地球に存在しないとき、神様は、どのように人間をつくるのでしょうか?
多分、現在の人間の設計図を作るはずです。
その時に、人間の骨の数は、全部で、275本あります。
つまり、骨というものについては、275回の定義が必要なのです。
細胞に関しては、60兆個の定義が必要になります。
そうなんです。人間が誕生して、人間というものを人間か理解しているから、名前、年齢、生年月日、電話番号で、個人を特定できます。
もし、人間以外でも、名前、年齢、生年月日、電話番号を持つ生物がいたら、その生物の定義が必要となります。
クラスモジュール 作業手順 その2 設計図と言えば?
設計図と聴いて、真っ先に、一般の人が思い浮かぶのは、家ではないでしょうか?
一生に1回の買い物と言われるくらいです。
マイホームの設計図を見ただけでも、ローン地獄などは、想像せず、未来の明るい家庭を想像するでしょう。
確かに設計図だけを作成しても、マイホームは出来上がりません。
さてここで、質問です。
普通の大工が、設計図を書いて、5人で、あなたのマイホームを建てる
設計図など書かないで、自分のどんぶり勘定で計算して、あなたのマイホームを建てる宮大工
あなたは、どちらを選択しますか?
当然、宮大工を選択しないでしょう。
ここが重要です。
もし、宮大工が死んだらどうなるでしょう。
仮に、設計図があれば、引継も可能でしょうが、どんぶり勘定なら、あなたの夢のマイホームはそこで終了です。
つまり、クラスモジュールの継承という概念は、ここから来ていると思います。
システムの根幹となるものを設計して、他に引き継ぐことができます。
クラスモジュール 作業手順 その3 標準モジュールから呼び出すということ
大工さんが、家を建てるとき、材木が、空き地に積みあがります。
このような材木を子供のころ、よく見たものです。ここで問題です。
棟梁が、「おい、あの材木をもってこい」と言っても、多分無理でしょう。
材木を特定できません。
しかし、CA-28の材木と言われたら、誰しもが、運ぶことができます。
Excelに、「あのパーツを呼び出して」と言ったら、どうなるでしょう?
多分、Excelに怒られます。
これで、ナンバーリングした材木になりました。
つまり、呼び出すためには、propertyプロシージャで、材木の設定をしなければなりません。
Propertyプロシージャは、クラスモジュールで利用するプロシージャです。
Getプロシージャが、呼び出して利用する値を利用するためのプロシージャです。
つまり、家の設計図というクラスのは、Nameというプロパティが存在することになります。
クラスモジュール 作業手順 その4 標準モジュールで呼び出す
家の設計図というクラスモジュールを使うときの変数が、家の設計図_1となります。
Newワードを利用して、家の設計図オブジェクトを生成します。
そうすると、標準モジュールで、名前を決めるとイミディエイトウィンドウには、大黒柱と表示されます。
クラスモジュール 作業手順 その5 インテリセンスが利用できるようになる
ドットの後に、表示されるものを、インテリセンスといいます。
VBAを記載したことがある人であれば、一度は見たことがあるはずです。
このように、インテリセンスが表示されると、コードを記載するのが楽ですね。
ここがポイント
設計図を作成すうということは、非常に大切ですね。
しかし、馴染みのない言葉を利用されると、なおさら混乱します。
そのような時は、自分の身近なものに置き換えて、ロジカルに説明できるようにしましょう。
自分の馴染みのあるとは、恐らくは、他人にも、身近に思えるはずです。
クラスモジュールという概念は、このようなことだと覚えてください。
そして勇気をもって利用してみましょう。
その場で、正しい情報を入力するのが一番です。
まとめ
今回は、クラスモジュールの概念について説明してみました。
今回も最後まで読んでいただきありがとうございました。
今回のサンプルファイルは、No251です。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。