前回は関数について、記載してみました。
今回はクラスについて書いています。
クラスはオブジェクト指向プログラミングと呼ばれる方式でプログラムを作成していくときに使っていきます。
こちらではクラスの概念を学んだ後に、実際にjavaのコードを見て、クラスの使い方を理解していきます。
クラスについては、プロパティ・メソッド・インスタンス化・コンストラクタなど基本的な箇所について書いています。
カプセル化・継承・ポリモフィズムについては別記事にまとめる予定です。
「オプジェクト指向とは何か」と言った概念の説明は少しだけ簡単にして、コードの方に焦点を当ててイメージを掴んでいきます。
なんとなく概念が分かったら、実際に書いてみると理解しやすいかと思います。
それぞれのプログラミング言語で、クラスの書き方などが違うので実際に使用する場合は言語仕様を確認しましょう。
それでは、クラスについて確認していきましょう。
クラスとは?
クラスについて
クラスはオブジェクト指向プログラミングと呼ばれる方式で、プログラムを作成していくときに使っていきます。
再利用可能な部品を複数作成することで、効率的にプログラムを実装していくことができます。
オブジェクト指向はモノを使うイメージです。モノには名前などのプロパティと振る舞い(メソッド)が存在します。
例えば、動物には名前があって、振る舞いとしては走るや鳴くなどです。
クラスは、よく設計図に例えられます。
設計図だけでは動かすことができず、クラスを使うときにはインスタンス化して使う必要があります。
例えば、車の設計図がクラスだとすると、設計図から車を作る行為がインスタンス化です。
javaで動物(Animal)のクラスを作成してみました。
class Animal {
private String genericName;
private String name;
private String voice;
Animal(String genericName,String name,String voice) {
this.genericName = genericName;
this.name = name;
this.voice = voice;
}
public void showVoice() {
System.out.println("我輩は"+ this.genericName + "である。名前は" + this.name + "。鳴き声は" + this.voice + "!");
}
}
プロパティについて
Animalクラスには、総称(genericName
)・名前(name
)・声(voice
)が文字列で定義されています。
private String genericName;
private String name;
private String voice;
これがプロパティになります。
プロパティはオブジェクトが持つデータです。ここでは、総称・名前・声というデータを定義しています。
メソッドについて
AnimalクラスにshowVoice
と書いていますが、これがメソッドです。
public void showVoice() {
System.out.println("我輩は"+ this.genericName + "である。名前は" + this.name + "。鳴き声は" + this.voice + "!");
}
メソッドはオブジェクトが持っている振る舞い(処理)のことになります。
クラスをインスタンス化して、呼び出すと関数のように使うことができます。
引き続きコードを見て確認していきましょう。
クラスを使用したコードを見てみよう
javaのコードで、引き続き基本的なところを確認してみましょう。
インスタンス化について
インスタンス化するときは、このようにします。
Animal cat = new Animal("猫", "たま", "にゃー");
javaではnewを使用してインスタンス化します。
他の言語でも大体はnewが使われていると思います。
こうするとAnimalクラス(設計図)を元に、catというオブジェクトが作成されます。
これがインスタンス化です。
メソッドを使う
メソッドを呼ぶ場合には、下記のように使用します。
cat.showVoice();
インスタンスから、こうするとメソッドを呼ぶことができます。
このメソッドは、プロパティの値を使って文字列を出力しています。
コンストラクタについて
先ほど、提示したコードについて、もう少し詳しく説明します。
Animal cat = new Animal("猫", "たま", "にゃー");
cat.showVoice();
こうすると、catというオブジェクトを作成して、showVoice
メソッドを呼び出しているという意味でした。
new使用しているときに、渡している値がありますね。
"猫", "たま", "にゃー"
という値を渡しています。これがオブジェクトに設定されます。
クラスに記載している下記の箇所で受け取ることができます。
Animal(String genericName,String name,String voice)
そして、受け取った後は、このようにしています。
Animal(String genericName,String name,String voice) {
this.genericName = genericName;
this.name = name;
this.voice = voice;
}
これは自分のオブジェクトに、渡された値を設定しています。
このようにnewしたときに処理をしてくれるメソッドをコンストラクタといいます。
ここでは、catのオブジェクトに “猫”, “たま”, “にゃー” が 、genericName, name, voiceに設定されます。
そして、設定した値が使用されてcat.showVoice();
の結果は「我輩は猫である。名前はたま。鳴き声はにゃー!」となります。
クラスについて見ていきました。クラスが出てくると、難しく感じるかもしれません。
実際に使ってみて大体理解できれば、業務でもなんとか乗り越えていけるかと思います。
おわりに
今回はプログラミングで使用されるクラスについて見ていきました。
クラスのイメージは掴んでいただけましたでしょうか。
いろんな用語が出てきましたが、ひとつずつコードでどうなるかと合わせて確認すると、理解できてくるかと思います。
オブジェクト指向はいろいろな言語で使えるようになっていて、使用することでさらに効率よくプログラムを書くことができます。
言語によっては使えない機能があったり、書き方が違ったりします。
なので、それぞれの言語仕様はしっかり確認して、まずは使ってみましょう。
コメント