
この オブジェクト指向:基本編は、今回が最終回です。
を 見ていきましょう。

だいぶ、オブジェクト指向の考えが分かってきました。
今回の配列も、バッチリ勉強します。

学んできた事の組み合わせ、とても楽しみです。
今回も、よろしくお願いします。
【1】 配列イメージ

ここまで、クラスをインスタンス化して 利用する例として
変数に代入して利用する事を 見てきました。

まずは、インスタンス化したした結果を
変数に代入する時の 内部イメージを思い出しましょう。
例えば、営業部員を表すクラス
SalesEmployee を インスタンス化します。
仮に、メモリ上の 100番地からはじまる位置に
インスタンスが作成されたとします。

そして、この SalesEmployee型の変数を
宣言して、つまり箱を用意して…
その中に、インスタンスの参照値 この場合には
100番地 を代入します。

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


そして、利用する時には、その指し示す先を利用する。
覚えています。
そして、このインスタンス化した結果は
配列の要素に代入して 使うこともできます。
例えば クラス SalesEmployee を 3つ インスタンス化して
配列で処理したい場合を考えましょう。
まずは、クラス SalesEmployee を 3つ
順番に インスタンス化します。
それぞれ、100番地、200番地、300番地に
インスタンス化されたとしましょう。

そして、ここで この SalesEmployee型の
要素数 3 の配列 se を宣言して…
つまり 3つ の連なる箱を用意して…
その中に、インスタンスの参照値、この場合には
100番地、200番地、300番地を 順に代入します。

se[0] に 100 番地を代入し…
se[1] に 200 番地を代入し…
se[2] に 300 番地を代入します。

このようにすると、配列の各要素が
インスタンスの参照値を 持っていることになるので…
その実体を指し示して、使えることとなるのです。
このイメージを 押さえておきましょう。


配列要素が使えるという事ですね。
イメージ、スッキリ 分かりました。
【2】 クラス型の配列宣言

次に、クラス型の配列宣言ですが…
これは、宣言するデータ型が
クラス型(参照型)であるという事以外は…
通常の配列の宣言の方法と同じです。
配列の宣言は
…ですので、このデータ型の部分が
クラス名 になると考えましょう。
例えば、SalesEmployee型 の
配列要素 3 の配列を宣言する場合…
という書き方になります。

基本を 再確認しておきまよう…。
【3】 配列要素の設定

配列要素に、インスタンス化した結果(アドレス値)を
設定する方法を 例で見ておきましょう。
SalesEmployee[] se = new SalesEmployee[3];
// クラスをインスタンス化した結果を 配列の要素に代入
se[0] = new SalesEmployee(“速水剛留”, 1000000);
se[1] = new SalesEmployee(“河合彩香”);
se[2] = new SalesEmployee(“鈴木一郎”, 850000);
まず、前のコーナーでお話した配列の宣言をして
配列の領域を確保した後に…。

インデックスで指定した配列要素に
SalesEmployeeをインスタンス化した結果を代入しています。

インスタンス化して 変数に代入していた部分を
配列要素にした形になっていますね。
そして、この配列の宣言と配列要素の設定(代入)は
一緒に行えます。初期化です。
このように記述します。
new SalesEmployee(“速水剛留”, 1000000),
new SalesEmployee(“河合彩香”),
new SalesEmployee(“鈴木一郎”, 850000)
};

初期化の中に、インスタンス化の記述があるので
最初は 少し複雑に感じるかも知れませんね…
イメージと照らし合わせて
ゆっくり見てみましょう…。
配列宣言と要素 の初期化ですが
クラス型ですので、クラスをインスタンス化します。
この例では、3つのインスタンスを作成します。

そして、初期化する配列は 3つの要素 を持つことが
わかりますので、配列の領域が確保されて。
0番目、1番目、2番目と順にインスタンスの
開始アドレス(参照値)で初期化する事になります。

例えば、インスタンス化された先頭アドレスが
それぞれ 100番地、200番地、300番地だった場合…
配列要素には、100番地、200番地、300番地が格納されます。

配列要素の初期化の方法と、イメージを
併せて押さえておくと良いと思います。


段々と 分かってきた感じがします…。
【4】 メンバアクセス

配列要素 が指し示すインスタンスの
メンバアクセスの方法ですが…
これは
配列要素に対して
『 . 』(ドット演算子)を使います。
変数と同様に考えて大丈夫です。
配列名[インデックス].フィールド名
(メソッド呼び出し)
配列名[インデックス].メソッド名(実引数,…)
という形になります。
例を見ていきましょう。
new SalesEmployee(“速水剛留”, 1000000),
new SalesEmployee(“河合彩香”),
new SalesEmployee(“鈴木一郎”, 850000)
};
// 1番目のインスタンスのフィールドに値を設定
se[1].salesAmt = 500000;
// 0番目のインスタンスのメソッド呼び出し
se[0].displayInfo();
SalesEmployee型配列 se を宣言して
インスタンス化した3つの参照値で
要素を初期化しています。

1番目のインスタンスのフィールドに
値を設定する場合には、このように記述します。

0番目のインスタンスのメソッド displayInfo() を
呼び出す場合には、このように記述します。

配列要素に、ドット演算子を続けることは
最初に見ると違和感があるかも知れませんが…
意味合いを理解して、使っていきましょう。
【まとめ】

そのクラス型の配列の要素に代入して
扱うことができる。
= new データ型[要素数];
✅ データ型の部分が クラス名 となる。
配列名[インデックス] = new クラス名(実引数);
✅ 配列要素へのインスタンス化の結果の代入
配列名[インデックス] = new クラス名(実引数);
✅ クラス型の配列の初期化
クラス名[] 配列名 = {
new クラス名(引数),
:
new クラス名(引数)
};
配列名[インデックス].フィールド名
✅ メソッド呼び出し
配列名[インデックス].メソッド名(実引数,…)
今回も、ご覧いただき、ありがとうございます。