基本情報処理技術者試験(以下、基本情報)のアルゴリズム問題をjava で受験する予定なので勉強中。
最近ちょっと方針がわかってきた。
-
クラス名・メソッド名直後の空欄はサービス問題
-
メソッド内の空欄は引数や戻り値から推測しよう
-
条件2.でダメなら仕様をよく読んで推測しよう
-
「this」「super」があったらまず「コンストラクタ」の話
-
クラス名・メソッド名直後の空欄はサービス問題
問題の選択肢を見る。クラス名直後の空欄は「extends」、「implements」、「throws」のいずれかである(たぶん)。空欄の直後が例外処理(〜exception みたいなやつ)なら「throws」で確定。空欄の直後がクラスなら"継承" なので空欄は「extends」、インターフェース名なら「implements」 が当てはまる。
public class human{
~~~~
~~~~
}
public class sample [[ 空欄a ]] human{
~~~~
~~~~
}
// human はクラスなので[[ 空欄a ]] は「extends」
public interface human{
~~~~
~~~~
}
public class sample [[ 空欄a ]] human{
~~~~
~~~~
}
// human はインターフェースなので[[ 空欄a ]] は「implements」
public int sample [[ 空欄a ]] IOException{
~~~~
~~~~
return 0;
}
// 直後に例外が来てるので[[ 空欄a ]] は「throws」
だいたいこんな感じだと思って解いてる。
こういうサービス問題はまっさきに埋めてしまおう。
- メソッド内の空欄は引数や戻り値から推測しよう
インスタンスの型やメソッド名直後の戻り値を追いかけると回答を絞れることも多い。焦らずデータの流れを追っていこう。
- 条件2.でダメなら仕様をよく読んで推測しよう
while() のかっこ内の条件文や、呼び出される関数の名前などの仕様ははじめの日本語文に書いてある。しっかり読んでみよう。
- 「this」「super」があったら「コンストラクタ」の話
違う使い方が出ることもあるが、コンストラクタの話を思い出すように気をつけている。
super は親クラス(継承とか)のコストラクタを呼び出すときに使うらしい。でも明示的に書かなくても勝手に呼び出されるんだそうだ。this は自身(子クラスかな) のコンストラクタを呼び出すときに使うんだそうな。詳しいコードのことも調べて勉強しとかんといかんなあ。
あと、メソッドの引数と同じ名前の変数を使うときに、this.str
みたいに使うらしい(メソッドの引数がstr
のとき)。
python でコード書いてたときは関数内で、引数と同じ名前の変数をつけるときに使ってたかなあ。機能面よくわかってないまま使ってた。
class sample_class():
def sample_method(self, str):
self.str = str
print(str)
str = 'こんにちは'
aaa = sample_class()
aaa_aaa = aaa.sample_method(str)
this じゃなかった。self だった。
、、、忘れとる、、、!!