rubyっぽい書き方
人間クラス?なんじゃそりゃ
rubyっぽい書き方ってのがどんなんか?という定義はさておき、俺自身がぽいなぁと思う書き方とその発想法を紹介。っていうかクラスの書き方って言ったほうが正しいかね?
rubyってのはそりゃあもうオブジェクト指向なわけですわ。しかもクラスベースのオブジェクトを作るもんなんですその辺りはJAVAといっしょ。JAVAの入門書とかでもクラスの書き方で
class Cook extends Human{ }
とかなってたりruby流だと
class Cook < Human あれやこれや end
てなってるわけ。でもその説明が人間クラスを作ってそれを継承してコックさんクラスを作って…とかなってて意味わかんね〜〜っての!!となった人も多いんじゃないでしょうか?俺はなった。もうさっぱりやったね。そんな俺にある日ブレイクスルーをもたらした方法が以下の通り。
クラスを作る時はまずインスタンス変数を列挙する。
クラスというのは小さなプログラムだと考えるとちょっとオブジェクト指向が見えてくるんよね。コックさんクラスとかそういうので行くとまたわけわからなくなるからなんでもいいけど例えばmp3プレイヤーみたいなのを作りたいとすると。
class MP3Player end
とまずなる。んで次にMP3プレイヤーが持ってそうなデータを考えるわけ。MP3プレイヤーやねんから当然鳴らしてる音楽のデータがないとアカンやろ。ってわけで
class MP3Player @mp3_file end
って感じで書いてみる。するといつそれをセットするんだ?とかそれを鳴らさないといけないよなぁ…とか思えてこないだろうか?そんで
class MP3Player def initialize(path) @mp3_file = path end def play 鳴らすための処理 end end
みたいになる。こんな感じでget_mp3メソッドを作ってみたり@next_songを加えてみたりするとそれなりにMP3Playerっぽいものができます。
そうしてできたやつを
class MP3Player def initialize(path) @mp3_file = path end def play 鳴らすための処理 end end if $0 == __FILE__ MP3Player.new.play end
みたいにして呼び出せばなんとなくrubyっぽくありません?