1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

TECH  DAY 2

Last updated at Posted at 2019-07-15

勉強した項目: Ruby、クラスとインスタンス
時間: 9:30
内容:
*学習アウトプットです。なにぶん間違いなんかもあります。気をつけますがその際はご指摘いただけますと幸いです*

###【繰り返し処理】
 繰り返し処理、繰り返し処理を行うための文法には foreachwhileなどいくつかある

###【while文】
 while は条件式が真のときに処理を繰り返す

  while 条件式 do
    # 処理を実行する
  end

 例 1から10までを順に足し合わせてその都度表示

  sum = 0
  number = 1
  while number <= 10 do
    sum += number
    puts sum
    number += 1
  end

###【自己代入演算子】
 number += 1 と number = number + 1 は一緒

*強制終了はターミナル画面で「control + c」

###【exitメソッド】
 プログラムの処理を強制的に終了させるメソッド

  while true do
    exit  # ここでプログラムが終わる
    puts "Hello World" # これは呼ばれない
  end

  while true do
    input = gets.chomp         # ユーザーの入力
    if input == "exit" then    # exitと入力されたら
      exit                     # プログラムを終了
    end
    puts "ループ中"
  end

###【配列オブジェクト】
 配列オブジェクトはハッシュと同じように、1つの変数でたくさんの情報を持つことのできるオブジェクト
 データと順番がひもづけられる。

###【要素】
配列の中のデータは要素と呼ばれ、要素は順番を持っていて、配列に入れた順に1番目,2番目..と自動的に順番が割り振られる

 配列オブジェクト = []

*ハッシュは {} (中括弧)で囲んでいたのに対し、配列はで囲む

###【<<メソッド】
 生成した配列オブジェクトに新しい要素を追加したいとき

  pencil_case = ["ペン", "消しゴム", "定規"]
  pencil_case << "メモ帳"
  puts pencil_case

###【 lengthメソッド】
 length メソッドはその配列の中にある要素の数を返してくれるメソッド

配列オブジェクト.length # => 配列オブジェクト内の要素の数

  pencil_case = ["ペン", "消しゴム", "定規"]
  puts pencil_case.length

  pencil_case << "メモ帳"
  pencil_case << "付箋"
  puts pencil_case.length

最初は、3length メソッドで返ってきて、追加したので 5 が返ってくる。

###【管理する配列オブジェクトpostsの生成】

 posts = []      # 複数の何かを持つ配列オブジェクト

 メソッドの外におく

 複数のpostを追加する場合はスコープで対応

###【スコープ】
変数にはその変数を使うことのできる範囲が決まっていて、それをスコープという

capital = "東京"             # 首都は「東京」
  puts capital

*メソッドではメソッド内で定義した変数しか使えない
*同じ名前の変数でもスコープが違えば別の変数となる

###【引数(ひきすう)】
引数(ひきすう)はプログラムでメソッドなどに渡すことのできる値のこと
引数(ひきすう)を使うことによって、メソッドの外にある変数(スコープ外の変数)をメソッドの中で使うことができる

「引数のポイント」
引数には以下の2つのポイントがある。

引数は「メソッドを呼び出す部分」と「メソッドを定義している部分」両方に書く
「メソッドを呼び出す部分」に書く引数と「メソッドを定義している部分」に書く引数の名前は、一致している必要はない

*メソッドを呼び出す際に書く引数のことを本引数

*本引数に対して、メソッドを定義している部分に書く引数のことを仮引数

  def メソッド名(仮引数)
    実行する処理
  end

  def multi(number)
    puts number * number
    return number * number
  end

  puts "何か数字を入力してください"
  value = gets.to_i

  multi(value)

###【return】
return を利用した時点で返り値が決まるため、メソッドはその行までで強制的に終了

###【eachメソッド】
配列オブジェクトに対して each メソッドを実行すると、配列に含まれる要素を順に取り出して繰り返し処理が行われる
配列の要素の数だけ処理が行われる

  animals = ["いぬ", "ねこ", "ねずみ"]
  animals.each do |animal|
    puts animal
  end

###【クラス】
クラスとは、とある種類のオブジェクトの共通の属性とメソッドをまとめて定義しておく型のようなもの

*共通する部分をクラスという型で定義している

###【インスタンス】
クラスに基いて生み出されたオブジェクトのことをインスタンスと呼ぶ

クラスが先でクラスからインスタンスが生まれる

*クラスで共通部分を定義し、インスタンスは個別の値を持つ

###【属性と属性値】
・属性とは、オブジェクトが持つ情報の種類
・属性値とは、クラスで定義した属性に入る、オブジェクトが実際に持つ情報

###【クラスの定義】

class クラス名
  # 変数/メソッドの定義
end

*クラス名は半角英大文字から始めます。
例: User Account Image Group など

###【newメソッド】
全てのクラスは、定義しなくてもnewという特別なメソッドを持つ

###【クラスメソッド】
クラスで共通の情報を使った処理に使用する
###【インスタンスメソッド】
インスタンスごとの個別の情報(属性値)を使った処理

•クラスメソッドは、インスタンスの親玉であるクラス自身が利用する技で、インスタンスメソッドは、各インスタンスが行う技

###【クラスメソッドの定義】
クラスメソッドはメソッド名の前にself.を付ける

  class クラス名
    def self.メソッド名
      # 処理
    end
  end

呼び出しは
クラス名.メソッド名(引数)

###【インスタンスメソッドの定義】
インスタンスメソッドの定義はそのインスタンスのクラスの定義内で行う

  class クラス名
    def メソッド名
      # 処理
    end
  end

呼び出しは
インスタンス.メソッド名(引数)

*クラスメソッドは、クラスに対して使用し、クラスで共通の情報を使用、つまり、インスタンスの個別の情報は関係ない
 クラスメソッドは、self.をメソッド名の前につける

*インスタンスメソッドは、インスタンスに対して使用し、インスタンスごとに異なる個別の情報を使用
 インスタンスメソッドは、self.をメソッド名の前につけない

###【クラス変数】
クラス全体で使用できる変数
クラス内であればどこでも使えるのでクラスメソッド、インスタンスメソッドの両方で使うことが出きる。
クラスを通して、値が共通の情報に使用する

###【インスタンス変数】
共通の属性としてインスタンスに定義できる変数です。
その値は、個々のインスタンスによって別々に設定できる。

###【インスタンス変数を定義】
インスタンス変数は変数名の始めに@(アットマークを1つ)をつけて宣言

  class クラス名
    def sample
      @test = "ex"
    end
  end

###【クラス変数を定義】
クラス変数の定義はクラスの定義内で行う。
クラス変数は変数名の始めに@@(アットマーク2つ)をつけて宣言

  class クラス名
    @@クラス変数
  end

###【initializeメソッド】
 initializeメソッドは、インスタンスが生成された瞬間に、今まさに生成されたそのインスタンスに必ず利用されるインスタンスメソッド

*initializeメソッドの具体的内容は自分で書く必要があり、
インスタンス生成のときに何か処理を行いたいときはinitializeメソッドを書くようにする

###【クラスの継承】
あるクラスに定義されたメソッドを、別のクラスで利用出来るようにすることを継承
•クラスの継承には、親クラスと子クラスの関係がある
元となるクラスを親クラス
親クラスのメソッドを引き継ぎ新しく作成するクラスを子クラスと呼ぶ

###【ゲッター】
ゲッターとは、あるクラスのインスタンスのインスタンス変数の値を返すだけのメソッドのこと
ゲッターにより、インスタンスから自身の持つインスタンス変数の値を取得することができる

###【require】
require は、あるファイルから他のファイルの記述内容を参照するためのメソッド

例として、
hoge.rbとfuga.rbいうファイルがあった時、
fuga.rbに require "./hoge"と書くことで
fuga.rbにhoge.rbの記述が書かれていることにしてくれる

###【セッター】
インスタンス変数の値を更新するためのインスタンスメソッドのことを、特別にセッターと呼ぶ

###【self】
インスタンスメソッドの中でselfと書くと、そのインスタンスメソッドを使っているインスタンス自身を参照できる

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?