はじめに
いろいろな記事を参照しても理解が殆どできなかったクラスとインスタンスですが、
メソッドについて考えるタイミングでようやく少しだけ理解が出来たのでまとめてみました。
間違っていたらご指摘お願いいたします。
クラスとインスタンスの違いついて(理解できている部分のみ)
クラス:PostやUserなど大文字(クラス名)のこと、よく設計書とか言われます。大元の部分といったところでしょうか?
インスタンス:@posts, post, @userなどのPostやUserなどのクラスから作り出したもの
→ 例)@post = Post.new
とかよく書くと思いますが、ここの@post
はPost(クラス)から作り出したものなのでインスタンスということになります。なのでもちろんpost = Post.new
のpost
もインスタンスです。
ポケモンに例えてみる
クラス:ポケモンクラス
ポケモンを作り出してくれる設計図です、卵から孵るんじゃないんです
インスタンス:今回はポケモンクラス(設計図)からピカチュウとヒノアラシを作り出しました
ピカチュウとヒノアラシは同じ設計図から作り出されたので持つべきもの(中身)は一緒です。ただしそれぞれが持っている個性は違います。
ポケモンクラスの中身 | ピカチュウインスタンス | ヒノアラシインスタンス |
---|---|---|
name | ピカチュウ | ヒノアラシ |
type | でんき | ほのお |
HP | 35 | 30 |
参考にさせていただいたサイトです!
最後に
個人的にはdb/schema.rbをみながらdb/seeds.rbに本番用のデータを手作業で入力している時が一番クラスからインスタンスを作っているなーと感じました。
それこそクラスの中身確認してそれぞれにマッチした文章や数字を当てはめていくみたいな感じです。
ポケモンで例えるのは有名な話なので別の例えをしてみたかったのですがなかなかいい例が思い浮かばず断念。
たい焼きクラスなど有名所はまだありますが、実際自分はあまりそれでは理解できなかったので…
自分はメソッドをモデルに移行させる事ができたときにやっとクラスの意味などが少しだけ理解できたので、今分からなくてもいずれわかるようになることがあるので足踏みしないで進んでいくことが大事だと改めて感じました。
閲覧頂きありがとうございました!