見出し画像

08/23 Java Bronze SE


■学習時間

15:40-16:50 約1時間
19:30-22:40 約3時間
第5章 116~157P 合計 4時間
確認した問題数 17問/17問 

■学習内容

1.黒本 問題及び解答 約1時間
2.黒本 解説及び分析 約3時間
3.黒本 合計 約4時間

第5章オブジェクト指向の概念と各問のテーマ

■第5章 オブジェクト指向の概念

1.カプセル化
2.データ隠蔽
3.抽象化とポリモーフィズム
4.情報隠蔽
5.型、クラス、インタフェース
6.has-a関係とis-a関係
7.具象クラスと抽象クラス

■第5章 問題数 17問

 問題数 17問
目標速度 各問*30秒(読解力と速度を両立することを意識)
名目速度 各問*55秒(本試験、60分/65問から算出)
解答時間 16:32/15.58分
 正答率 ‐‐/‐‐

■1周目

正答率よりも理解と問題の回転数を上げることに優先順位を置く。

■用語の意義

1.カプセル化
カプセル化は、関係するデータをまとめ、さらにそのデータを使う処理をまとめて、1つのモジュールとして定義すること

2.データ隠蔽
フィールドのアクセス修飾子をprivateにすることで、他のクラスからフィールド(属性)を参照できないようにすること

3.抽象化とポリモーフィズム
対象から注目すべき要素を抜き出し、それ以外を無視することによって複雑な問題を単純化する方法を抽象化という。抽象化した型でインスタンスを扱うことをポリモーフィズムという。

4.情報隠蔽
抽象化によって単純化されたモジュール間の関係を維持するために必要な設計原則。公開すべきものと非公開にすべきものを分け非公開にすべきものを隠蔽するよう設計するという原則。非公開によるアクセス制御が抽象化の効果を維持する。

5.型、クラス、インタフェース
Javaのプログラムはコンパイルや実行時に「型」と「実装」に分けて扱われる。この「型」を表したものをインタフェースという。

6.has-a関係とis-a関係
①has-a関係
対象となる「ものごと」がどのような要素で成り立っているか「分解」し、ものごとの構成関係を表すのが「has-a関係」である。クラスは構成要素(has-a:持っていること)をフィールドで表現する。

②is-a関係
継承関係(「である」の関係)を表すのが「is-a関係」である。
is-a関係は、以下の関係で表現する。
・サブクラスis-aスーパークラス
・実装クラスis-aインタフェース

7.具象クラスと抽象クラス
クラスには抽象クラスと具象クラスがある。2つの違いは抽象メソッドを持っているか否かである。
・抽象クラスは継承を前提としたクラス
・具象クラスは実行するためのクラス

■過去問分析

1 カプセル化の概念
変更に強いソフトウェアを設計するための設計原則の一つ。カプセル化は、関係するデータをまとめ、さらにそのデータを扱う処理をまとめて、一つのモジュールとして定義すること。

2 カプセル化の実現方法
カプセル化を実現する方法は2つ
①関係するデータをまとめる
②まとめたデータを必要とする処理をまとめる
カプセル化はデータ隠蔽と組み合わせて完成する。

3 データ隠蔽の概念
データ隠蔽の目的は、カプセル化の維持。当初の設計を無視した修正を未然に防止するためにフィールドを隠蔽し他のクラスからのアクセスを拒否する「データ隠蔽」が必要となる。

4 データ隠蔽の実現方法
データ隠蔽は、アクセス制御で実現する。フィールドのアクセス修飾子を「private」にすることで他のクラスからのフィールドを参照できないようにする。他のクラスが直接参照するとコンパイルエラーが表示される。

5 データ隠蔽の概念
データ隠蔽の目的は、カプセル化の維持と属性の公開範囲の制限。
他のクラスのフィールドに直接アクセスしないようにsetterメソッドやgetterメソッドを利用することは出来るが、カプセル化を意識しない上での安易な利用は避けるべきで必須ではない。

6 抽象化の概念
ソフトウェア開発でソフトウェアが解決すべきビジネス上の課題のことを問題領域、こうした複雑かつ増え続けた問題領域を小さな単位に分割し単純化することで個別に解決しながら大きな問題を解決する手法を分割統治と呼ぶ。これをJavaではカプセル化という方法で対応する。

抽象化では、共通点を持つオブジェクトをまとめて、それぞれのオブジェクトの違いを無視して1つの型で扱うことでモジュールの連携個所を減らしてソフトウェアを単純化する。

7 コードにおける抽象化の表現
オブジェクトを抽象化して扱うことをポリモーフィズムという。ポリモーフィズムでは継承やインタフェースを使って抽象化を表現する。ポリモーフィズムを問われた場合、変数の型ではなく、実際に動作するインスタンスはどの型なのかを確認する。

8 コードにおける抽象化の表現
抽象化は共通部分だけを抽出しそのほかの部分を無視することで複雑な構造を単純化する技法。ポリモーフィズムは継承やインタフェースの実装によって抽象化を実現する。サブ、スーパー間でのオーバーロードは多重実装であるため、共通していると認識されない。

9 ポリモーフィズムの特徴
①どの型で圧あっていても実際に動作するのはインスタンスそのもの。
②使う側のクラスの共通化して扱える型だけ知っていればよい。
③使う側が使われる側の変更の影響を受けることはない。
④影響を受けるのは、共通化して扱える型が変わったときのみ。

10 情報隠蔽の概念
情報隠蔽は、抽象化の効果を維持するために必要な設計原則。
①公開すべきところは抽象化によって着目した共通部分。
②非公開にすべきところは逆の共通部分以外の部分。

11 情報隠蔽の実現方法
公開部分はインタフェースとして定義する。抽象化されたモジュール群はインタフェースを実現するよう実装し、ポリモーフィズムによって実際に宇郷インスタンスの型を隠蔽する。
非公開部分はパッケージやアクセス修飾子をつかってアクセス制御される。

12 インターフェースの概念と特徴
インタフェースは情報隠蔽の実現方法である。
インタフェースの特徴は、
①実装を持たないメソッド宣言のリスト。
②実装を持たないため、インスタンス化できない。
③実装は、インタフェースを実現したクラスが提供する。
④メソッドの宣言以外には、定数のみ定義できる。

13 抽象化、ポリモーフィズム、 情報隠蔽の概念
①抽象化は型の情報で行われ、同じ型であれば同じ種類であることを意味する。
②ポリモーフィズムは、抽象化した型でインスタンスを扱うことをいい、抽象化はポリモーフィズムそのものともいえる。
③情報隠蔽はソフトウェア内の公開する型を定め、それに対応する実装を隠蔽すること。ポリモーフィズムと深い関わりがある。
④データ隠蔽は外部のモジュールから内部のデータを隠蔽すること。カプセル化に深く関わる設計原則のこと。
⑤カプセル化は、関係するデータとそのデータを使う処理をひとまとめにする単体のクラスについての設計原則のこと。ポリモーフィズムとは直接関りがない。

14 has-a関係の意味とコードでの表現
has-a関係はフィールドで表現される。

15 is-a関係の意味とコードでの表現
is-a関係は、以下の関係で表現される。
①サブクラスis-aスーパークラス
②実装クラスis-aインタフェース

16 型の互換性
ポリモーフィズムの問題では、以下を確認
①変数の型
②インスタンスの互換性
※UMLのクラス図を記述すると理解しやすい。

17 具象クラスと抽象クラスの特徴
具象クラスは、実行するためのクラスであり、すべてのメソッドが実装済みでなくてはならない。
抽象クラスは、具象クラスとインタフェース両方の性質を併せ持つ実装済みのメソッドに加えてインタげーすのように抽象メソッドを定義できる。

■振り返り

理解するためにググったり、chatGPTに投げるのは実務では必要なスキルであるが、こと資格勉強に関しては時間と労力を増やしているため無駄が多い気がした。
解答解説で理解できないものに関しては紫本で読み返したところ最低限の説明で収まっていたため、やはり紫本と黒本をセットで受験勉強するのが効率が良いと思える。

■参考書


■今後の方針

優先順位
1.問題文を読む
2.すぐに解答解説を読む
3.考えをまとめる
※短い時間でも可能な限り多くの問題に触れ、問われていることを理解することを優先する。自力で解くのはまず1周を早く終えてからにする。

時間が足りないので普通に解いて、解説を読む余裕はない。

この記事が気に入ったらサポートをしてみませんか?