137
60

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

「newする」の感覚的解釈

Last updated at Posted at 2022-01-16

##■よく分かんないけどnewする
プログラミングを始めてから、ずっと分からなかったんです。
newってなんなんだ?
なんだかよく分かんないけど、
newしないとできないことがあって、
newするとできるようになることがある。
どうやらこれがインスタンス化って言うらしい。
ふーん?
newするって何なの...って思いながらいつもnewしてました。

調べると記事は色々出てきますよね。
設計図を実体化するみたいな感じ、とか大体そんなふうに。

ふむふむなるほど、、、、
わ〜、全然ピンと来ないなあ 😇

あ、決してわたしの見た記事がダメだったとかそういうことはなくて
わたしの理解力のなさがピンと来なかった原因なんですが、
つい先日ようやく開眼(?)いたしまして、
今回はそれを記事にしたいと思います。

##■newするっていうのは
思ったんですよ。
newするっていうのはもしかして、

**召喚獣を召喚するのと同じなんじゃない?? ** って。

いきなり召喚獣とか言い出して大丈夫でしょうか。
大丈夫です。
(あまりゲームに馴染みのない方には意味不明ですね、すみません汗)

さてここに魔術書があることにします。
魔術書にはありとあらゆる召喚獣を呼び出すための魔術が書かれていますが
その中から召喚獣をひとつピックアップしてみましょう。

tsuyoi_dragon.php
class TsuyoiDragon
{
    public function flame_breath ($energy, $anger) {
        $flame_power = $energy*$anger;
        return $flame_power;
    }

    public function blizzard_breath ($eneregy, $sadness) {
        $blizzard_power = $eneregy*$sadness;
        return $blizzard_power;
    }
}

旅の途中で敵に遭遇して、
このツヨイドラゴン(強い)を呼び出して敵をやっつけたい!と思ったとき
魔術書に向かって「flame_breath!!!」と叫んでも
本に向かって何やら大きい声を出している人
なってしまうだけなのですが
それはちょっと恥ずかしいので、ここで代々伝わる詠唱方法を使います。

そうです、それが「new」です。

newとは言い換えると、「出でよ!!」なのであります。
「出でよ!ツヨイドラゴン!flame_breathだ!」 をphp風に記述すると

summon_spell.php
$tsuyoi_dragon = new TsuyoiDragon;
$attack = $tsuyoi_dragon->flame_breath($energy, $anger);

こんな感じになるかと思います。
いかがでしょう。伝わりますでしょうか。

魔術書に書かれているだけの状態ではツヨイドラゴンの必殺技は使えないので、
「new(出でよ)して召喚獣を出現させてから任意の必殺技を指示できる状態にする」
これがインスタンス化なのだと理解したとき、
ようやくわたしのなかで腑に落とすことができまして
大変スッキリしました。

##■さいごに
この記事に辿り着いて頂いた方に、
スッキリが少しでもシェアできましたら嬉しいです。
最後までお読み頂きありがとうございました!

137
60
14

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
137
60

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?