LoginSignup
0
0

More than 1 year has passed since last update.

WEB開発をやり始めてみる(Ruby:クラス)

Last updated at Posted at 2022-10-22

やったこと

クラスについての学び

用語 説明 備考
クラス 設計図のようなもの -
インスタンス 設計図から生成されたもの -
Class クラス名 end クラス定義の仕方 Class Car end
〇〇 = クラス名.new クラスをインスタンス化 car = Car.new
@変数名 インスタンス変数。インスタンスごとの変数 @color
def color=(color) @color = color end メソッド。インスタンス変数に値を代入したいときに定義。一連の処理を定義 定義したメソッドをセッターと呼ぶ
def color @color メソッドを呼び出すとき 定義したメソッドをゲッターと呼ぶ。car.color = "red" puts car.color
def initialize @color = "red" end initializeメソッド。クラスがインスタンス化された時に実行される -
attr_reader ゲッターを簡単に書ける attr_reader :color
attr_writer セッターを簡単に書ける attr_writer :color
attr_accessor ゲッター,セッターを簡単に書ける attr_accessor :color
### クラス定義
Class Car
end 

### インスタンス化
car = Car.new

### インスタンス変数
Class Car
    @color
end 

### メソッド
Class Car
    ### セッターと呼ぶ
    def color=(color)
        @color=color
    end
end 

### 上記メソッドに代入(セッターと呼ぶ)
car = Car.new
car.color = "red"

=======================

Class Car
    ### ゲッターと呼ぶ
    def color
        @color
    end

    def color=(color)
        @color=color
    end
end 

### 上記メソッドに代入
car = Car.new
car.color = "red"
### ゲッターから呼び出し
puts car.color

=======================

Class Car
    def initialize(color)
        @color = color
    end
    ### ゲッターと呼ぶ
    def color
        @color
    end

    def color=(color)
        @color=color
    end
end 

### 上記initializeにredを渡す
car = Car.new("red")
### 上記initializeにredを渡したものを呼び出し
puts car.color

=======================

Class Car
  # ゲッター
      attr_reader :color
  # セッター
      attr_writer :color

    def initialize(color)
        @color = color
    end
end 

### 上記initializeにredを渡す
car = Car.new("red")
### 上記initializeにredを渡したものを呼び出し
puts car.color

=======================

Class Car
  # セッター&ゲッター
    attr_accessor :color
    def initialize(color)
        @color = color
    end
end 

### 上記initializeにredを渡す
car = Car.new("red")
### 上記initializeにredを渡したものを呼び出し
puts car.color

クラスメソッド

クラスから直接呼ぶことができる
selfをつける

クラス変数

クラス自体に値を保持することができる変数

参考コード

class User
  REASION = 'USA'
  @@count = 0
  
  def initialize(name)
    @name = name
    @@count += 1
  end
  
  def hello
    puts "I am #{@name}. #{@@count} instance(s)."
  end
  
  def self.info
    puts "#{@@count} instance(s).Reasion: #{REASION}"
  end
  
end

emma = User.new('Emma')
emma.hello
olivia = User.new('Olivia')
olivia.hello
mary = User.new('Mary')
mary.hello
### 出力結果参考
 I am Emma.  instance(s).
 I am Olivia. 2 instance(s).
 I am Mary. 3 instance(s).
----------------------------------------
User.info
User.info
User.info
### 出力結果参考
 1 instance(s). Reasion: USA
 2 instance(s). Reasion: USA
 3 instance(s). Reasion: USA
----------------------------------------
### 出力結果参考
puts User::REASION
 USA

参考コード(クラス継承)

class User
  REASION = 'USA'
  @@count = 0
  
  def initialize(name)
    @name = name
    @@count += 1
  end
  
  def hello
    puts "I am #{@name}. #{@@count} instance(s)."
  end
  
  def self.info
    puts "#{@@count} instance(s).Reasion: #{REASION}"
  end
  
end

emma = User.new('Emma')
emma.hello
olivia = User.new('Olivia')
olivia.hello
mary = User.new('Mary')
mary.hello
### 出力結果参考
 I am Emma.  instance(s).
 I am Olivia. 2 instance(s).
 I am Mary. 3 instance(s).
----------------------------------------
User.info
User.info
User.info
### 出力結果参考
 1 instance(s). Reasion: USA
 2 instance(s). Reasion: USA
 3 instance(s). Reasion: USA
----------------------------------------
### 出力結果参考
puts User::REASION
 USA
0
0
0

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
0
0