Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 1
OJCP Silver SE 7 資格試験の
傾向と対策
日本オラクル株式会社
オラクルユニバーシティ
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 3
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するもので
す。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み
込むことはできません。以下の事項は、マテリアルやコード、機能を提供す
ることをコミットメント(確約)するものではないため、購買決定を行う際
の判断材料になさらないで下さい。
オラクル製品に関して記載されている機能の開発、リリースおよび時期につ
いては、弊社の裁量により決定されます。
Oracleは、米国オラクル・コーポレーション及びその子会社、関連会社の米国及びその他の国における登録
商標または商標です。他社名又は製品名は、それぞれ各社の商標である場合があります。
Agenda
1.
Java SE 7 対応オラクル認定Java資格の
ご案内
2.
OCJP Silver SE 7 資格試験の傾向と対策
3.
補足情報
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 5
1. Java SE 7対応オラクル認定
Java資格のご案内
Java SE 7対応オラクル認定Java資格が新しくなりました
Bronze, Silver, Goldの3段階の積み上げ式でスキルを認定します
Oracle Certified
Java Programmer,
Gold
SE 7
Oracle Certified
Java Programmer,
Silver
SE 7
Oracle Certified
Java Programmer,
Bronze
SE 7
旧資格体系
新資格体系
設計者の意図を正しく理解して独力で機能実装が行えるレベル
(中上級Javaプログラマ向け)
Gold資格は、コレクションAPI, ファイルI/O,
並行処理
、
JDBC
などのライ
ブラリを使用したプログラミングを理解しているかどうかが主な出題項目
です。加えて
デザインパターン
についても問われるため
設計から実装まで
の包括的なスキルを身につけているか
が問われます。
(Global資格: Oracle
Certified Professional, Java SE 7 Programmer)
独力で単体テストコードなどを書けるくらいのレベル
(初級Javaプログラマ向け)
Silver資格は、Java言語の基本文法とオブジェクト指向プログラミング(ク
ラス、インタフェース、例外処理)を理解しているかどうかが主な出題項
目です。
プログラミングのために必要とされる仕様を詳細に理解している
か
が問われます。
(Global資格: Oracle Certified Associate, Java SE 7 Programmer)
Javaによるオブジェクト指向プログラミングを覚えたレベル
(言語を初めて学ぶプログラマ向け)
Bronze資格は、Java言語の基本文法(変数宣言や制御文)とオブジェクト指
向プログラミングの基本を理解しているかどうかが主な出題項目です。
言
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 7
Oracle Certified
Java Programmer,
Silver
SE 7
Oracle Certified
Java Programmer,
Bronze
SE 7
1Z0-805: Upgrade to
Java SE 7 Programmer
1Z0-804:
Java SE 7 Programmer II
1Z0-803:
Java SE 7 Programmer I
1Z0-802:
Java SE 7 Bronze Exam
OCJ-P/SJC-P資格取得者
(バージョンは問わない)
これから資格取得を
目指す方
Oracle Certified
Java Programmer,
Gold
SE 7
Java SE 7 資格認定パス
BronzeとSilverの試験範囲はほとん
ど同じです。プログラミング経験が
ある方はSilverからスタートしま
しょう。
一試験で
移行可能です
資格名
試験名
オンライン試験有り
OCJP Silver SE 7 試験
試験名: Java SE 7 Programmer I (1Z0-803)
認定資格: Oracle Certified Java Programmer,
Silver
SE 7
出題数: 90問 (選択式)
試験時間: 150分
合格ライン: 77%
試験料(税抜): 32,600 円
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 9
テスト内容チェックリスト
1. Javaの基本
変数のスコープを定義する
Javaクラスの構造を定義する
main()メソッドがある実行可能なJavaアプリケーションを作成する
他のJavaパッケージをインポートしてコードでアクセスできるようにする
2. Javaのデータ型の操作
変数を宣言および初期化する
オブジェクト参照変数とプリミティブ変数を区別する
オブジェクトのフィールドに対して読取りと書込みを行う
オブジェクトのライフサイクルについて説明する
オブジェクトのメソッドを呼び出す
StringBuilderクラスおよびそのメソッドを使用してデータを操作する
文字列を作成および操作する
3. 演算子と決定構造の使用
Javaの演算子を使用する
カッコを使用して演算子の優先順位を変更する
==とequals()を使用して文字列と他のオブジェクトが等しいかどうかをテストする
ifおよびif/else構造を作成する
switch文を使用する
4. 配列の作成と使用
1次元配列を宣言、初期化、インスタンス化および使用する
多次元配列を宣言、初期化、インスタンス化および使用する
ArrayListを宣言および使用する
テスト内容チェックリスト
5. ループ構造の使用
whileループを作成および使用する
拡張forループを含むforループを作成および使用する
do/whileループを作成および使用する
ループの構造を比較する
breakとcontinueを使用する
6. メソッドとカプセル化を操作する
引数と戻り値があるメソッドを作成する
staticキーワードをメソッドとフィールドに適用する
オーバーロードメソッドを作成する
デフォルトコンストラクタとユーザー定義のコンストラクタを区別する
コンストラクタを作成および多重定義する
アクセス修飾子を適用する
7. 継承の操作
継承を実装する
ポリモフィズムの使用例を示すコードを開発する
参照の型とオブジェクトの型を区別する
キャストが必要なタイミングを判断する
superとthisを使用してオブジェクトとコンストラクタにアクセスする
抽象クラスとインタフェースを使用する
8. 例外の処理
チェックされる例外、RuntimeExceptionおよびエラーを区別する
try/catchブロックを作成し、通常のプログラム・フローが例外によってどのように変
更されるかを判断する
Javaで使用される例外について説明する
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 11
2. OCJP Silver SE 7 資格試験の
傾向と対策
OCJP Silver SE 7 試験の出題傾向
ソースコードをもとに、その結果を問う問題が多く出題されます
–
ソースコードはそれほど長くありませんが、出題数が多いので短時間で
コードの内容を把握できるかどうかがポイントです
1問あたり1分30秒
ペースで回答する必要があります
コンパイルエラーになるか?実行結果はどうなる?
要件に合致する実装を選ぶ問題も出題されます
Javaプログラミングの基礎をしっかり理解しておく必要があります
–
トピックごとの出題の偏りはほとんどありません
–
Silver試験のトピックはGold試験でも一部出題されます
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 13
1. Javaの基本
1.
変数のスコープを定義する
2.
Javaクラスの構造を定義する
3.
main()メソッドがある実行可能なJavaアプリケーションを作成する
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 15
このトピックでの出題ポイント
プログラムを評価する出題が多いです
–
コンパイルエラーの原因や実行結果を判断
–
変数のスコープは要確認
Javaアプリケーションの実行方法をチェックしましょう
–
java コマンドの使い方 (引数や実行可能なクラスなど)
–
mainメソッドの記述方法: public static void main(String[] args) { }
クラスの記述方法はシンタックスをきちんと確認しておきましょう
–
暗黙で補われる要素 (import/デフォルトコンストラクタ …)
2. Javaのデータ型の操作
1.
変数を宣言および初期化する
2.
オブジェクト参照変数とプリミティブ変数を区別する
3.
オブジェクトのフィールドに対して読取りと書込みを行う
4.
オブジェクトのライフサイクルについて説明する
5.
オブジェクトのメソッドを呼び出す
6.
StringBuilderクラスおよびそのメソッドを使用してデータを操作する
7.
文字列を作成および操作する
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 17
このトピックでの出題ポイント
プログラムを評価する出題が多いです
–
プログラムの実行結果や目的に合致する処理を選択
–
オブジェクトのフィールドへのアクセス方法
参照名.変数名など
–
変数(基本データ型, 参照型)の初期化
StringクラスとStringBuilderクラスのメソッドを確認しておきましょう
–
文字列を操作するメソッド (subString, replace …)
2. Javaのデータ型の操作
3.演算子と決定構造の使用
1.
Javaの演算子を使用する
2.
カッコを使用して演算子の優先順位を変更する
3.
==とequals()を使用して文字列と他のオブジェクトが等しいかどう
かをテストする
4.
ifおよびif/else構造を作成する
5.
switch文を使用する
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 19
このトピックでの出題ポイント
プログラムを評価する出題が多いです
–
プログラムの実行結果を選択
似たようなパターンの出題が多い
–
演算子の優先順位を確認
3. 演算子と決定構造の使用
4. 配列の作成と使用
1.
1次元配列を宣言、初期化、インスタンス化および使用する
2.
多次元配列を宣言、初期化、インスタンス化および使用する
3.
ArrayListを宣言および使用する
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 21
このトピックでの出題ポイント
プログラムを評価する出題が多いです
–
プログラムの実行結果を選択
配列とArrayListは次のポイントを確認しておきましょう
–
一次元配列、多次元配列
宣言方法と初期化、配列要素へのアクセス方法を確認
多次元配列は『配列の配列』
–
ArrayList
宣言方法とListの操作方法を確認
Java SE 7のダイアモンド演算子も要確認
4. 配列の作成と使用
5. ループ構造の使用
1.
whileループを作成および使用する
2.
拡張forループを含むforループを作成および使用する
3.
do/whileループを作成および使用する
4.
ループの構造を比較する
5.
breakとcontinueを使用する
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 23
このトピックでの出題ポイント
ループ文の基本構造をもう一度確認しておきましょう
–
while文とdo-while文の違い
条件式が評価されるタイミングを確認
–
for文の基本構成要素
for( 前置式; 条件式; 後置式 )
無限ループの作り方 (while文でも確認)
–
break, continue
ネストしたループ処理の制御方法
5. ループ構造の使用
6. メソッドとカプセル化を操作する
1.
引数と戻り値があるメソッドを作成する
2.
staticキーワードをメソッドとフィールドに適用する
3.
オーバーロードメソッドを作成する
4.
デフォルトコンストラクタとユーザー定義のコンストラクタを区別する
5.
コンストラクタを作成および多重定義する
6.
アクセス修飾子を適用する
7.
カプセル化の原則をクラスに適用する
8.
値を変更するメソッドに渡した場合のオブジェクト参照とプリミティブ値
に対する影響を判断する
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 25
このトピックでの出題ポイント
クラスの定義方法を問う出題が多いです
–
メソッド・コンストラクタの定義方法
デフォルト・コンストラクタとオーバーロード
–
static変数、staticメソッドとインスタンス変数、インスタンスメソッドの違い
変数へのアクセス方法
複数のインスタンスで変数を使用した場合の動きの違いなど
プログラムの実行結果を問う出題もあります
–
アクセス修飾子による可視性の違い (privateとpublicの違いなど)
6. メソッドとカプセル化を操作する
7. 継承の操作
1.
継承を実装する
2.
ポリモフィズムの使用例を示すコードを開発する
3.
参照の型とオブジェクトの型を区別する
4.
キャストが必要なタイミングを判断する
5.
superとthisを使用してオブジェクトとコンストラクタにアクセスす
る
6.
抽象クラスとインタフェースを使用する
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 27
このトピックでの出題ポイント
プログラムをもとに適切な実装を選択する形式の出題が多いです
–
継承、インタフェース、抽象クラスとも定義方法を確認
–
参照型のキャストルール
継承関係にあるオブジェクトの初期化処理を確認しておきましょう
–
スーパークラスのコンストラクタ呼び出し
–
自クラスでオーバーロードしたコンストラクタの呼び出し
7. 継承の操作
8. 例外の処理
1.
チェックされる例外、RuntimeException およびエラーを区別する
2.
try/catchブロックを作成し、通常のプログラム・フローが例外に
よってどのように変更されるかを判断する
3.
Javaで使用される例外について説明する
4.
例外をスローするメソッドを呼び出す
5.
一般的な例外クラスとカテゴリを認識する
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 29
このトピックでの出題ポイント
例外処理の基本構文を確認しましょう
–
try–catch-finally句の処理順
–
throwとthrowsの使い方
–
チェック例外と非チェック例外の違い
少し長めのプログラムを評価する問題が出題されるので注意しましょ
う
–
配列などの処理時に発生する実行時例外についても確認
8. 例外の処理
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 31
例題 1
次のコードの実行結果として正しいものはどれですか?
変数のスコープを定義する
1. public class Test {
2. int num;
3. void methodA() {
4. int num = 2;
5. methodB();
6. System.out.print(num);
7. }
8. void methodB() {
9. num = 3;
10. }
11. public static void main(String[] args) {
12. Test test = new Test();
13. int num = 1;
14. System.out.print(test.num);
15. test.methodA();
16. System.out.print(num);
17. System.out.print(test.num);
18. }
19. }
[選択肢]
1.
1233 が出力される
2.
0213 が出力される
3.
1213 が出力される
4.
0333 が出力される
解答 1
変数のスコープ … 変数が見える (=特定の識別子で参照できる) 範囲
–
インスタンス変数 / static変数 … クラス内の全てのブロックからアクセス
可能
–
ローカル変数 … メソッドやif文などの特定のブロック内でのみアクセス可
能
2. 0213 が出力される
1. public class Test {
2. int num;
3. public static void main(String[] args) {
4. int num = 1;
5. System.out.print(num);
6. System.out.print(test.num);
7. }
8. }
ローカル変数
numの有効範囲
インスタンス変数
numの有効範囲
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 33
例題 2
次のコードについて正しい説明はどれですか?
main()メソッドがある実行可能なJavaアプリケーションを作成する
1. public class Test {
2. public void main() {
3. System.out.println("main()");
4. }
5. public void main(String args) {
6. System.out.println("main(String)");
7. }
8. public static void main(String[] args) {
9. System.out.println("main(String[] args)");
10. }
11. public static void Main(String args[]) {
12. System.out.println("Main(String args[])");
13. }
14. }
[選択肢]
1.
main() が出力される
2.
main(String) が出力される
3.
main(String[] args) が出力される
4.
main(String args[]) が出力される
5.
実行時に例外がスローされる
6.
コンパイルエラーになる
解答 2
Javaアプリケーションの実行
–
JVMは指定されたクラスのmainメソッドを呼び出してクラスを実行する
mainメソッドは、public static void として宣言しなければならない
メソッド引数は文字列(String)の配列を受け取る
メソッドのオーバーロード
–
同一クラス内で引数リストが異なる同名のメソッドを宣言すること
引数リスト = 引数の型、数、順序
- ※ 戻り値は同一でなければならない
メソッド名や識別子は大文字小文字が区別される
3. main(String[] args) が出力される
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 35
例題 3
次のコードのついて正しい説明はどれですか?
1.
5行目が原因でコンパイルエラーになる
2.
6行目が原因でコンパイルエラーになる
3.
arrayFの値がindexの順に表示される
4.
arrayFの値がindexの逆順に表示される
配列を宣言および使用する
1. public class Test {
2. private float[] arrayF;
3. public static void main(String[] s) {
4. Test t = new Test();
5. arrayF = {1.0f, 2.0f, 3.0f, 4.0f};
6. for (int i = t.arrayF.length; i > 0; System.out.println(t.arrayF[i]))
7. i--;
8. }
9. }
解答 3
配列の宣言方法
ArrayListの宣言方法
2. 6行目が原因でコンパイルエラーになる
private String[] s = {"あ", "い", "う", "え"};
private String[] s = new String[4];
s[0] = "あ"; s[1] = "い"; s[2] = "う"; s[4] = "え";
List a = new ArrayList();
List<String> a = new ArrayList<String>();
配列の宣言と初期化
配列定数を使った配列の宣言と初期化
ArrayListの宣言
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 37
例題 4
次のコードの実行結果を正しく説明しているものはどれですか?
キャストが必要なタイミングを判断する
1. public class SomeClass {
2. public void methodA() {
3. System.out.println("SomeClass#methodA()");
4. }
5. public static void main(String[] args) {
6. AnotherClass ac = new AnotherClass();
7. SomeClass sc = new AnotherClass();
8. ac = sc;
9. sc.methodA();
10. ac.methodA();
11. }
12. }
13. class AnotherClass extends SomeClass {
14. public void methodA() {
15. System.out.println("AnotherClass#methodA()");
16. }
17. }
[選択肢]
1.
SomeClass#methodA()
SomeClass#methodA() が出力される
2.
SomeClass#methodA()
AnotherClass#methodA() が出力される
3.
AnotherClass#methodA()
SomeClass#methodA() が出力される
4.
AnotherClass#methodA()
AnotherClass#methodA() が出力される
5.
コンパイルエラーになる
6.
実行時に例外になる
解答 4
参照型のキャスト … 継承関係があることが前提
メソッドのオーバーライド
–
スーパクラスのメソッドをサブクラスで再定義すること
メソッドシグネチャ(戻り値、メソッド名、引数リスト)はスーパークラスのメ
ソッドと同じ
キーワード super で明示的に指定しない限りオーバーライドしたメソッドを呼
5. コンパイルエラーになる
スーパー
クラス
クラス
サブ
暗黙の型変換
キャストによる
型変換
代入
Tips: キャストしたクラスに互換性がなければ実行時に
ClassCastExceptionがスローされる
SomeClass sc = new SomeClass();
AnotherClass ac = new AnotherClass();
ac = (AnotherClass)sc; // 型に互換性がない
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 39
例題 5 - 例外処理
次のコードを正しく説明しているものはどれですか? (例外クラスは
適切にimportされているものとします)
1.
6行目でコンパイルエラーが発生する
2.
4行目でコンパイルエラーが発生する
3.
1行目でコンパイルエラーが発生する
4.
コンパイルは正しく行われる
try/catchブロックを作成し、通常のプログラム・フローが例外によってどのように変更さ
れるかを判断する
1. public static void exec() throws IOException, SQLException {
2. try {
3. // 例外が発生する処理;
4. } catch (Exception e) {
5. // 例外処理
6. throw e;
7. }
8. }
解答 5
Java SE 7 における例外処理の拡張
–
try-with-resources … AutoCloseableオブジェクトを暗黙的にクローズ
–
multi-catch節 … 同じ処理を行うcatch句をまとめて記述
–
再スロー時の型推論の改善
finally 句でExceptionオブジェクトを再スロー可能
4. コンパイルは正しく行われる
この問題がJava SE 6で出題された場合は6行目でコンパイルエラー
} catch(例外1 | 例外2 ex) {
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 41
受験前の学習方法
試験情報は受験前に必ず確認しましょう
できるだけ実際にプログラムを作成しましょう
–
ソースコードを『読む力』は試験でも実務でもきっと役に立ちます!
試験のための学習は …
–
Java SE API & ドキュメント
を参照しましょう
Oracle Technology Network > Java
にはお役立ち情報が満載です
–
市販の書籍を活用して試験の出題傾向をつかみましょう
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 43
試験情報サイト
試験のサンプル問題
試験情報サイトではサンプル問題が閲覧可能です
問題数は8問です。
試験の出題形式に慣れるための
例題です
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 45