CodeCamp(コードキャンプ)のJavaマスターコースレビュー・感想|5日目

こんにちは。コードキャンプ株式会社が運営するプログラミングスクール「CodeCamp(コードキャンプ)」でプログラミングを学習している高橋です。

高橋吾郎
プログラミング初心者の高橋吾郎です!

現在は全く別の業界で働いていますが、今後はシステムエンジニアとしてのキャリアに進もうと思っています。その準備として、JavaマスターOLコースでJava開発の基礎を学んでいきます!

私が受けているコースは「Javaマスターコース」。Javaは、数あるプログラミング言語の中でも、日本国内において、特に求人案件数が多い言語です。CodeCamp(コードキャンプ)の「Javaマスターコース」では、Javaエンジニアには必須の「オブジェクト指向」から、「JSP/サーブレット」「データベース連携」まで、Javaを用いてWebアプリケーションを開発するために必要な知識を基礎から実践まで学びます。

受講回数は2ヶ月(20回)、4ヶ月(40回)、6ヶ月(60回)の3つから選べます(今回は2ヶ月間受講します)。

それでは、2018年11月2日に受講した、Codecamp(コードキャンプ)「Javaマスターコース」第5回目の学習内容をレビューします

Javaマスターコース5日目|CodeCamp(コードキャンプ)

本日の講師は顔出しNGでした。

第5回目のレッスンで学んだことは以下の内容です。

CodeCamp(コードキャンプ)Javaマスターコース第5回目のレッスン内容

  1. 第12章課題(抽象クラスとインターフェース)の答え合わせ

  2. 第13章の答え合わせ

今回は、受講までにJavaマスターコース第12章の課題である「抽象クラスとインターフェース」と13章の課題「ポリモーフィズム」までを予習しました。

1.第12章課題(抽象クラスとインターフェース)の答え合わせ

今回の課題は仕様書に従ってクラスを作成するというものでした。

クラス階層 イメージ

仕様書(一部)

高橋吾郎
本日はよろしくお願いします。

第12章の課題を作成してみたので、ご確認をおねがいします!

先生
よろしくお願いします。

FigureクラスからCircleクラスまではできていますね、Polygonクラスについてはどうでしょうか。

自分で作ったPolygonクラス
※メソッドdraw()、perimeter()についてはShapeで宣言済

先生
abstractメソッドdraw()とperimeter()についてはShapeから継承されていますね。

しかしこのメソッドについて、Polygonクラスではabstractのままで、何の実装も与えていません。こういった場合には、このクラスでわざわざ書く必要は実はありません。コメントアウトしてみましょう。

コメントアウトしてみた

高橋吾郎
お、エラーがでませんね!
先生
このクラスでじゃ独自実装のgetInternalAngle()を持たせることが目的なので、13~15行目が大切ですね。getterとsetterについては必要なのでしょうか。
高橋吾郎
どうでしょう……。

一応カプセル化を図ってみました!

でも、今回は前回と違ってprotectedになっています。仕様書に指定されてのでこう書いてみましたが、getterやsetterは必要ないでしょうか。

先生
今回は変数angleの修飾子がprivateではなく、protectedになっていますね。

この修飾子がついていると、自分自身及びサブクラスから参照が可能になります。…というのは教科書の説明なんですが、自分の属する同じパッケージのクラスから直接参照が可能になっています。

結構広いんですね(笑)

高橋吾郎
なるほど。今回angleを使うのはTriangleなどのPolygonの継承クラスだけなので、privateにするのであればgetterとsetterは必要なさそうですね。

いらないものを除いたら大分すっきりしました!

高橋吾郎
これはangleのアクセス修飾子をprivateにするとカプセル化が可能ですよね?

どういう判断でprivateやprotectedの使い分けはすればよいでしょうか?

先生
getterやsetterの作成は手間がかかるので、使うのを避ける方もいます。

そのへんば現場のプロジェクトの規約で決まっていることが多いので、現場次第で変わるというのが実情ですね。

高橋吾郎
状況を見て使い分けが必要なんですね。わかりました!
先生
はい、残りのクラスも見ましたが、12章の課題はよさそうですね。次の課題を見てみましょうか。

2.第13章の答え合わせ

 

問題文と実行例

高橋吾郎
これは12章の課題で書いたプログラムを使う問題ですね。Mainクラスについてはこんな風に書いてみました。

出力したいものを入力

例えば2を入力するとLineクラスについてメソッドdraw()起動

高橋吾郎
今回はTriangleやSquareで別別に書いていますが、教科書にあったポリモーフィズムのことを考えると、draw()やperimeter()を実行する行がまとめられそうな気がしますが、どう書けばいいのか分かりませんでした……。
先生
メソッドのdraw()やperimeter()はもともとFigureクラスからサブクラスに継承されているものでしたね。

円や線といったものも、Shapeの一部です。これを全部Shapeとして扱うことで、メソッドをSwitch文の外側に出してみましょう。

仮にnullをいれてFigure型shapeを宣言

ShapeはFigure型なので、LineやCircle型のものも入れることができる。

先生
このようにしておくと、すべてのクラスについてメソッドをまとめて書けますね。

Switch文の外に書くことで行数が節約できました。

高橋吾郎
大分すっきりしましたね!

次にわからないところがあって、教科書ではInstanceofの解説もありましたが、どのように用いればよいでしょうか。

先生
今回の問題では「Polygon抽象クラスのサブクラスについては、内角の和も出力するものとする。」とありますね。

これはInstanceofを利用することで、「ShapeがPolygonクラスの場合のみ内角の和を表示する」というプログラムを書くことができます。

高橋吾郎
こういったように使うことができるんですね。

最初にFigureクラスで代入して、その後ダウンキャストやinstanceOfといったものを活用することで、種類のちがうものをまとめて扱うことできました!これはとても便利ですね。

先生
こういったように、実際に動かすときに変数の中にどのサブクラスのインスタンスが入っていても同じメソッドが使えるということが保証されているので、動くというのがいわゆるポリモーフィズムです。

結構ややこしい上に、説明を読んでいるだけでは何がうれしいのか若干見えづらいところがあります。前準備が大変なんですが、それができてしまうと今回のように、すごく楽にコードが書けるモノです!

高橋吾郎
確かに、最初に書いたものより大分短くなりました。

今後のコーディングに生かしていければと思います!本日はありがとうございました!

Javaマスターコース5日目の成果と課題|CodeCamp(コードキャンプ)

第5回を受講して学んだことと、次回に向けた課題について整理します。

  • 抽象クラスとインターフェース
  • ポリモーフィズム

今回は「抽象クラスとインターフェース」、「ポリモーフィズム」を学びました。

授業では13章の課題を終えることができたので、第6回に向けて、下記の課題に取り組みます。

  • 実行すると最初に現在のリストが表示されます。
  • 書籍を繰り返し登録することができるようにします。
  • 登録しようとした書籍データで書籍名と著者名が同じものが登録済みの場合は、追加できないものとします。
  • また、書籍は最大5冊まで登録できるものとします。空きスペースがなくなったらプログラムを終了します。

出典:CodeCamp(コードキャンプ)「Javaマスターコース」教材

Javaマスターコース5日目の感想|CodeCamp(コードキャンプ)

今回も、予習の段階では完全には教科書の内容が頭の中で整理できていなかったので、先生の解説によりポリモーフィズムへの理解を深めることができました。

今後、プログラムを書く際にはポリモーフィズムの利用ができないか設計段階で考えて、より省力的なコーディングを心がけていきたいと思っています!

CodeCamp(コードキャンプ)の「Javaマスターコース」とは

CodeCamp(コードキャンプ)の「Javaマスターコース」は、Javaエンジニアになるために必要な知識を基礎から実践まで学べるコースです。

>>無料体験レッスン受講で10,000円OFFクーポンプレゼントキャンペーン実施中

CodeCamp(コードキャンプ)「Javaマスターコース」の料金

2ヶ月
  • 料金:148,000円(税抜)
  • レッスン回数:20回
  • 受講期間:60日間
  • 週の学習時間目安:20〜25時間
4ヶ月
  • 料金:248,000円(税抜)
  • レッスン回数:40回
  • 受講期間:120日間
  • 週の学習時間目安:10〜15時間
6ヶ月
  • 料金:298,000円(税抜)
  • レッスン回数:60回
  • 受講期間:180日間
  • 週の学習時間目安:5〜10時間

LINE@無料相談

無料で相談する

編集部がプログラミングスクール選びのアドバイスをさせていただきます。「スクールがたくさんあり過ぎてどれを選べば良いのか分からない」「どの言語を勉強すれば良い?」「転職に有利なスクールはどこ?」など、どんな質問でもOKです!気軽にご連絡ください★