[ruby-list:50625] Ruby の用語:クラス,モジュール,インスタンス
From:
"5.5" <5.5@...>
Date:
2017-12-26 00:00:50 UTC
List:
ruby-list #50625
5.5 です。 Ruby の基本的な用語で,自分の中でちょっと曖昧なものがあるので, 確実なところを把握したいと考えています。 あるいは,用語によっては意味が確定していない(合意がない)もの もあるかもしれませんが。 まずはクラスやインスタンスについてお尋ねします。 オブジェクト指向言語一般の話ではなく,Ruby 用語についての質問 です。 [1] クラスとモジュールの関係 Class は Module の下位クラスです。 よって,「クラスはモジュールでもある」と言えそうですが,これは 正しいでしょうか。 Class は Module のすべてを受け継いでいるわけではなく,一部のメ ソッドを未定義にしているところがビミョーな気がします。 [2] クラスの上下関係 次の用語はそれぞれまったく同じ意味であると解してよいでしょうか。 ・上位クラス,スーパークラス,親クラス ・下位クラス,サブクラス,子クラス (以下,これが正しいと仮定して進めます) class A; end class B < A; end class C < B; end とあったとき,C は B の下位クラスだが,A の下位クラスであると は呼ばない,ということでよろしいでしょうか。 そうだとすると,「下位クラスまたはその下位クラスまたはその…」 に当たる用語が欲しいと思います。 「子孫クラス」「先祖クラス」という用語があればよさそうですが, あまり用例を見ない気がします。 そういう用語はありますか。あるいは妥当ですか。 「下位クラス」「上位クラス」よりよく使う概念だと思うのですが…。 [3] クラスとインスタンスの関係 クラスが [2] のように定義されているとき,B.new は B のインス タンスであるが,A のインスタンスとは呼ばない,ということでよ ろしいでしょうか。 だとすると,B や C のインスタンスを A から見た呼び方が欲しい ですが,そういう用語はありませんでしょうか。 また,B.new のクラスは B ただ一つであり,A は該当しない,と いうことでよろしいでしょうか。 [4] 〇〇オブジェクトという呼び方 Array のインスタンスを「Array オブジェクト」と呼びますね。 Array の下位クラスのインスタンスをも「Array オブジェクト」と 呼ぶことは妥当でしょうか。 また,Enumerable をインクルードしたクラス(やその下位クラス 等々)のインスタンスを「Enumerable オブジェクト」と呼びたい のですが,妥当でしょうか。 これを一般化して,オブジェクト o のクラスの ancestors たち (つまり o.class.ancestors の要素)すべてについて,o のこと を「〇〇オブジェクト」と呼べれば,と思うのですが。 それがダメなら,それを簡潔に表す方法はありませんか。 -- 5.5@moji.gr.jp