初心者にオブジェクト指向を説明するときのサンプル

初心者用の書籍などでよくクラスやオブジェクト指向の説明にCarクラスが使われるが、
Carクラスを使ったサンプルプログラムがたいしてないばかり
なぜクラスやインターフェースを作らなければいけないのか、オブジェクト指向で書かなければいけないのかが
直感的にわかりにくく初心者に説明を求められることが多い
今回プログラム初心者に教えなければいけない何度目かの機会を得たので書いてみた

実行方法

このプロジェクト直下で以下のコマンドを実行する

java -cp bin carsample.CircuitTest 富士スピードウェイ 120 5
  • 引数1:サーキット場名
  • 引数2:サーキットの長さ(ターミナルの幅を超えない値を指定)
  • 引数3:サーキットレーン数(走らせる車の最大数)

このプログラムで伝えたいこと

  • インターフェースの持つ意味
  • Carクラスに必要なプロパティがあってその変更だけであれば、Circuitクラスは修正する必要がないことの重要性
  • オブジェクトとして分離されている

TODO

  • 車が折り返して右から左に走るときに車が右を向いたまま
  • 車の長さを使ってロジックを組んでいるところがあるけど、実際には配列の0インデックスをみてる
  • マルチバイト文字とか考慮してない
  • CPU処理速度がある程度あるマシンで動かすことを前提としている、遅いのだと描画をスキップしちゃうかも