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

この記事を書いた人

プログラミングチャンネル編集部

30社以上のプログラミングスクールを取材してきた編集部が、プログラミングスクール選びのアドバイスをさせて頂きます。

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

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

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

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

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

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

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

本日の講師:勝田郁郎先生

普段はSOHOにてWEB系、ソーシャルゲーム関連の開発を行っております。
実務に基づいた使えるスキルを丁寧に解りやすくお伝えいたします。

現在学んでいる箇所では無い箇所の質問も、是非して下さい。
どんな質問を何度して頂いても構いません。
理解し、使いこなせるようになるまで、お手伝いさせて頂きます。
いっしょに頑張りましょう。

引用:CodeCamp(コードキャンプ)

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

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

  1. 第14章の答え合わせ

  2. 第15章の答え合わせ

今回は、受講までにJavaマスターコース第14章の課題である「日付とオブジェクト」と15章の課題「例外処理」までを予習しました。

1.第14章の答え合わせ

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

今回は14章の課題の答え合わせからお願いします。

14章課題本文

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

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

勝田郁郎先生
今日は本の課題ですね。

これはJavaではよくあるクラスの構造です。has-aの関係っていうんですけど、本棚は本を所有しているっていう構造を表現したいときに用いるものですね。

高橋吾郎
今回、コンストラクタBookShelfクラスのコンストラクタはデフォルトのものでもよいので、作るかどうか迷ったのですが、これはどういった基準で判断すればよいでしょうか。
勝田郁郎先生
そうですね。

確かにコンストラクタを作らないと、デフォルトコンストラクタが自動で作られます。ですが、コンストラクタを作らないといということは「ないといえばない」んですね。

高橋吾郎
そうなんですか!?
勝田郁郎先生
そういう状態にしておくと、果たしてコンストラクタがあえて作っていないのか、作るのを忘れているのか分からなくなってしまうケースが生じます。

例えば時間をおいて自分の書いたプログラムを見たときもしくは人の書いたプログラムを見るときにコンストラクタを省略してしまうと、省略しているのか、これから作業が必要なのかどうかわからなくなってしまいますね。

高橋吾郎
たしかに、そうですね。
勝田郁郎先生
よくいわれるのは、プログラムを書くときには「省略していいものは省略してしちゃダメ」といわれています。明示的にするってことですね。

「何にもしないコンストラクタをつくってあります!」ってことをほかの人や未来の自分に対して伝えることができます。コメントで「コンストラクタではなにもしない」と書いてあげたりします。

プログラムを書いていて自分が信用できるってことはないので、「これで完成している」ってことを省略しないで書いてあげたほうがきれいなプログラムと言えますね。

高橋吾郎
誰がみても分かりやすく書くための工夫ですね。気を付けます!

次の質問です。今回、本棚に入る本が5冊までなので、コンストラクタ内で5冊まで入るということを定義してしまいました。あまり綺麗ではないかな、と思ったのですが、いかがでしょうか。

自分で書いたコンストラクタ

勝田郁郎先生
はい。これでも構わないのですが、コンストラクタ内ではfinalの変数としておいて、先頭のほうで宣言しておくと、何か所か出てきたりする場合には便利でキレイですね。

クラスの最初にfinal宣言して使う

高橋吾郎
最大回数を5という数値をMainクラスで宣言してもいいのかな、と思いましたがBookShelfクラス内で行ったほうがよいでしょうか。
勝田郁郎先生
本の冊数は誰が管理しているという問題になりますね。

そう考えると、何冊持てるかというのは本棚が決めるべきと思います。なぜかといいますと、例えば変数maxをMainクラス側に持たせておくと、密接な関係にあるMainクラスとしか動くことができなくなってしまいます。

高橋吾郎
確かに、Mainクラス側も、BookShelf側も互いに相手の存在を前提に書かなければいけなくなってしまいますね。
勝田郁郎先生
こういう状態を「結合度が密である」という言い方をします。

「お前と一緒じゃないと動けない」ってことですね。これはよくない状態とされています。クラス間の結合度は素である、独立している状態のほうがよいとされています。

高橋吾郎
どちらのクラスのことなのかを考えるのが大切ですね。わかりました!
勝田郁郎先生
次にいきましょうか。

ん、52行目でwhile文を使っているのは何か理由がありますか?

BookShelfクラスのメソッドzaikoCheck

高橋吾郎
なんでしょう(笑)

確かにfor文でも良さそうですが、あまり意識していませんでした。

勝田郁郎先生
ここは何週回すかっていう回数の話ですね。

できればその場合はfor文のほうがベターですね。51行目のや56行目のloop++をfor文では1行で書けるので、キレイに書くことができます。

高橋吾郎
こっちのほうが簡単に書けますね!
勝田郁郎先生
回数を書いているっていうことを強く表現しているのでぱっと見わかりやすいですね。

それに対して、while文は「条件を満たすまで何回でも何百回でもやるぜ!」っていう時に使うイメージです。

高橋吾郎
確かに、今回はbookNumの数値はループの開始時に定まっているので、その必要はなさそうですね。
勝田郁郎先生
このプログラムでも価格を入力する部分がありますね。

このときに「あいうえお」とか入力されたときに先に進みたくありませんね。こういったときにwhile文が使うと。「何億回であろうとお前が数字を入力するまでは先に進ませない」というようなプログラムが書けます。

高橋吾郎
そういうイメージですね(笑)

これからは意識して使ってみたいと思います!

ループ部分をfor文に変えた

勝田郁郎先生
ほかの部分も問題なく動いてばっちりそうですね。

一点だけちょっと分かりやすいプログラムにしてみましょう。

52行目のequalsというメソッドについてですが、現在これはStringクラスのメソッドとして使っておられますね。これは実はObjectクラスからオーバーライドされているものなんです。これ、Bookクラスにオーバーライドすることで、カッコの中で名前や著者をStringクラスのものとして足さなくても書くことができます。

bookクラスにequalsメソッドを加えた

52行目がすっきりしました!

高橋吾郎
大分シンプルになりましたね。

繰り返し行う場合には便利に使えそうです。オーバーライドも意識して使っていこうと思います!

勝田郁郎先生
今回のプログラムではもう一点オーバーライドを活用してみましょう。displayメソッドを見てみましょう。

自分で書いたBookShelfクラス内displayメソッド

勝田郁郎先生
System.out.println()って実はすごいメソッドで、引数が数字でも文字列でもいいものなんです。オブジェクトでもいいんですけど、実はオブジェクトを渡されたときには中でtoString()というメソッドを使っています。

このtoString()というメソッドはObjectクラスのメソッドなので、Bookクラスでもオーバーライドすることができます。ちょっとやってみましょう。

BookクラスにtoString()メソッドを追加

勝田郁郎先生
BookクラスでもtoString()が使えるようになりました。

そうすると、System.out.println()の中にbookクラスを入れた場合に、この形式で表示されるようになります!

書き換えたdisplayメソッド

高橋吾郎
これもまたスゴイ!よく使いそうですね。
勝田郁郎先生
すっきり書くことができるので、新しいクラスを作る際にはtoString()メソッドを作ることをお勧めしています。

次の課題を見てみましょうか。

2.第15章の答え合わせ

15章課題

高橋吾郎
これはユーザ定義例外を作成するという問題だと思うんですけど、どういった書き方なのかわからなくて……。if文で書いてしまいました。

自分の書いたプログラム

勝田郁郎先生
確かに今回の課題はMainクラスだけでやるので、if文でも問題なさそうですね。

ただ、複数クラスに関係するプログラムだと、呼び出し元でエラーを処理したいケースが考えられます。実際に例外を作るときは名前だけって作るのでも大丈夫ですね。こんな感じです。

例外クラス:UnderNumberException

高橋吾郎
え、これだけでいいんですね(笑)
勝田郁郎先生
例外クラスは中身のないボールみたいなイメージですね。

こうしておくことでUnderNumberExceptonをthrowすることができるようになります。

書き換えたプログラム

高橋吾郎
お~、確かに新しい例外として認識されていますね。こんなに簡単だと思いませんでした(笑)

例外の定義はできましたね。次に質問なのですが、finallyの意味はなんなんでしょう。無いと何か問題があるのでしょうか。

勝田郁郎先生
プログラム読んでいる人にとってtry~catchの後処理なんだなって知らせるためのものです。

書かなくてもいいのですが、ここまででひとくくりだよ、っていうことが分かりやすくなるのでプログラムとしてはきれいに見えますね。

高橋吾郎
そうだったんですね。よくわかりました。

きれいなコーディングを心がけていきたいと思います!

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

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

  • 日付とObjectクラス
  • 例外処理

今回は「日付とObjectクラス」、「例外処理」を学びました。

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

Java基礎OL最終課題 「Big or Small」ゲーム作成(抜粋)

Javaマスターコース6日目の感想|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時間