「公案」とは禅で用いられ、なんたら かんたら。 この公案を考えることでオブジェクト指向プログラミングの悟りをなんたらかんたら。
- Q: 変数とは何か?
- A: 箱である
- B: ラベルである
- C: ラベルを入れた箱である
i = 1
の i を答えよi = i + 1
の i を答えよ
- Q:
nil
とは何か。 - A: 何もない
- B: 「何もない」がある
- C: なにものでもない
- D: error (maker or sentinel)
1+2
と3
は同じか?1==1
とtrue
は同じか?obj
とobj.dup
は同じか?"abc"
と"abc"
は同じか?
1 + 2
を答えよ"a" + "b"
を答えよ1 + "a"
を答えよ"a" + 1
を答えよ
- Q: ポインタとは何か
- A: メモリ上の位置である
- B: アドレスを入れた変数である
- C: 参照である
- D: オブジェクトである
- Q: オブジェクトとは何か?
- A: データとそれに対する手続きをまとめたもの
- B: 「もの」
- C: 「あれ以外の何か」
- Q:
NULL
はオブジェクトか? - A: 否。
- Q:
nil
はオブジェクトか? - A: 是。
- Q: オブジェクト指向とは何か?
- カプセル化
- 継承
- ポリモーフィズム
foo.bar
と書けること
- 有理数というものは(概念的には)ObjectSpace内に常に存在している [ruby-dev:33832]
true
,false
,nil
,Symbol
,Fixnum
は原初から存在している
- カプセル化されていないものはオブジェクトか?
-
何も継承していないものはオブジェクトか?
-
人
は動物
を継承しているのか? -
Q: 「継承」は何を継承するのか?
-
A: そのものの分類
-
B: 仕様である
-
C: 実装である
- Q: ポリモーフィズムとは何か?
- A: レシーバによって、同じ名のメソッドの挙動が変わること
- B: 異なる種類のオブジェクトなのに、同じメッセージを送ることができ、同じように振る舞うこと
- C: 異なるオブジェクトを同じように扱えること
- Q: 型とは何か?
- A: 変数の型のこと
- B: オブジェクトのクラスのこと
- C: インターフェイスのこと
- D: あるオブジェクトの持つ一連の振る舞い
- Q: クラスとは何か?
- A: オブジェクトの分類である
- B: オブジェクトの型である
- C: オブジェクトの鋳型である
- D: イデア
- E: Factory
io.print obj
とobj.display io
のどちらが「よい」かary.join(sep)
とsep.join(ary)
のどちらが「よい」か