クラスはデータだ!

データをセットで扱いたい

“名前:国語点数:数学点数”のテキストデータがあります。

これを成績順で並べるプログラムを途中まで作ってみました。途中までなのはやる気が失せたからです。とても人様に見せるプログラムではありません・・・

このプログラムの一番納得のできないところは、11行目~13行目です。

名前、国語の点数、数学の点数用の配列をそれぞれ定義しています。本来ならば名前と各点数はセットで管理すべきなのですが、それぞれ別の配列になっています。単純なプログラムではなんとかなりますが、複雑さが増してくるとセットで管理できないためプログラムが煩雑になるでしょう。

実はプログラム言語によってはデータをセットで扱う命令が用意されています。例えば次のようになります。

1行目~5行目でType命令によりデータセットstudentを定義しています。このデータセットの定義を使い、8行目で配列変数(students)を宣言し、各データへアクセスしています。

Javaにはクラスがある

Javaはデータをセットで定義するType命令が存在しません。その代わりにclassを使用します。「classって処理を記述する際の宣言じゃないの?」と思われたなら「classはデータをセットで定義する命令である。たまーに処理を書く」と思ってください。こちらの方がスッキリとするはずです。

38行目~42行目でクラスStudentを定義しました。これで名前、各点数をセットで扱うことができます。

11行目で定義したstudentを配列化し変数studentsに格納しています。※配列studentsは配列の個数を宣言しただけなので各配列の内容は何も定義されていません。

Student[]は配列宣言ですが、classはデータセットの定義だとイメージすればこの配列化も理解しやすいと思います。また、可変配列のArrayListでも次のようにクラスを使うことができます。

21行目~28行目で文字列データから配列studentsへデータを格納しています。22行目で1件分のデータセットを作り、各項目へ値を設定し、27行目で配列に格納しています。

クラスによりデータをセットで扱うことができました。少しだけ見られるプログラムになりましたが、まだまだ納得がいかないところがありますが、次にすすみましょう。

タイトルとURLをコピーしました