2023.12.18
BLOG
インスタンスの優しい解説/オブジェクト指向
2021-10-22
このブログはロックシステムのYoutubeチャンネル「ロックシステムアカデミーCH」の文字起こしや使用したコードの解説等をしています。
是非動画本編もご覧ください!
よろしければチャンネル登録も宜しくお願い致します!
クラスを掘り下げてインスタンスを学ぼう!
この動画ではプログラミングの基礎オブジェクト指向を学んでいるよ
今回の動画では、クラスを掘り下げてインスタンスについて学習していこう!
インスタンス?あれ?クラスってこの間詳しく説明したばかりじゃない??
オブジェクト指向の学習範囲は凄く広くてね・・実はまだ説明していない大事な要素がるんだよ。それがインスタンス!
まだ覚える事があるんだね、オブジェクト指向・・恐るべし!
ちなみに、学習要素はまだまだ残ってるけど今回のインスタンスまでを理解出来ると、その場その場で学習しながらプログラムを作っていくことが出来るから、最後のひと踏ん張りだね。
なるほど・・そう聞くと基礎学習だけど頑張れるよ!オブジェクト指向で学習した流れを復習しながらインスタンスをマスターするぞー。
まず、インスタンスを学習する前にオブジェクト指向で学んだクラスについて、こちらの動画で復習しよう!
じゃあ、ひとまずクラスについて分かったところでインスタンスを一言で説明すると設計図(クラス)を具現化した「実体」のことだね。
毎度のことながら、この時点では全く分かんないんだよねー・・1回であーそういうことね!ってなった試しがないわ!
この図を見て欲しい!今までに学習したオブジェクト指向の考えにインスタンスを足すとこんな感じになるよ。
今までモノの概念を表現するときにクラスを使ってたんだけど実はこのクラスという概念を使って物体を作ることが出来るんだ。
うーん・・今までで説明された中で一番わかんないかも
図で説明した後。実際にコードを書くと意味が分かるようになるから頑張ってね。
なぜインスタンスを使うのか
以前クラスの説明で使った図では、オブジェクトを定義するとき本をクラスとしていたよねインスタンスを考えたときはこんな感じになるよ!
クラス「本」は「それがどんなものかって概念」だね。
インスタンス「漫画 小説 雑誌」は「実際に使える物体」になるよ。
あーさっき言ってた物体を作るって・・クラスで定義したものを細分化するイメージなのかな。
おっ!ちょっと分かってきたね!まだまだ例を出すよ!
インスタンス化はキャラクターの作成にも似てるね。 好きな 「ジョブ」を選んで、必要な情報を入力 して キャラクターを「作成」 名前をつけて「作る」ことで、初めて「キャラクター」の実物 が出来上がるよね。
うん 何となくインスタンスが何か分かってきた。1つのクラスに対してインスタンスは複数定義出来るってことね。
そうそう!じゃあ、図で考えたらインスタンスはこうなるって話はここまでにしようか。
インスタンスのイメージはなんとなく出来たけどそもそもなんでインスタンスを使わないといけないの?
プログラミングで出来る事を増やすためだね。クラスは実体を伴わないので、それだけではプログラムとして動作しないこと場合があるんだ。 だからインスタンスにすることで、実際に動作するプログラムとして使用できるようにするのが目的だね!
ふむふむ。たしかに出来ることは多い方が良いもんね。じゃあ、プログラミングする上でどうやってインスタンスを扱うの?
2つの違いはプログラミング的に クラス:属性(プロパティ)と操作(メソッド)を定義したもの インスタンス:クラスをnewしたものとなってるよ。
うーん?プログラミングで考えたとき、インスタンスのnewってなんだ・・・?
上の図のようにクラスから新しくインスタンスを生成するって意味だよ。
実際のコードを見てみよう
//Humanクラス
class Human
{
//---------------------
//属性(プロパティ)
//---------------------
// 年齢
private int age;
//---------------------
//操作(メソッド)
//---------------------
// 年齢設定
public void setAge(int age)
{
this.age = age;
}
// 年齢取得
public int getAge()
{
return this.age;
}
}
//主処理
public class Program
{
public static void Main(String[] args)
{
//Humanクラスのインスタンス「yamada」を生成
Human yamada = new Human();
//年齢を設定
yamada.setAge(18);
//年齢を表示
Console.WriteLine("山田の年齢:" + yamada.getAge());
}
}
おー結構長いコードだね。
これは・・山田って人に年齢を設定するプログラミングコードかな?
大正解!クラスからインスタンス生成してコードを書いた例になるよ。
株式会社ロックシステム
「ブラック企業をやっつけろ!!」を企業理念にエンジニアが働きやすい環境をつきつめる大阪のシステム開発会社。2014年会社設立以来、残業時間ほぼゼロを達成し、高い従業員還元率でエンジニアファーストな会社としてIT業界に蔓延るブラックなイメージをホワイトに変えられる起爆剤となるべく日々活動中!絶賛エンジニア募集中。