オブジェクトとクラスとメソッド
Rubyでは、あらゆるものはオブジェクトです
マインクラフトをやったことあると、イメージしやすい(かも)
すべてはブロックである、みたいな?
RPG風な説明
https://gyazo.com/0d91f0866e373cfcabd2e341088c6398
irbで確認してみよう
code:ruby
1.class
"hello".class
[].class
オブジェクト(object)をひとことで表すと、メモリ上に確保された情報の実体
そのオブジェクトの設計図が、クラス(class)
ざっくりといえば、変数とメソッドをわかりやすくまとめて名前をつけたもの
変数は、そのclassが持っている状態をしめす
外から変えられるものもあれば、外から変えられないものもある
メソッド(method)は、ひとまとまりの処理に名前をつけたもの
methodは、関数(function)という呼び方もするが、特にclassの中にあるとmethodと呼ぶ
変数と同じように、外から呼び出せるものもあれば、呼び出せないものもある
「.class」というのも、method
classにmethodを記述することで、objectに機能を持たせることができる
どうせなら効率よく
せっかく書いたメソッドは、他でも使いたくなる(今はならなくてもそのうち絶対)
そう、だからコピー&ペースト!
は、美しくないですね
Rubyにも、それをきれいに解決するための仕組みがある
この仕組みを使うと、必要な記述量も減るし、読む方もラクチン
その仕組みこそが、継承とモジュール
クラスは、継承によって階層構造を持つことができる
モンスター < スライム属 < スライム
というかたちで、共通する属性や特徴をまとめて定義できるようになっている
継承の元と先を、親と子といったりする
code:ruby
Integer.superclass
Numeric.superclass
Object.superclass
継承の他に、モジュール(Module)をインクルード(Include)するという仕組みがある
単一の親クラスの他に、別の特徴や属性を持たせることができる
メタルスライムとはぐれメタル、キングスライムは形は違うけど同じ特徴がある
code:ruby
Integer.ancestors
オブジェクトとメソッドこそは、再利用のための要
オブジェクト指向設計は、それだけで軽く本が何冊も書けるレベルで深い概念
なので、ここではさらっと
なんとなくわかったつもりでOK
使っていくうちに理解が深まります
ネット上でも、先人がていねいに解説してくれている資料もいっぱいみつかります
他にも設計については、いろいろな概念、思想、設計方法があり、歴史や紆余曲折があって
インターネット上でも日々「わかる」「完全に理解した」「わからん」「おまえはわかってない」
などと、たいへんな戦いが繰り広げられているので適度に嗜んでください
技術も設計思想も定期的に、見直されたりリバイバルがあるんで侮れない