クラスとは?~初心者向けJava解説~オブジェクト指向におけるクラスについてイメージ解説

オブジェクト指向を理解するためにはまず、クラスを理解しなくてはなりません。
結論から言うと、「クラスとは」を理解するには、工場のようなイメージを持つと理解しやすいと一般的には言われています。
しかし今回皆さんにイメージしてほしいのは、専門学校のクラス(学級)です。
同じ「クラス」という言葉なのでこちらの方が理解しやすいのではないでしょうか。
以下で詳しく見ていきましょう。
※コードエディタをインストールしていない方は以下のリンクからeclipseをインストールして、プログラムを書く環境を整えましょう。
プログラミングを始めよう!~Javaを書くための環境を作ろう~
専門学校のプログラミング学科の生徒クラスを想定
「専門学校のプログラミング学科の生徒」クラスからは毎年多くの生徒が卒業していきます。
その生徒たちはみな個性があってそれぞれの持つ能力やステータスは違いますが、「専門学校のプログラミング学科の生徒」という点では共通しています。
オブジェクト指向ではこの「専門学校のプログラミング学科の生徒」という共通点を「モノ」として扱い、一つ一つの生徒に対してステータスを割り振ることで、様々なステータスの生徒を生成している、という風にとらえます。

上記をコードに表すと以下のようになります。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
// // public class ProgrammingSchoolStudent { //コードの最上部でプロパティ(ステータス)を記述。今回は性別、名前、スキル、就職先がこれに該当。 //このクラスから生み出されるすべての生徒オブジェクトにこれらのデータを入れる箱が用意されます。 String seibetsu; String name; String skill; String syusyokusaki; //このクラスから生み出されるオブジェクトにステータスを設定していく処理。 //Mainクラスから、女性、ギャル、中級者、大手企業などの詳しいデータを受け取り、 //生成したオブジェクトにデータを付与します。 public ProgrammingSchoolStudent(String seibetsu, String name, String skill, String syusyokusaki) { this.seibetsu = seibetsu; this.name = name; this.skill = skill; this.syusyokusaki = syusyokusaki; System.out.println("新しく" + name + "さんのオブジェクトを生成しました。"); } //以下はこのオブジェクトが取る行動を定義している部分です。 //働く、卒業する、などこの生徒の動きを記述します。 public void Work(String name) { System.out.println(name + "は働いた。"); } } |
上記のコードをすべてコピーし、ProgrammingSchoolStudent.javaファイルに貼り付けてください。
記事の後半でこのコードを使って、オブジェクトを動かしてみます。
ファイルの作り方がわからない、という方は以下のリンクからeclipseでプロジェクトを立ち上げる方法、クラスファイルの作り方を確認し、ファイルを作成してください。
eclipseで新しいプロジェクトを立ち上げ、プログラムを書いてみよう
クラスに記述すること、コードの構成
上記で紹介した記述の構成を日本語で解説していきます。
ザックリいうと以下のような構成となります。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
// // public class プログラミング学科の生徒{ //プロパティ(ステータス)定義 1つ目のデータの型 変数名; 2つ目のデータの型 変数名; 3つ目のデータの型 変数名; 4つ目のデータの型 変数名; //コンストラクタ部分でオブジェクトを生成し、データを付与 public クラス名(1つ目の引数, 2つ目の引数, 3つ目の引数, 4つ目の引数){ 1つ目の引数をこのオブジェクトに付与; 2つ目の引数をこのオブジェクトに付与; 3つ目の引数をこのオブジェクトに付与; 4つ目の引数をこのオブジェクトに付与; 「オブジェクトを生成しました」と画面に表示 } //メソッド部分でこのオブジェクト(生徒)がとる行動を定義 public 戻り値のデータ型 メソッド名(名前の引数){ 「"名前の引数" が働いた。」と画面に表示 } } |
Mainクラスで命令を記述し、オブジェクトを動かす
今まで書いたプログラミングスクールステューデントクラスで生成されたインスタンスを動かすためには、Mainクラスで命令を実行する必要があります。
このメインクラスでは基本的に、インスタンスの生成、メソッド呼び出しの二つが定義されます。
実際のコードは以下のようになります。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
// // // ProgrammingSchoolStudentクラスを動かすためのMainクラス public class Main { // プログラムのエントリーポイント public static void main(String[] args) { // 新しい生徒のオブジェクトを作成 // 引数として「性別」「名前」「スキル」「就職先」を渡します。 // 引数のデータはMainクラスからProgrammingSchoolStudentクラスに渡されます。 ProgrammingSchoolStudent student = new ProgrammingSchoolStudent("女性", "花子", "上級者", "Google"); // オブジェクトのメソッド(行動)を呼び出す // student.Work(引数)で、ProgrammingSchoolStudentクラス内のWorkメソッドを実行します。 // ここでは「働く」という行動を実行しています。 student.Work(student.name); System.out.println("------------------------------------"); // オブジェクトのプロパティ(ステータス)にアクセスして情報を表示 System.out.println("名前: " + student.name); System.out.println("性別: " + student.seibetsu); System.out.println("スキル: " + student.skill); System.out.println("就職先: " + student.syusyokusaki); } } // // |
上記のコードをすべてコピーし、新しく作ったMain.javaファイルに貼り付けてください。
現在プロジェクト内に「Main.java」ファイルと「ProgrammingSchoolStudent.java」ファイルの二つが存在し、それぞれのファイルに、前述したコードが記述されていることを確認してください。
その状態で実行を押下すると、結果が表示されます。


↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

すべての命令が実行され、Mainで渡した情報をもとにインスタンスが生成され、プログラミングスクールステューデントクラスのメソッドが実行されていることがわかります。
こういった記述したものの動きを視覚的に確認し、繰り返し練習することでコードと考え方に慣れていきましょう。
今時点でわからないことがたくさん出てきているはずです。わからないことを一つずつ解決して、プログラム脳を育てていきましょう。

