http://blogs.wankuma.com/rti/archive/2007/08/07/89226.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門6
http://blogs.wankuma.com/rti/archive/2007/08/02/88399.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門5
http://blogs.wankuma.com/rti/archive/2007/07/31/87955.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門4
http://blogs.wankuma.com/rti/archive/2007/07/30/87742.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門3
http://blogs.wankuma.com/rti/archive/2007/07/26/87105.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門2
http://blogs.wankuma.com/rti/archive/2007/07/25/86988.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門1
の続きです。
どこからフォローすれば良いのかわからないので、先頭から順に行ってます。
今回は
アクセス修飾子
というテーマです。
クラスやメンバには、アクセス修飾子を付けることができます。
アクセス修飾子には、以下のようなものがあります。
public ・・・・・・・全体に公開
internal ・・・・・・同じアセンブリのみ公開。
protected・・・・・・派生したクラスにのみ公開
internal protected ・同じアセンブリ内で派生したクラスにのみ公開
private・・・・・・・自クラスのみ公開
自分のクラスだけで使う汎用性の高いメソッドは private にしておくとか、継承したクラスで使うかもしれなければ protected にするとか、そういう使い方ですね。
慣れないうちは、public と private くらしか使わなくても大丈夫です(w)
基本的には、様々な用途に応じて、何を見せるべきか、何を隠すべきかを考えます。
例えば、ユーザー認証するダイアログボックスを作る場合を考えます。
これは、フォームにユーザー名テキストボックスと、パスワードテキストボックスを配置して、OK・キャンセルボタンを配置すれば良いだけですね。
さて、このユーザー認証ダイアログボックスをひとつのオブジェクトとして見た時、どんなメンバを実装すれば良いでしょうか?
恐らく、このオブジェクトを使う場合、入力されたユーザー名を知りたくなる筈です。
何故なら、認証されたユーザーが誰なのかを知る必要があるからです。
つまり、ユーザー名プロパティを公開します。
一方で、入力されたパスワードはどうでしょうか?
パスワードは、そのユーザーであることを確認するためのデータなのですから、入力されたパスワードを知りたいということはありません。
また、パスワードの平文が、自由にデータとして取得できるのも危険です。
ですから、パスワードはプライベートで良い筈です。
ところで、時々掲示板を見ていると、ユーザー名テキストボックスというコントロールを公開したいと考える初心者の方もいらっしゃいます。
しかし、これは大間違いです。
ユーザー認証オブジェクトを使う側から見ると、ユーザー名テキストボックスコントロールのテキストプロパティにアクセスしなければユーザー名が取得できないなんてわかりにくいですね。
純粋に、ユーザー認証ダイアログボックスに、ユーザー名プロパティメンバがあった方がわかりやすいです。
まあ、結局は、隠す、見せる、の判断だけということでしょうか。