No.3ベストアンサー
- 回答日時:
プログラムサイズが小さかったり一人で作っていると利点を実感しにくいですが、大勢で作っている場合や、作った本人にも全体が見通せないほど巨大になった場合、作った本人も詳細を忘れた頃に改造・拡張する必要が出来た場合等には実感できると思います。
・オブジェクト間の結合を弱めクラスの流用・継承・変更がしやすくなります。
・変更による影響範囲を限定、もしくは影響が無い事の確認が容易になります。
・製作意図とは違う場所や違う意図で値の設定・変更を行ってしまうミスを防げます。
No.2
- 回答日時:
変数をカプセル化する最も簡単と思われる例を上げてみます。
以下のコードは、身長を保持(設定/取得)するためのクラスです。
public class Tall() {
private double tall; //カプセルかされた変数
public Tall() {
}
public getCentimeters() {
return tall / 10;
}
public getMillimeters() {
return tall;
}
public getFeets() {
return tall / 304.8;
}
public setCentimeters( double tall ) {
this.tall = tall * 10;
}
public setMillimeters( double tall ) {
this.tall = tall;
}
public setFeets( double tall ) {
this.tall = tall * 304.8;
}
}
内部的には、身長はミリメートル単位で保持されていますが
内部状態を全く意識することなく、フィートで設定して、
センチメートルで取り出すといったことが可能になります。
これが、ひとつの利点です。
また、身長が負の値になったりすることはありえませんが、
tallの double型変数がパブリックで宣言されていると、
tall = -170 といった非現実的な値も設定できてしまいます。
しかし、前記のコードのsetCentimeter()メソッドを
public setCentimeters( double tall ) {
if( tall < 0 ) throw new Error();
this.tall = tall * 10;
}
という風に適当なエラーを送出するように設定することで
不自然な値自体を設定できないようにすることが可能になります。
これが、ふたつめの利点です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- FX・外国為替取引 為替レートについて質問です。 現在の円金利は1%,ドル金利が3%であったします.金利の観点から将来の 1 2022/07/02 16:04
- カスタマイズ(車) 新車を購入したのですが、デイライトが付いてなかったけど義務化じゃないんですか? 5 2023/02/20 11:02
- 教えて!goo ここの利用上の注意点を教えてください 3 2023/07/04 15:27
- 化学 【化学】パンチング冷却剤を買いました。中身は尿素の粒と見てが入ったカプセルでした。 2 2023/06/22 15:44
- 高校 高一化学の問題です。 酸塩基の滴定では普通、終点の感知には色の変化が利用され、においの変化を使うこと 1 2022/12/27 22:20
- 化学 温度による電離度を操作する利点はありますか? 2 2022/06/17 16:16
- その他(地域情報・旅行・お出掛け) サウナ初心者です。サウナ施設のかるまるに初めていくのですが、楽しみ方を教えて貰えると嬉しいです。ちな 1 2023/03/09 17:46
- 薬学 薬のカプセルにも豚が使われてるというのは本当ですかよろしくお願いしますm(_ _)m 2 2023/02/11 18:29
- Google Drive Google form を利用して 問い合わせフォームを作りたい 1 2022/04/25 14:15
- Excel(エクセル) Excel でマクロ利用しセル内テキストを修正しております(半角カナを全角にするなど)。 ただ、セル 4 2023/06/15 21:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数を動的に利用するには?
-
コマンドライン引数の*(アフ...
-
Javaで日本語の出力が文字化けする
-
中カッコ{}だけの記述について
-
プログラミングの問題です。大...
-
Socketの接続のタイムアウトを...
-
日本語が文字コードによっては...
-
コンストラクタの引数の中のnew?
-
DESを使用した暗号化/復号化処...
-
Javaでlog4jを使ってログ出力を...
-
System.exit()の値を取得したい
-
NoSuchMethodErrorが解決できま...
-
【java】同ディレクトリ別ファ...
-
インタフェイス実装と抽象クラ...
-
初心者なので教えてほしいです。
-
StringクラスのcompareToメソッド
-
Java プログラム public class ...
-
java.util.concurrent.Future g...
-
randomで
-
JSP/Servletのパラメータの受け...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラミングの問題です。大...
-
変数を動的に利用するには?
-
中カッコ{}だけの記述について
-
System.exit()の値を取得したい
-
Javaでlog4jを使ってログ出力を...
-
NoSuchMethodErrorが解決できま...
-
javaで特定の文字列から特定の...
-
Socketの接続のタイムアウトを...
-
Java プログラム public class ...
-
javaのプログラミングで作るRPG...
-
インタフェイス実装と抽象クラ...
-
コマンドライン引数の*(アフ...
-
【初心者です】javaで平均値を...
-
Javaで日本語の出力が文字化けする
-
(大至急)JavaでATMもどきを作成
-
コンストラクタの引数の中のnew?
-
Java 最大公約数 gcd
-
C# DatagridviewにExcelシート...
-
randomで
-
GetterとSetterをやったのに。
おすすめ情報