【java 基礎知識】 クラスの定義方法について学ぼう

■ クラス図を書こう

クラスを作成する前に、クラスが「どのような属性や操作を持っているか?」について考えましょう。 下図のようにクラスの設計内容を上から「クラス名」、「属性」、「操作」と並べる書き方をクラス図といいます。

ここでは「社員(Shain)」というクラスを、描いたクラス図になるようプログラムコードを組んでいきたいと思います。





■ クラスの宣言

まずは、外枠となる「Shain クラス」を作成します。

public class Shain {
}


java のソースコードを記述したファイルの保存名には以下のルールがあるから気をつけてね!今回の場合は、「 Shain.java 」だね。

if 文ソースファイルの保存名   クラス名.java




■ 属性の宣言

上のクラス図では、今回作成した「社員」というクラスに「名前」「能力値」という属性を持たせたいと思っています。このとき、それぞれのデータ型に注意してください。

「名前」は文字列なので String 型 で、「能力値」は値なので int 型 となります。
これらの変数を最初に作成した「Shain クラス」内に宣言してみましょう。

public class Shain {
 String name ; ← 「名前」の宣言を追加
 int value ; ← 「能力値」の宣言を追加
}


これで、「Shainクラス」に属性を追加することができました。
このようにクラスブロックの中に宣言された変数を、Java ではフィールドといいます。

データ型って何?



■ 操作の宣言

クラス図では、「Shain クラス」に「営業」、「デスクワーク」、「休憩」という3つの操作を与えています。 これらを一度にプログラミングするのは大変なので、まずは「営業」から作ってみます!

「営業(eigyou)」操作には、能力値が5上昇するという処理内容を与えたい思います。

public class Shain {
 String name ;
 int value ;
 void eigyou( ) {
  this.value + = 5 ; ← 能力値を5上昇させる
  System.out.println ( this.name + "は、能力値が5上昇した!" ) ;
 }
}

これで「営業」という操作に処理を与えることができました。
ちょっと難しいかもしれませんね(;´Д`)。
勉強していくうちに理解できるようになるかと思います。

ちなみに、ここで使われている this は「自分自身のインスタンス」を意味します。「 this.value + = 5 ; 」は、「自分自身のインスタンスの value フィールドを5増加する」という意味になります。


if 文フィールド使用時の注意点
this を省略してしまうと、エラー発生の原因になる場合があるので、フィールド使用時は「this」を付けるように心掛けよう!




■ クラスを完成させる

前の項目で、「営業(eigyou)」操作のみを記述しました。 今度は、残りの「デスクワーク」、「休憩」メソッドを追加していきます。

「デスクワーク(desk)」操作には毎秒、能力値が1上昇、「休憩(rest)」操作には能力値が0になるという処理内容を与えたい思います。

public class Shain {
 String name ;
 int value ;
 void eigyou( ) { // 営業メソッド
  this.value + = 5 ; ← 能力値を5上昇させる
  System.out.println ( this.name + "は、営業をした!" ) ;
  System.out.println ( 能力値が5上昇した" ) ;
 }
 void desk(int sec) { // デスクワークメソッド
  this.value + = sec ; ← 毎秒、能力値を1上昇
  System.out.println ( this.name + "は、" + sec + 秒間デスクワークした!" ) ;
  System.out.println ( "能力値が" + sec + "上昇した" ) ;
 }
 void rest { // 休憩メソッド
  this.value = 0 ; ← 休憩すると能力値が0になる
  System.out.println ( this.name + "は、休憩をした!" ) ;
  System.out.println ( "能力値が" + this.value + "から0になってしまった" ) ;
 }
}


これで、クラス図で作成したプログラムの完成です。

クラスを作成することで、そのクラスに基づいたインスタンスを簡単に生成できるようになりました。では次は、全てクラスを統括するMain クラス(Mainメソッド)を作成してみましょう!

NEXT. Main クラスを作成しよう






ひとり言アドバイス

Java 基礎