これでRuby基礎はおしまいです!
最後です!
頑張って行きましょう
クラスとは?
クラスとは「設計図」のようなものです
設計図を作り、それをもとに処理を作って行きます
とりあえず触らないとわかりませんね
クラスを作る
今回は孫悟飯クラスを作って見ましょう
クラスを作ってそこに孫悟飯の特徴を入れていきます
僕はドラゴンボールの孫悟飯で行きますけどドラゴンボール知らない人は好きなキャラの技名のメソッドにしてください
class Gohan
def masenko (voice)
puts "#{voice}!魔閃光!"
end
def kamehameha (voice)
puts "#{voice}!かめはめ波!"
end
def flag (voice)
puts "#{voice}!勝てんぜ、お前は"
end
end
gohan = Gohan.new
gohan.masenko('行くぞ')
gohan.kamehameha('喰らえ')
gohan.flag('こっちだ!ウスノロ')
さて実行してください
画像のようになりましたか?
では解説
class クラス名
でクラスを作ります
そこに処理を書いて行きます
これではまだ設計図の段階なのでこの設計図を使える用にします
それがこれ
gohan = Gohan.new
これをインスタンス化と言います
gohanという変数を付けばこれからクラスが扱えます
ではコードを見直してください
gohan.kamehameha('行くぞ')
これでクラスのメソッドを呼び出してます
呼び出す時にセリフを入れたいので引数voiceにセリフを渡しています
無事にかめはめ波が撃てましたね
インスタンス変数
次はインスタンス変数
変数はメソッドなどの中で定義するとそのメソッド内でしか使えません
メソッドを抜けてクラス内どこでも使える用にするのがインスタンス変数です
例えばこんなコード
class Gokuu
def initialize (name)
@name = name
end
def aisatu
puts "オッス!オラ#{@name}!"
end
def meizerihu
puts "カカロット?オラは#{@name}だ!"
end
end
gokuu = Gokuu.new('悟空')
gokuu.aisatu
gokuu.meizerihu
initializeメソッドはクラスがインスタンスされた時に自動で呼び出される特殊なメソッドです
今回はinitializeメソッドに引数を入れてみます
そしてこのコード
@name = name
@nameに引数で受け取ったnameを入れています
@をつけた変数を定義することでこの変数はinitializeメソッドの外でも使えるようになります
Railsでもよく使います
パブリックとプライベート
今まで書いたメソッドはパブリックと言われてどこからでもアクセス出来ます
でもユーザーにアクセスしてほしくないメソッドもあります
その場合はプライベートメソッドを使います
プライベートメソッドはそのクラス内でしか使えません
書いてみましょう
class Gokuu
def serihu
puts 'あの地球人のようにだと?'
gekido
end
private
def gekido
puts 'クリリンのことかあぁぁぁ'
end
end
gokuu = Gokuu.new
gokuu.serihu
実行して確認してください
実行出来ましたか?
次に
gokuu.serihu
の下に
gokuu.gekido
を追加して実行してください
するとエラーが出ましたね
このようにプライベートメソッドはクラス内からしか呼び出せません
クラスの継承
クラスは継承することが出来ます
親クラスを子クラスが継承することで
親の能力を持った子ができる
という感じです
とりあえず試しましょう
先程のGohanクラスを使いたいのでコピペしてください
class Gohan
def initialize (voice)
@voice = voice
end
def masenko
puts "#{@voice}!魔閃光!"
end
def kamehameha
puts "#{@voice}!かめはめ波!"
end
def flag
puts "#{@voice}!勝てんぜ、お前は"
end
end
これを親クラスとします
次に魔人ブウクラスを作って見ましょう
イメージをつかみやすいために少し解説
孫悟飯と魔神ブウは敵対関係です
ですがその戦闘中に魔人ブウが孫悟飯を吸収します
孫悟飯を吸収した魔人ブウは孫悟飯の技すべてを使うことが出来ます
なんとも強い敵でした
Gohanクラスのendの下に追記です
コードはこうです
class Buu < Gohan
def initialize(voice)
@voice = voice
end
def serihu
puts '吸収してやったぞ!'
end
end
buu = Buu.new('お前たちの技だ!')
buu.serihu
buu.kamehameha
実行してください
こうなりましたか?
さてびっくりGohanクラスのkamehamehaメソッドが使えます
これが継承
BuuクラスはGohanクラスを継承してるので使えちゃうんですね
継承方法はこう
class Buu < Gohan
クラス名 > 継承したいクラス
これでOKです
最後に
これにてRubyの基礎講座は終了です
お疲れさまでした
今回はRubyに触れる、慣れるが目的でしたのでさらっと重要ポイントだけを抑えました
ただこの講座をしっかり理解出来たなら書籍などで勉強しても挫折することなくより理解が深まることでしょう
Ruby単体で使うことは稀なのでぜひRails講座もやってみてください
本当にお疲れさまでした