プログラミングチャンネル相談室CodeCamp(コードキャンプ)のJavaマスターコースレビュー・感想|5日目ツイートシェアはてブGoogle+Pocketこんにちは。コードキャンプ株式会社が運営するプログラミングスクール「CodeCamp(コードキャンプ)」でプログラミングを学習している高橋です。高橋吾郎プログラミング初心者の高橋吾郎です!現在は全く別の業界で働いていますが、今後はシステムエンジニアとしてのキャリアに進もうと思っています。その準備として、JavaマスターOLコースでJava開発の基礎を学んでいきます!私が受けているコースは「Javaマスターコース」。Javaは、数あるプログラミング言語の中でも、日本国内において、特に求人案件数が多い言語です。CodeCamp(コードキャンプ)の「Javaマスターコース」では、Javaエンジニアには必須の「オブジェクト指向」から、「JSP/サーブレット」「データベース連携」まで、Javaを用いてWebアプリケーションを開発するために必要な知識を基礎から実践まで学びます。引用:CodeCamp(コードキャンプ)受講回数は2ヶ月(20回)、4ヶ月(40回)、6ヶ月(60回)の3つから選べます(今回は2ヶ月間受講します)。引用:CodeCamp(コードキャンプ)それでは、2018年11月2日に受講した、Codecamp(コードキャンプ)「Javaマスターコース」第5回目の学習内容をレビューします。CodeCamp(コードキャンプ)の「Javaマスターコース」とはJavaマスターコース5日目|CodeCamp(コードキャンプ)本日の講師は顔出しNGでした。第5回目のレッスンで学んだことは以下の内容です。第12章課題(抽象クラスとインターフェース)の答え合わせ第13章の答え合わせ今回は、受講までにJavaマスターコース第12章の課題である「抽象クラスとインターフェース」と13章の課題「ポリモーフィズム」までを予習しました。1.第12章課題(抽象クラスとインターフェース)の答え合わせ今回の課題は仕様書に従ってクラスを作成するというものでした。本日はよろしくお願いします。第12章の課題を作成してみたので、ご確認をおねがいします!先生よろしくお願いします。FigureクラスからCircleクラスまではできていますね、Polygonクラスについてはどうでしょうか。先生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章の課題はよさそうですね。次の課題を見てみましょうか。高橋吾郎これは12章の課題で書いたプログラムを使う問題ですね。Mainクラスについてはこんな風に書いてみました。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の無料体験を申し込むCodeCampの評価を見るCodeCamp(コードキャンプ)の「Javaマスターコース」とはCodeCamp(コードキャンプ)の「Javaマスターコース」は、Javaエンジニアになるために必要な知識を基礎から実践まで学べるコースです。無料で相談する編集部がプログラミングスクール選びのアドバイスをさせていただきます。「スクールがたくさんあり過ぎてどれを選べば良いのか分からない」「どの言語を勉強すれば良い?」「転職に有利なスクールはどこ?」など、どんな質問でもOKです!気軽にご連絡ください★CodeCamp(コードキャンプ)Javaマスターコースの評判・口コミ・レビューツイートシェアはてブGoogle+PocketfeedlyCodeCamp(コードキャンプ)のJavaマスターコースレビュー・感想|6日目CodeCamp(コードキャンプ)のJavaマスターコースレビュー・感想|3日目と4日目RECOMMENDこちらの記事も人気です。