[問題文・解答]
平成29年度4月に実施された基本情報技術者試験の午後試験の問題・解答はIPA公式ページからダウンロード出来ます。(以下リンク)
[問題概要]
この問題は、選択問題で問9〜問13のうち1問を選択する必要がありますです。
出題分野はソフトウェア開発(Java)で、問題の題材は電気料金プランの比較です。
出題分野はソフトウェア開発(Java)で、問題の題材は電気料金プランの比較です。
[設問1]
a) プログラム1では抽象クラスTierTableを実装するため、aには「abstract」が当てはまります。
b) bの部分では、引数tiersの奇数番目とそれに続く偶数番目のdouble型数値でペアを作り、double型の二次元配列aに追加していく処理を行っています。iは2ずつ増加させるので、aのインデックスとしてはa/2が適切です。よって「エ」が正解となります。
c,d) プログラム2では、クラスTieredRateTableを実装しています。P.53上段の説明にあるようにメソッドmapは、引数amountで与えられた電力量から電力量料金chargeを計算するメソッドです。mapではプランに応じた料金単価テーブルpairsを利用して処理を分岐させて料金を計算しています。
c,dの部分は次に料金単価が切り替わる境界値pairs[i+1][0]よりも電力量amountが大きい場合に、境界値間の差分 pairs[i+1][0] - pairs[i][0] にその区分の料金単価pairs[i][1]を乗じた値を料金chargeに加算しています。よって、cには「ア」が、dには「エ」が当てはまります。
[答] a) ア b) エ c) ア d) エ
b) bの部分では、引数tiersの奇数番目とそれに続く偶数番目のdouble型数値でペアを作り、double型の二次元配列aに追加していく処理を行っています。iは2ずつ増加させるので、aのインデックスとしてはa/2が適切です。よって「エ」が正解となります。
c,d) プログラム2では、クラスTieredRateTableを実装しています。P.53上段の説明にあるようにメソッドmapは、引数amountで与えられた電力量から電力量料金chargeを計算するメソッドです。mapではプランに応じた料金単価テーブルpairsを利用して処理を分岐させて料金を計算しています。
c,dの部分は次に料金単価が切り替わる境界値pairs[i+1][0]よりも電力量amountが大きい場合に、境界値間の差分 pairs[i+1][0] - pairs[i][0] にその区分の料金単価pairs[i][1]を乗じた値を料金chargeに加算しています。よって、cには「ア」が、dには「エ」が当てはまります。
[答] a) ア b) エ c) ア d) エ
[設問2]
e) プログラム6はクラスRatePlanを拡張したDiscountPlanクラスを実装しているため、eには「extends」が当てはまります。
f) P.56下段の説明より、DiscountPlanのメソッドgetPriceは、上位クラスであるRatePlanのメソッドgetPriceでまず電気料金を求め、更にその電気料金を元に割引率を求めて割引を適用した金額を最終的な電気料金として返します。
fの行ではまず上位クラスRatePlanのgetPriceを使って電力量amountから電気料金priceを求めるため、fには「super」が当てはまります。
g) 割引率は、クラスDiscountTableのメソッドmapに電気料金priceを引数とすることで求められます。つまり、割引率はdiscountTiers.map(price)で求められます。この割引率は少数で表されており、1%引の場合は0.01が返されます。
gの行ではこの割引率から割引後の料金を計算するため、「ウ」が正解となります。
[答] e) ア f) ウ g) ウ
上記の解説は問題と解答を元に自分なりの考え方を記述しており、間違っている部分もあるかと思いますので、ご了承願います。また、誤りについては正しい考え方をご指摘・ご教授頂けると助かります。
f) P.56下段の説明より、DiscountPlanのメソッドgetPriceは、上位クラスであるRatePlanのメソッドgetPriceでまず電気料金を求め、更にその電気料金を元に割引率を求めて割引を適用した金額を最終的な電気料金として返します。
fの行ではまず上位クラスRatePlanのgetPriceを使って電力量amountから電気料金priceを求めるため、fには「super」が当てはまります。
g) 割引率は、クラスDiscountTableのメソッドmapに電気料金priceを引数とすることで求められます。つまり、割引率はdiscountTiers.map(price)で求められます。この割引率は少数で表されており、1%引の場合は0.01が返されます。
gの行ではこの割引率から割引後の料金を計算するため、「ウ」が正解となります。
上記の解説は問題と解答を元に自分なりの考え方を記述しており、間違っている部分もあるかと思いますので、ご了承願います。また、誤りについては正しい考え方をご指摘・ご教授頂けると助かります。
0 件のコメント:
コメントを投稿