気まぐれjava学習日記

基本情報処理試験に見るjavaコーディングの個性的なグルメメニューを、オタク目線で隅々まで味わい尽くしたい!

2004(H16)年秋実施、問12を味わい尽くす!

2017年05月20日 | 基本情報処理試験Java
10年ひと昔って言うけど、昔の問題のとっつきやすいところは、対策が練り易いってところかしら。基礎的な文法ルールを知っているだけで、何となく選択肢から選べてしまうことがあったし、[プログラムの説明]のクラスやメソッドの説明と一致する個所をコードのクラスやメソッドと照らし合わせれば、これも何とか選択肢から選べてしまったり。一見強面に見えて、あまり抽象的なコーディングでなくて、イメージし易いように見えるから、私には美味しいデザートみたいに思えるの。第1回目はこの2004年秋のビンテージものから味わってみようかしら。何日も掛けてエッセンスの最後の一滴まで味わい尽くすわ。

<問題と解く>の観点で味わってみる💛
[プログラムの説明]から、「クラスの目的」と「メソッドの動き」に関する説明文にアンダーラインを引いてみましょ。

「電卓プログラム」「入出力はテスト用プログラムによって/電卓本体部分の/テストができる」→電卓本体プログラムと、それをテストする実行プログラムがあるのね。

「クラスCalculatorEvent/電卓のキーが押されたときに発生するイベント/イベントにはタイプ/フィールドtypeの値で表される/タイプはDIGIT,OPERATOR,CLEAR/電卓の数字キー/演算キー及びイコールキー/クリアキー/DIGITのときは数字キー/OPERATORのときは演算の種類を表す文字または'='/フィールドvalueに保持/タイプCLEARのときはvalueは使用しない」→クラスCalculatorにはtypeとvalueのフィールドがあるのね。typeフィールドの値はDIGIT, OPERATOR, CLEARのいずれか1つが入るのだわ。valueフィールドには、数字キーまたは加減乗除(+, -, *, /)またはイコール(=)が入るのね。typeフィールドがCLEARのときはvalueフィールドの値は入らないのね。

「インターフェースCalculatorOutput/数値やエラーを表示するメソッドdisplayを宣言」→インターフェースCalculatorOutputのdisplayメソッドは、このインターフェースのサブクラスで実装されるんだわ。

「クラスCalculator/電卓本体/メソッドeventDispatchedはイベントを受け取り/タイプに応じて演算処理」→電卓本体とあるので、Calculatorインスタンスは処理の要として計算処理メソッドeventDispatchedを持っているのね。eventDispatch()メソッドは「タイプに応じて演算処理」と言っているのだから、CalculatorEventクラスのtypeフィールドの値が「+」なら足し算、「-」なら引き算っていう風に計算するのだわ。

「クラスCalculatorTest/Calculatorをテストするプログラム/CalculatorOutputを匿名クラスとして実装/メソッドdisplayは指定された数値または文字列を/出力」→CalculatorTestは「CalculatorOutputをテストする」とあるから、メインメソッドを持っていて、Calculatorのインスタンスをnewして実行するのだわ。そしてCalculatorOutputインターフェースの匿名クラスもnewして、その中にインターフェースのdisplay()メソッドの処理を具体的に記述するのね。「指定された数値または文字列」とは、「数値または文字列」がdisplay()メソッドの引数として「指定」つまり、与えられるってことね。この引数を、数値か文字列のいずれかの形式で出力する――それがdisplay()メソッドのお仕事ね。

「メソッドmain/引数args[0]で与えられた文字列からCalculatorEventを生成/CalculatorのメソッドeventDispatchedを呼び出す」→メインメソッドでは、ユーザーが直接入力してエンターキーで改行したとき、この入力した1行分の文字列を引数に持つCalculatorEventインスタンスをnewするのだわ。同時にnewしたCalculatorインスタンスを使ってeventDispatched()メソッドを呼び出して計算するのね。

問題文からそれぞれのクラスと、メソッドのお仕事をイメージします。クラス名とメソッド名はこの[プログラムの説明]文に直接、○で囲んでおくといいかもね。それからクラスの存在目的は、クラスのコンストラクタの動きがイメージできるし、フィールドとして何を持っているのか、が分かるから、ざぁっとアンダーラインを引いたら、そのクラスとメソッドの箇所を[プログラム1]~[プログラム4]のコード上で確認するの。真っ先に照合させる個所は、[プログラム]内の( )問題の箇所ね。明日はその手順を追っていこうかしら。今日はデザートを鑑賞しただけで終わってしまったわね。
ジャンル:
ウェブログ
この記事についてブログを書く
   | トップ | 2004(H16)年秋実施、問12を... »