
今回は
というテーマでお送りします。

シッカリ聴いて、身につけていきますよ~。
よろしくお願いします。

今回は、いよいよプログラムを実行していくんでしたね。
楽しみです。頑張ります。
【Youtube版】
Youtubeでもお伝えしていますので
是非チェックしてくださいね。
【1】 実行用クラス

前回は、設計図となるクラスの定義を学んだので…
今回は、設計図から実体を作ってプログラムを
動作させていきましょう。

中心に考えて、Javaの仮想世界を作るような感じ…
…とお話しました。

その意味では、この…
…が必要! という事になります。
それが、実行用クラスです。
この実行用クラスには、プログラムの入り口となる
メインメソッドを 配置します。

その事によって、プログラムを動作させて
Javaの仮想世界を 作っていくことが できるようになるのです。

ここでは、Javaのクラスには…
② 実行する実行用クラス
この2つが あることを 押さえておいてくださいね。

【2】 インスタンス

設計図にあたるクラスを定義して
そこから 実体 を作るというお話をしていますが
この実体のことを Java では…
と言います。

そして、このインスタンスを作ることを…
と言います。
✅ インスタンス化=実体を作ること
Javaでの書き方はこうなります。
インスタンス化した結果は
・ 配列の要素にする
・ メソッド呼び出しの実引数にする
などの使い方はありますが…
今回は、変数に代入して使う方法を
見ていきましょう。
この場合、このように記述します。
例えば、営業部員を表すクラス SalesEmployee を考えましょう。
インスタンス化して変数に代入するには…
という記述を行います。
代入の右辺、こちらがインスタンス化です。
クラスを元に、メモリ上に実体を作成します。

new演算子は 新たに実体を作成する演算子です。
この new演算子は、配列でも 出てきましたね。
配列の場合は、型名と角括弧を使って
要素数分の実体 を作成しました。
クラスをインスタンス化する時には
クラス名 の後に 丸括弧 をつけて表します。

代入の左辺を見ると…
クラス名をデータ型として扱っています。
クラス型といいますが、これは参照型の一種です。

参照型は、以下の記事でお伝えしています。
併せて、参考にしてくださいね。
この例では、SalesEmployeeというクラスをインスタンス化して
SalesEmployee型の se という変数に代入しています。


イメージは何となく掴めます。
そして、インスタンス化したら
そのクラスの型の変数に代入して使うんですね。

でも、イメージ図と一緒にノートに書いておいたので
大丈夫と思います。
【3】 内部データ

この例の、内部データのイメージを見ておきましょう。
クラスの定義を元に…
メモリ上に、インスタンスが 作られます。
たとえば、100番地から始まる位置に
作成されたとしましょう。
実体なので、フィールドは値を持ちますし
メソッドを呼び出す事も、できるようになります。

超入門の 配列 のお話をした時に…
Javaで定められた 既定値で初期化される。
…と お伝えしました。
そして、今回のように…
…にも、フィールドは Javaの既定値 で初期化されます。

Javaの既定値については、以下の記事でお伝えしています。
併せて、参考にしてくださいね。
既定値を おさらいしておくと
このように なっています。
char型は文字コード0
boolean型はfalse
参照型はnull

ですので
クラス SalesEmployee をインスタンス化する時には
int salesAmt; ← 自動的に 0
という値で自動的に初期化されます。

そして、左辺は、SalesEmployee型(参照型)の
変数 se が宣言されて
インスタンスの参照値、この場合には 100 番地が
se に代入されます。

こうなると、変数名 se は、クラス SalesEmployee を
インスタンス化した実体を指し示すこととなります。

このイメージを 掴んでおきましょうね。
【4】 メンバへのアクセス

インスタンス化したメンバを使うことを
メンバにアクセスするといいます。

そして、このメンバへのアクセス方法ですが…
…という事になります。
ドット、ピリオドですね。
変数名.フィールド名
(メソッド呼び出し)
変数名.メソッド名(実引数,…)
という形になります。
例を見ていきましょう。
public class SalesEmployee {
String name;
int salesAmt;
int sell(int amt) {
return salesAmt += amt;
}
}
営業部員を表す SalesEmployee という
クラスがあります。

:
SalesEmployee se = new SalesEmployee();
se.name = “速水剛留”;
se.salesAmt = 1000000;
:
int result = se.sell(250000);
:
メインメソッドなどでインスタンス化を
行う場合には…
new 演算子でインスタンス化して
SalesEmployee型の変数 se に代入します。

:
SalesEmployee se = new SalesEmployee();
se.name = “速水剛留”;
se.salesAmt = 1000000;
:
int result = se.sell(250000);
:
そして、このインスタンスのフィールド name に
“速水剛留” を代入する場合には、このように
se.name = “速水剛留”;
と記述して、フィールド salesAmt に 1000000 を
代入するには、
se.salesAmt = 1000000;
と記述します。
メソッドの場合にも、同様に
se.sell(200000);
という形で、ドット演算子を使用してメソッド呼び出しを行います。
メンバへのアクセスは、ドット演算子
押さえておいてくださいね。

ここまでのイメージを 簡単にまとめておきましょう。
設計図となるクラスでは
フィールドとメソッドを定義しておきます。
クラスから実体にあたるインスタンスを作成します。
この事をインスタンス化といいます。
インスタンスはフィールドに値を持ちますし
メソッドは実際に呼び出せるようになります。

メインメソッドなど、使う側からは
まずは、クラスをインスタンス化します。
new 演算子を用います。
クラス名 変数名 = new クラス名();
と記述します。
例えば、SalesEmployee クラスをインスタンス化
する場合には、このように記述します。

インスタンス化した結果を 変数に代入すると…
そのインスタンスの
メンバ(フィールド・メソッド)にアクセスできます。
メンバへのアクセスは ドット演算子を使用します。
・メソッドへのアクセスは、変数名.メソッド名(引数,…)
例えば、変数 se が SalesEmployee型の
インスタンスを指し示している場合
このように記述します。
sa.sell(200000);

【5】 クラス図

を表すほかに、クラス同士の関係性も表します。
…というお話をしましたが、今回は
関係性の1つをお伝えします。
今回の例の
実行用のクラスと 設計図のクラスの関係性です。
Driver クラス と SalesEmployeeクラスの
関係は、このように表します。

破線(点線)の矢印ですね。
呼び方は
といいますが…
この場合は Driverクラスが SalesEmployee クラスを
利用する関係という意味になります。

ここも 押さえておきましょうね。
【まとめ】

実行用のクラスが必要。
・ 実行用クラスには
プログラムの入り口となる
メインメソッドを配置する。
Javaではインスタンスと言う。
・ インスタンスを作る事を
インスタンス化と言う。
・ インスタンス化して
変数に代入する方法
クラス名 変数名 = new クラス名();
メモリ上に領域が確保され
既定値で初期化される。
・ クラス型の変数には
インスタンスの参照値が
代入される。
へのアクセスは
ドット演算子を使う。
・ フィールドの参照・代入
変数名.フィールド名
・ メソッド呼び出し
変数名.メソッド名(実引数,…)
片方が片方を利用する関係は
破線(点線)の矢印で表す。
今回も、ご覧いただき、ありがとうございます。