LoginSignup
9
0

More than 3 years have passed since last update.

Class化を学ぼう!

Last updated at Posted at 2020-12-19

目次

今回はオブジェクト指向のキーとなる考え方である「隠蔽」「継承」「多形」を以下の手順で学ぶ.

classとは

Classとは事前に型を用意しておき,必要に応じて値を変更して使用できる設計図のようなものらしい.

基本的な書き方は次のようになる.

class クラス名
    def initialize
        // 初期化処理
    end
end

クラス名は大文字から始めるルールになっているようだ.また,initializeを使用することで初期化処理を行うことができる.

クラスを利用してみる

以前作成したhello.rbは以下の通り.

hello.rb
def puts_hello name
    puts "Hello #{name}."
end

def gets_name
    name = ARGV[0] || 'world'
    return name
end

name = gets_name
puts_hello name

これをクラスを使って表現する.

class.rb
class Hello
    def initialize #初期化
        @name = gets_name
        puts_hello
    end

    def puts_hello #salute
        puts "Hello #{@name}."
    end

    def gets_name
        name = ARGV[0] || 'world'
        return name.capitalize
    end
end

Hello.new

こうすることで同様の結果が得られる.

動作としては,まずはじめにinitializeで初期化する.

次に@nameという変数にgets_nameメソッドを呼び出すことで値を代入している.コマンドラインに何か入力されていればそれをnameに,何もなければ「world」を代入.

最後にputs_helloメソッドを呼び出し出力している.

目次へ

継承

継承とは既に作成されているクラスの機能を残しつつ別の機能を追加し別のクラスを作成することである.

inher.rb
class Hello
    def hello
      p "Hello!"
    end
end

class CallName < Hello 
    def call
       p "Hey! Bob!"
    end
end

hey = CallName.new
hey.hello
hey.call

このようにCallNameというクラスはHelloの中にあるメソッドを利用でき,さらにcallというメソッドを追加することができている.

参考

クラスを継承する


  • source ~/prog/github/grad_members_20f/members/miyanagi/post/class.org
9
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
0