前回はGodExcelオブジェクトから離れて、コンストラクタとデストラクタの話をしたのでした。今回はGodExcelオブジェクトを完成させていきます。その前に、彼(彼女?)の現在の姿を確認しておきましょう。Functionワークシートはこんな作りでした。GodExcelオブジェクトの問題点このオブジェクトの責任は、神エクセルの情報を正しく保持することです。その視点から見たとき、このオブジェクトの状態は責任を全うできるでしょうか。残念ながらこのオブジェクトは神エクセルの情報を正しく保持できない可能性があります。それは、このオブジェクトの各プロパティの値は外部から変更が可能だからです。外部のプログラムからプロパティの値を変更されては、責任を全うすることができません。すればいいでしょうか。簡単な話で、外部からプロパティを変更できないようにしてあげればいいのです。Getステートメントとしてクラスモジュールに定義していました。Letステートメントを削除します。追加したのに・・・(-_-;)いえいえ、本当は最初からオブジェクトの設計がうまくできればいいのですが、最初からそんなうまくいくはずありません。試行錯誤の繰り返しです。徐々に慣れていけばいいのです。クラスモジュールにプロパティの設定や取得まで定義するクラスモジュールのメリットがこんなところに生きてきました。GetやLetステートメントを使って、オブジェクトの特性に合わせてプロパティへのアクセスを柔軟に制御することができるのです。オブジェクトのプロパティの設定はClass_Inititalizeサブプロシージャで行い、プロパティへのアクセスはGetのみとする。これでGodExcelオブジェクトは「神エクセルの情報を正しく保持する」という責任を全うできるようになりました。大分、様になってきました、GodExcelオブジェクト。プロパティ周りはこれで完成です。プロパティ周りが整備されたGodExcelクラスのコードGodExcelオブジェクトを生成するGodExcelクラスのコードはこうなりました。FunctionGodExelの利便性をさらに高めるアイディアクラスモジュールを使ってオブジェクトを生成するメリットは、プロパティを操作することだけではありません。オブジェクトは、プロパティ以外にメソッドを持つことができます。メソッドとは、オブジェクトに付随する関数的なものです。そんなときは実際の例を見てみましょう。今回の場合、神エクセルの住所から都道府県名を知りたいときどうすればよいでしょうか。GodExcelオブジェクトのAddressから、呼び出し元の別のプログラムが求めることもできます。それではオブジェクト化したメリットが生かされません。オブジェクト化したのですから、GodExcelオブジェクトが都道府県名を教えてくれると、呼び出し元のプログラムはすごく助かります。このような場合、オブジェクトに都道府県名を教えてくれるメソッドを持たせることを考えます。こんなメソッドがあったら便利だよね、というものを追加してあげると使い勝手のよいオブジェクトができます。メソッドはオブジェクトに関係あるものだけ使い勝手のよいオブジェクトにメソッドは必須なのですが、あれもこれも追加していると何をしたいオブジェクトだかわからなくなってしまいます。「オブジェクトの責任は何か」を考えて、適当なメソッドを追加してあげます。GodExcelオブジェクトの責任は「神エクセルの情報を保持すること」です。神エクセルの情報についての便利なメソッドを追加してあげるとよいかと思います。例としてこんなメソッドが考えられます。住所の都道府県名を返すメソッド氏名の苗字と名前を返すメソッドなどなど。GodExcelオブジェクトのように、シートの情報をオブジェクト化する場合のメソッドは、シートの情報に関係するものがほとんどです。それを意識すれば、責任の範囲から外れることはないかと思います。次回でGodExcelオブジェクトが一応完成9回目にしてやっと、メソッドの話が出てきました・・・。このシリーズも佳境ですね。次回は、メソッドをGodExcelオブジェクトに実装し、GodExcelオブジェクトは完成させます。ここまでお読みいただき、ありがとうございました。はてなブログProシステム界隈の末端に生息しています。コンピュータに仕事をさせるのが好きです。このブログで紹介している内容は、多分に私見が含まれています。それでも、なるべく正確性を保つよう心がけていますが「それは違うんじゃない?」などのご意見がありましたらご連絡ください。このブログに掲載しているコードは利用規約の範囲で自由にお使いください。当ブログのプライバシーポリシーについてお問合せコードの利用規約にほんブログ村はてなブログをはじめよう!shinmai_papaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。