これで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講座もやってみてください

本当にお疲れさまでした

カテゴリー: Ruby

コメントを残す

メールアドレスが公開されることはありません。

Rating

wp-puzzle.com logo