カプセル化
ども!こんばんは!
クローバーフィールドの伊関です。
今日は湿気が凄まじいなと思っていたら、
台風さんが接近してるじゃありませんか。
去年は大阪も直撃し、通勤電車を止められた挙句、三駅も歩かされた伊関です。
今年はほぼ地下鉄なので大丈夫かなと思うのですが、
南海止まらないことを祈るばかりです。
・カプセル化
データの破壊や漏洩を防ぐというのは、オブジェクト指向の重要な概念の一つです。そのためには、オブジェクトの中にデータを隠蔽し、最低限のアクセス手段のみを公開する”カプセル化”を実装する必要があります。
・プロパティ
実はここまで説明してきたTelevisionクラスでは、カプセル化を考慮していませんでした。フィールドと定数をpublicで公開していたため、外からも丸見えです。このままpublicにしておくと、上下値を無視してchannelとvolumeに値を代入することが可能になってしまいます。フィールドや定数はprivateにして、クラス外部からは容易にアクセスできないようにカプセル化するべきです。
次のようにTelevisionのフィールドをprivateに修正してください。
フィールドと定数をprivateに修正(ClassSample:Television.cs)
1 2 3 4 5 6 7 8 9 | class Television { private bool power; //電源の状態 private int channel; //現在のチャンネル private int volume; //現在の音量 private const int channelMin=1; //チャンネル下限 private const int channelMax=12; //チャンネル上限 private const int volumeMin=0; //音量下限 private const int volumeMax=40; //音量上限 |
修正すると、Mainメソッドの「tv.channel」を記述している部分でエラーが発生していますね。これはchannelがpublicからprivateに変更されてためにアクセスができなくなってしまったからです。このように隠蔽されたデータにアクセスするような場合には「プロパティ」を使います。
以上です。
関西は深夜に来るようですから、ふらっと出歩かないようにしてくださいね。
それでは皆様。
おやすみなさい。