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

# やったこと
クラスについての学び
| 用語 | 説明 | 備考 |
|-----------|------------|------------|
| クラス       | 設計図のようなもの        | -         |
| インスタンス     | 設計図から生成されたもの      | -       |
| 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     |


```ruby:
### クラス定義
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をつける
### クラス変数
クラス自体に値を保持することができる変数
### 参考コード
```ruby:
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
```
### 参考コード（クラス継承）
```ruby:
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
```