アカウント名:
パスワード:
行為主体が物ではなく人間(コンピュータ)なのだから、「AがBと何々する」より「私がAとBを何々する」と言う記述が人間には自然でしょう。よってオブジェクト指向的記述はいまいちだと思われます。
それはoopの問題ではなくinterface 私 { void 何々(A a, B b);}というように設計すべきという話ですね。そしてコンピュータは人間ではありません。
サブジェクトじゃなくてオブジェクトだよ。「AがBと何々する」と言うと理解がそもそもおかしい。「Aに対してBを利用して何々する」と言うのがより正確。
A.add(B)
だったら「Aに対してBを加える」ということ。分かりにくいのは、その結果をAに代入するのか、値を返すのかがこの表現からは分からないということだ。その辺りは、
(add A B)
(add! A B)
のように書ける言語であれば、(少なくともそういう言語を使っている人には)より明確だ。それでいて、これもまた、オブジェクト指向的表現である。関数呼び出しに関しては、第一引数を書く場所の違いに過ぎない
では、何がオブジェクト指向的じゃないかと言ったら、
じゃあ、Cに関数テンプレートだけ持ってくればいいんじゃないの?あれって、オブジェクト志向とは関係ないよね?
冗談は冗談と分かるように書いて欲しいな。
違います。自分のコンパイル時間を使って、他人の余暇を作るための壮大な装置です。
実行時にしかAとBの型がわからないんだから、テンプレートでは無理だよ。テンプレートを使えば、
add(A, B)
で済むけど、AとBがダウンキャストされている必要がある。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
普通のやつらの下を行け -- バッドノウハウ専門家
行為主体 (スコア:0)
行為主体が物ではなく人間(コンピュータ)なのだから、
「AがBと何々する」
より
「私がAとBを何々する」
と言う記述が人間には自然でしょう。
よってオブジェクト指向的記述はいまいちだと思われます。
Re: (スコア:0)
それはoopの問題ではなく
interface 私 {
void 何々(A a, B b);
}
というように設計すべきという話ですね。
そしてコンピュータは人間ではありません。
Re: (スコア:0)
サブジェクトじゃなくてオブジェクトだよ。「AがBと何々する」と言うと理解がそもそもおかしい。「Aに対してBを利用して何々する」と言うのがより正確。
だったら「Aに対してBを加える」ということ。分かりにくいのは、その結果をAに代入するのか、値を返すのかがこの表現からは分からないということだ。その辺りは、
のように書ける言語であれば、(少なくともそういう言語を使っている人には)より明確だ。それでいて、これもまた、オブジェクト指向的表現である。関数呼び出しに関しては、第一引数を書く場所の違いに過ぎない
では、何がオブジェクト指向的じゃないかと言ったら、
Re: (スコア:0)
じゃあ、Cに関数テンプレートだけ持ってくればいいんじゃないの?あれって、オブジェクト志向とは関係ないよね?
Re: (スコア:0)
Re: (スコア:0)
冗談は冗談と分かるように書いて欲しいな。
Re: (スコア:0)
違います。
自分のコンパイル時間を使って、他人の余暇を作るための壮大な装置です。
Re: (スコア:0)
実行時にしかAとBの型がわからないんだから、テンプレートでは無理だよ。テンプレートを使えば、
で済むけど、AとBがダウンキャストされている必要がある。