クラスとは

例として、テレビを取り上げてみましょう。テレビはひとりでにできあがったわけではありませんし、無計画に作っているわけでもありません。設計図があって、それを基に製造されています。ひとつの設計図を基に、外観や機能などが同じテレビを何台も作ることができます。オブジェクト指向におけるプログラムの基本も同じです。設計図を作成する作業をはじめに行ないます。それは、クラスを作成することによって行ないます。つまりクラスは、現実の世界で言う設計図のような役割を果たします。

設計してテレビを製造する
設計してテレビを製造する

では、そのクラスはどのように記述するのでしょうか。

クラス定義の書式
class クラス名{
  各種定義…
}

まずは、クラスを作成しましょう。

○ ファイル

次のようにファイルを作成してください。

ファイル名 Car.java

サンプルダウンロード

○ プログラム

次のようにプログラムを入力してください。

Car.java

  1. public class Car{
  2. }

○ 解説

1行目でCarクラスを宣言しています。publicはアクセス修飾子です。アクセス修飾子は後の節で説明します。

ここまでで、クラスである設計図の単位となるものを作成しました。これから、設計図に具体的な記述をしていくことになります。では、クラスには何を記述するのでしょうか。クラスは、基本的に次のような構成になっています。

クラスの構造
クラスの構造

○ フィールド ・・・ テレビで例えるなら、画面の明るさや、画面の濃さなどを表す特徴や属性。プログラムでは、変数で表現される。フィールド変数とも呼ばれる。

○ メソッド ・・・ テレビで例えるなら、テレビが持っている機能や操作。プログラムでは、関数で表現される。

クラス内で定義されるフィールドやメソッドをメンバーと呼びます。

フィールド定義の書式
データ型 変数名;
メソッド定義の書式
戻り値の型 メソッド名(引数リスト){
  処理;
}

先ほど作成したクラスにメンバーを記述しましょう。

○ プログラム

先ほど作成したクラスにフィールド・メソッドの記述をしましょう。今回は仕様として、車はスピードと燃料残をデータとして持ち、加減速する機能があるものとします。次のプログラムを追加してください。

サンプルダウンロード

Car.java

  1. public class Car{
  2.     //フィールド
  3.     public int speed;        //スピード情報
  4.     public double gas;        //ガソリン情報
  5.     
  6.     //メソッド
  7.     //加速させるメソッド
  8.     public void speedUp(int sp){
  9.         //ガソリンを減らす
  10.         this.gas -= sp / 10.0;
  11.         if(this.gas < 0){        //ガソリンがマイナスになる場合
  12.             //ガソリンを0に補正し、スピードを増やさない
  13.             this.gas = 0;
  14.         }else{
  15.             //スピードを増やす
  16.             this.speed += sp;
  17.         }
  18.     }
  19.     
  20.     //減速させるメソッド
  21.     public void speedDown(int sp){
  22.         //スピードを減らす
  23.         this.speed -= sp;
  24.         if(this.speed < 0){        //スピードがマイナスになる場合
  25.             //スピードを0に補正する
  26.             this.speed = 0;
  27.         }
  28.     }
  29. }

○ クラス図

Carクラス

○ 解説

3行目のフィールド変数では、スピード情報を保存します。この変数が0であれば停止している状態、0でなければ動いている状態を表します。4行目のフィールド変数では、ガソリンの残量を保存します。加速するとガソリン残量を減らします。

8行目~18行目は、加速するメソッドです。加速は、フィールド変数のスピード情報を増やすことによって表現します。引数で加速するkm/h数を受け取り、スピード情報に加算します。その際、加速分に応じてガソリン残量を減らします。このメソッド内で指定されている「this」は、自分を指すキーワードです。例えば、「this.speed」とあれば、フィールドのspeedを指し、「this.speedUp(1)」とあれば、自分から自分のspeedUpメソッドを呼び出していることを指します。

21行目~28行目は、減速するメソッドです。減速は、メンバー変数のスピード情報を減らすことによって表現します。引数で減速するkm/h数を受け取り、スピード情報に減算します。その際、ガソリン残量は減らしません。

ここまでで、クラスである設計図の記述方法を見てきました。あくまでも設計図のため、このままでは使用することができません。これを基に実物を作る作業が必要です。それに関して次の節で学習します。

前へ   次へ