ITエンジニアのプレイングマネージャー化応援サイト

問題11.カプセル化

ここでは、カプセル化に関するJavaプログラムを作成してみましょう。

1.カプセル化

以下のクラスにカプセル化(含むデータ隠蔽)を施しなさい。

IDEの便利機能を使用して構わない。

 

2.アクセサメソッドの効果

1で作成したクラスにアクセサメソッドに追記することにより以下の制約を課しなさい。

IDは整数4桁の数値 1000~9999

名前は最低5文字以上。

なお、制約を外れた値の設定に対しては何もしない。

コンストラクタはなし(デフォルトコンストラクタ)。

作成後に簡単なテストコードを書いて動作を確かめること。

 

3.PINコードのクラッキング

銀行のATM等で利用されるPINコードのプロトタイプとして次のようなクラスがある。

このPINコードをブルートフォースアタックで解読するコードを以下に書きなさい。

<結果>

1234

また、この仕様の場合、平均して何回の試行でPINが推測できるか答えなさい。

 

4.PINコードのクラッキング防止

3.のインスタンスのPINコードを以下の対策で守りなさい。

・試行回数(tryTimes)というフィールドを追加する。

・試行回数が5回を超えたらシステムを強制終了する。

ヒント:System.exit(0);でシステムを強制終了させることができる。0は正常終了のコード。

 

5.PINコードジェネレータ

ワンタイムパスワードを生成するPINコードジェネレータを作成したい。

以下の条件を満たすように作成しなさい。

pinナンバーは他のクラスから直接アクセスできない。

コンストラクタは同じパッケージからしかアクセスできない。

セッターは用意しない。

インスタンス生成時に桁数(digits)を指定する。

桁数は4~9までの整数とし、このルールに従わない場合にはインスタンス化されない。

 

<結果の例>

9757

 

6.クラスの責務

あなたがシステムエンジニをしている某国では、お店で商品を買った時に消費税がかかります。

消費税は2種類に分かれていてパン(bread)のような食品(Groceryクラス)は8%、鉛筆(pencil)のような食品以外の商品(NonGroceryクラス)は10%と決まっています。

そして現在の首相は消費税の見直しは今後5年間はしないことを公約に掲げて当選しました。

そこである新入社員が次のような税込金額を計算できるプログラムを作成しました。

ところが、現在の仕様では税率は、getPriceメソッドの引数で指定することになっています。

本来なら各々の商品の税率はどのクラスが知っているべき情報でしょうか?

本来あるべきプログラムに修正しなさい。

 

7.オリジナル問題作成

将来の後輩のために良い問題が出来たら教えてください。

以上。

 

JavaSEの問題集トップページに戻る

 

PAGETOP
Copyright © Say Consulting Group, Inc. All Rights Reserved.