クラス
クラスは一種のデータ型です。
「オブジェクトの設計図」
とか「オブジェクトの雛形」
と呼ばれたりすることもあります。Rubyではオブジェクトは必ず何らかのクラスに属しています
。クラスが同じであれば、保持している属性(データ項目)や使えるメソッドは(原則として)同じになります。
- クラスに属する同じメソッドを使うことができる
オブジェクト、インスタンス、レシーバ
クラスをもとにして作られたデータの塊をオブジェクトと呼びます。場合によってはオブジェクトではなくインスタンスと呼ぶこともあります。
...
また、メソッドとの関係を説明する場合には、オブジェクトのことをレシーバと呼ぶこともよくあります。user = User.new("Alice", Ruby", 20) user.first_name
「ここでのfirst_nameメソッドのレシーバはuserです」。
...
「レシーバ」は「メソッドを呼び出された側」というニュアンスを出したい時によく使われます。
- クラスから生成されるものをオブジェクト、インスタンス、レシーバと呼ぶ
メソッド、メッセージ
user = User.new("Alice", Ruby", 20) user.first_name
2行目ではuserというレシーバに対して、first_nameというメッセージを送っている」。
...
レシーバとメッセージという呼び方は、Smalltalkというオブジェクト指向言語でよく使われる呼び方です。RubyもSmalltalkの影響を受けている部分があるのでときどきレシーバとメッセージという用語が使われる場合があります
。
- オブジェクトがレシーバでそれを操作する人間がメソッドというメッセージを送るor付け足すことによって返答が返ってくる
状態(ステート)
オブジェクトごとに保持されるデータのことを「オブジェクトの状態(もしくはステート)」
と呼ぶことがあります。例えば、「信号機オブジェクトの現在の状態は赤です」と言った感じです。また、Userクラスが持つ「名前」や「年齢」と言ったデータも、オブジェクト指向の考え方で言うと、「Userの状態」
に含まれます
属性(アトリビュート、プロパティ)
オブジェクトの状態(オブジェクト内の各データ)は外部から取得したり変更したりできる場合があります。
user.first_name = "アリス”
このようにオブジェクトから取得(もしくはオブジェクトに設定)できる値のことを属性(もしくはアトリビュートやプロパティ)と呼びます。