消えてなくなれよ >オブジェクト指向 part.2
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2009/03/22(日) 06:57:59http://pc11.2ch.net/test/read.cgi/tech/1198822420/
0288デフォルトの名無しさん
2009/05/12(火) 22:41:02OO使える(と思っている)やつが、OOのメリットを明確に示せないからしかたないね。
0289デフォルトの名無しさん
2009/05/12(火) 23:07:05まったくアプローチが違うっていうのと一緒。
プログラミングできない人は「プログラミングしなくても、Excelあれば十分じゃん」言うし、
プログラミングできる人は「awkで処理すればすぐできるのに」と思う。
0290デフォルトの名無しさん
2009/05/12(火) 23:22:530291デフォルトの名無しさん
2009/05/12(火) 23:28:17定義に費やして、ファイル末尾三行ぐらいでnewしてメソッド呼び出し、終了って
のを、時々見かけるけど、あのOOPは何かの役に立ってるんだろうか?
0292デフォルトの名無しさん
2009/05/12(火) 23:31:26ただ、彼らは学習に時間と金をかけられないから
何をやるにもシェルスクリプトオンリーとかawkオンリーになるわけだ。
たとえ面倒でも、他人に頼らずに目的を達することができるなら、
それはそれでアリだろう。
何でも同じ包丁で調理するのは我々から見ればナンセンスだが
彼らの立場では合理的選択なのさ。
0293デフォルトの名無しさん
2009/05/13(水) 05:35:27役に立っていないと思うよ。
トップレベルの名前空間を汚したくないからクラスに隔離している
だけだと思う。今のところRubyではこれが一番簡単な方法。
グローバル変数とかの類は気分的に気持ち悪い人も多いかと。
書き捨てならともかく再利用したり他人の目に触れる可能性がある
プログラムならなおさらね。
0294デフォルトの名無しさん
2009/05/13(水) 05:35:27役に立っていないと思うよ。
トップレベルの名前空間を汚したくないからクラスに隔離している
だけだと思う。今のところRubyではこれが一番簡単な方法。
グローバル変数とかの類は気分的に気持ち悪い人も多いかと。
書き捨てならともかく再利用したり他人の目に触れる可能性がある
プログラムならなおさらね。
0295デフォルトの名無しさん
2009/05/13(水) 07:30:23馬の耳に念仏って言葉、知ってるか?
0296デフォルトの名無しさん
2009/05/13(水) 09:22:590297デフォルトの名無しさん
2009/05/13(水) 10:26:370298デフォルトの名無しさん
2009/05/13(水) 11:44:050299デフォルトの名無しさん
2009/05/13(水) 18:38:55たとえば、関数型の高階関数をOOでどうやってやるんだって考えてたら
抽象メソッドを継承するって思いついた。
0300デフォルトの名無しさん
2009/05/13(水) 20:16:080301デフォルトの名無しさん
2009/05/13(水) 21:26:56関数型言語やったことねぇだろwwww
0302デフォルトの名無しさん
2009/05/14(木) 20:20:560303デフォルトの名無しさん
2009/05/14(木) 23:30:06関数型なら引数に関数を取れる、で一発
0304デフォルトの名無しさん
2009/05/15(金) 02:35:470305デフォルトの名無しさん
2009/05/15(金) 02:38:37だからOOPLは手続き型言語の一種
0306デフォルトの名無しさん
2009/05/15(金) 03:31:360307,,・´∀`・,,)っ-○○○
2009/05/15(金) 07:32:560308デフォルトの名無しさん
2009/05/15(金) 07:59:55現代的な言語に絞っても、Haskellにも型クラスの継承関係あるし
PrologにもOO拡張が存在するし
0309デフォルトの名無しさん
2009/05/15(金) 08:07:330310デフォルトの名無しさん
2009/05/15(金) 08:30:080311デフォルトの名無しさん
2009/05/15(金) 09:14:310312デフォルトの名無しさん
2009/05/15(金) 14:04:110313デフォルトの名無しさん
2009/05/15(金) 15:33:08禿が言ってる
0314デフォルトの名無しさん
2009/05/15(金) 15:36:14∧_∧
ミ ゚Д゚ 彡
∪ ∪
し―J
誰がハゲにゃねんっ!
( ⌒ )
| | /
γ⌒`ヽ ぷんぷん
⊂ミ,,゚Д゚彡
/ ノ∪
し―J ‖|
ペシッ!!
_) ∧_∧ (_
⌒) (⌒
γ⌒`ヽ
ミ ゚Д゚ 彡
∪ ∪
し―J
0315デフォルトの名無しさん
2009/05/16(土) 21:06:310316デフォルトの名無しさん
2009/05/17(日) 13:39:390317デフォルトの名無しさん
2009/05/18(月) 20:48:28OO分析とかOOデザインとか言ってる奴等にかぎって役に立たないのはなぜ???
0318デフォルトの名無しさん
2009/05/18(月) 21:03:27理解できない子はとりあえず取り替えないとチームが成立しない
0319デフォルトの名無しさん
2009/05/18(月) 21:08:51その昔
「アホでも使えるようになるからOO分析とかOOデザインをやれ」
って聞いたぞwW
0320デフォルトの名無しさん
2009/05/18(月) 21:13:20なんかでも作りこみすぎはダメてなことが載ってる。
時代的にまた一回りしてきたってとこかね。
0321デフォルトの名無しさん
2009/05/18(月) 21:55:13まぁね、UML とか言っても、まだハード屋が使ってるビヘイビア記述に
追いついてないような気がするし、記述方法とかを理解できる奴の範囲
が限られるし…
ソフト畑って、未だにベース部分のばらつきが大きすぎるんだと思うよ
ゆとりとか何とか言ったって、ハード屋の方が粒がそろってるように見える
0322デフォルトの名無しさん
2009/05/18(月) 22:25:34それを無能世代の別の言い方にしてしまったのは団塊世代なんだぞ。
ゆとり教育世代を批判しまくって人材を安く買いたたくためでしかない。
未だにゆとりがどうのこうの言ってるやつはそろそろ団塊世代に踊らされていたことに気づけ。
んで、当の団塊世代が定年などで一線から退いたら、今度は手のひらを返したように「今の若い人は優秀で自分たちがいかにボンクラだったか思い知らされる」
などと言っている訳なんだよ。
結局、優秀なやつは優秀で無能なやつは無能というだけ。
その数に世代は関係ないみたいだね。
0323デフォルトの名無しさん
2009/05/18(月) 23:15:36文系なのにハード屋ってのはまだ少数派だろう。
0324デフォルトの名無しさん
2009/05/18(月) 23:52:09OOライブラリを使わせるだけならそうだろうけど
使うだけの側のプログラマーって現実的にはありえないし
0325デフォルトの名無しさん
2009/05/19(火) 00:23:05生産効率下がるじゃん
0326デフォルトの名無しさん
2009/05/19(火) 01:02:390327デフォルトの名無しさん
2009/05/19(火) 02:26:040328デフォルトの名無しさん
2009/05/19(火) 04:45:23でもオブジェクト指向の本来はインスタンス指向なのに
巷ではすっかりクラス指向になってしまった
せっかくの良いアイディアが腐ってしまった
元を質せばC++がOOと相性の悪い静的型付けマンセーだからだ
つまり禿が悪い
0329デフォルトの名無しさん
2009/05/19(火) 05:04:58それだけのためにクラスを使っている。
他の面倒な機能は使っていない。
0330デフォルトの名無しさん
2009/05/19(火) 05:12:19消えてなくなれよ->オブジェクト指向(2);
0331デフォルトの名無しさん
2009/05/19(火) 08:05:17Scalaみたいなやつ?
0332デフォルトの名無しさん
2009/05/19(火) 08:52:57何言っているんだ?
インスタンス指向とクラス指向って何がどう違うんだ?
俺にはどちらも同じに感じるのだが
0333デフォルトの名無しさん
2009/05/19(火) 11:12:20クラス指向っていうのは多分、すっぽすっぽ先生の抽象型によるOOのこと
あと一つなんかあった気がするけど忘れた
0334デフォルトの名無しさん
2009/05/19(火) 12:25:31だからイマイチ流行らねんだ。
0335デフォルトの名無しさん
2009/05/19(火) 13:13:31そいつの説明を聞いても、単なる言い方の違いとしか思えないのだが...
0336デフォルトの名無しさん
2009/05/19(火) 13:16:19無いわー
JavaやC#やってた人がJavascriptに違和感なく入れるっていう人くらい詐欺話だわー
0337デフォルトの名無しさん
2009/05/19(火) 14:51:09Javaやってる人がC#に違和感無く入れるって?
0338デフォルトの名無しさん
2009/05/19(火) 16:49:590339デフォルトの名無しさん
2009/05/19(火) 17:58:38クラスはコンパイル時に静的に決定される。
0340デフォルトの名無しさん
2009/05/19(火) 19:30:01それは静的型付けクラスベースの場合だけ。
0341デフォルトの名無しさん
2009/05/19(火) 20:20:29静的とか動的と言う言葉の定義がわからん
0342デフォルトの名無しさん
2009/05/19(火) 21:33:33静的だろうが動的だろうがどうでもいい
今時、最低点の型推論もしないような糞コンパイラは捨てろよ
高級言語名乗る資格なし >> ほとんどの C++
# C は高級アセンブラなので許す
0343デフォルトの名無しさん
2009/05/19(火) 22:06:49クラスを持つものだけがオブジェクトという糞設計で改悪どころではないんだよ
メッセージ通信による弱い結合で柔軟に記述できるはずが
継承を繰り返して親クラスの親クラスの..とあちらこちらに依存しているという
情けないことになってしまった
Smalltalkにあったクロージャやダックタイピングというオブジェクト指向の
重要な機構は無断でどこかに捨ててしまったくせに
オブジェクト指向という名前だけちゃっかり借用してるんだ
しまいにテンプレートだジェネリクスだとマクロの変種を持ち出し
例外処理という名のGOTO文やシングルトンと呼ばれるグローバル変数を乱用し
一体どこまで悪くすれば気が済むんだか
消えてなくなるべきは紛い物のオブジェクト指向もどきだよ
0344デフォルトの名無しさん
2009/05/19(火) 22:12:320345デフォルトの名無しさん
2009/05/19(火) 22:15:04「ピュアピュアリスプ
計算なんかはできないの」
ってのと、おんなじ
0346デフォルトの名無しさん
2009/05/19(火) 22:21:03純血オブジェクト指向じゃ組みにくいよ
ジェネリクス・例外処理は便利
0347デフォルトの名無しさん
2009/05/19(火) 22:26:38プロトタイプベースは動的バインディングでないと無理だと思う。
0348デフォルトの名無しさん
2009/05/19(火) 22:45:05組みにくいなら海外でRubyがうけたりしないよ
生産性の高さ"だけ"ならRuby最強だと思ってる
Smalltalkの変態構文のこと言ってるんでしょうけどね
0349デフォルトの名無しさん
2009/05/19(火) 22:56:51Rubyにbegin rescueあるだろ。
動的型付けだからジェネリクスはないが。
Rubyの生産性が高いのは認める。
0350デフォルトの名無しさん
2009/05/19(火) 23:27:04ダックタイピングで思い出したが、Scalaの静的ダックタイピングが超便利。
0351デフォルトの名無しさん
2009/05/20(水) 00:02:12勿論、実行時にしかわからない動的な処理を行うなら
例外機構が必要なのは分かってるが
単にエラーコードを戻せばすむようなケースまで
乱用されるようになってしまったのは禿げがキチンと
説明しなかったせいじゃないかと思ってる
自分はあんまりraiseしないで使えてるし
0352デフォルトの名無しさん
2009/05/20(水) 08:33:56> 例外処理という名のGOTO文やシングルトンと呼ばれるグローバル変数を乱用し
Smalltalk否定ですか。
例外処理は例外がエスケープしなければ構造化を壊さないし、
Singletonを禁じ手にしたらSmalltalkのMetaclassをどう定義しますか?
0353デフォルトの名無しさん
2009/05/20(水) 08:49:33例外を嫌う理由がわからん。
メソッド呼び出しの深いところでエラーが発生したら、
いちいちエラー処理するレベルまで呼び出しを逆にたどって
エラーコードを戻すのってうっとしくないか?
0354デフォルトの名無しさん
2009/05/20(水) 08:55:28大抵わかんねーし
馬鹿に限ってドキュメントかかねーし
普通にFALSE返せばいいようなのを例外で返ってくるようなのもあるしね
0355デフォルトの名無しさん
2009/05/20(水) 12:11:24それぞれの関数でエラー処理するだけだろ。
関数作るときに、それがどのくらいの深さで呼ばれてるとか
意識するべきではないし。
0356デフォルトの名無しさん
2009/05/20(水) 12:36:07のは例外も関数内でのエラー処理も一緒だと思うけど。
0357デフォルトの名無しさん
2009/05/20(水) 12:42:540358デフォルトの名無しさん
2009/05/20(水) 12:44:03エラー処理の実装を関数側に書きたくない事って多いと思うけど。
コンソールに吐きたいとかログに吐きたいとかダイアログ出したい
とか見ないふりして先に進みたいとか、呼び出し側で決めたいこと
は少なく無いと思う。
関数内で確保したリソースの解放とか、関数内で出来る後始末だけ
してもらって後はさっさと例外投げてもらった方が使い勝手が良い
し再利用性も高いと思うけど。
0359デフォルトの名無しさん
2009/05/20(水) 12:47:56エラーを関数内で処理してしまうつくりは良くないとかなんとか。
0360デフォルトの名無しさん
2009/05/20(水) 12:56:49>関数作るときに、それがどのくらいの深さで呼ばれてるとか
>意識するべきではないし。
だから例外処理がいいんだろ。
それぞれの関数でエラー処理ってそらないわ、358の言うとおり。
0361355
2009/05/20(水) 15:01:11エラーコード返すくらいだけど?
エラーコードをどう処理するかは呼び出し側の関数で決めればいいこと。
0362デフォルトの名無しさん
2009/05/20(水) 15:42:34355は直接呼び出したメソッドでエラー処理しているらしいことはわかった
おれは同じようなエラー処理をあちこちに書きたくないから例外を使う
0363デフォルトの名無しさん
2009/05/20(水) 17:22:38呼び出し関係が深くなっていった場合を考えよう。
それぞれの呼び出し側でエラーを認識して、そのまた呼び出し側にそのエラーを正しく伝えなければならない。
そんなことするぐらいなら、例外で1つのハンドラで包んだほうが構造として正しいと思わないか?
0364デフォルトの名無しさん
2009/05/20(水) 20:08:53Rubyってクラス指向でしょ。
クラスとインスタンスは明確に区別されている。
0365デフォルトの名無しさん
2009/05/20(水) 21:24:47C++はSimulaゆずりのクラス中心の言語なのに対して、
Rubyはインスタンス中心の言語にみえる。
もともとC++やSimulaは、抽象データ型言語であっても
オブジェクト指向言語とは言われてなかった。誰かが故意に
オブジェクト指向の意味を拡大解釈したんだろうね
>>313 のマルチパラダイム指向言語ならまだ許せる
0366デフォルトの名無しさん
2009/05/20(水) 21:50:38うほっScala知らなかったよ。禿が無断で削除した重要な機能が全部カムバックしとるw
関数はオブジェエクトだし、ジェネリクスはあるけどまともに型を認識する
C++のグチャグチャなエラー吐くマクロもどきはなくなってるじゃん
0367デフォルトの名無しさん
2009/05/20(水) 21:54:52365の言うインスタンス中心の言語って何だよ
おれはインスタンス指向といえばJavaScriptをイメージした。
C++とRubyは静的型付けか、動的型付けかの違い。
0368デフォルトの名無しさん
2009/05/20(水) 22:34:34俺は>>355とは違う人だけど
呼び出し側でそんなことする意味あんの?
仮に100回その関数を記述したら100箇所で同じ処理書くってことでしょ?
エラーはあくまで関数内で処理を決めるべきだと思う
そうしないと上記手間が増えるし、呼び出し側で正しいエラー対処をしないと・・・ってのがなんか気になる
だったら関数内でしかるべき処理しろよって思う
俺の理想は関数はあくまで成功したか失敗したかを呼び出し側に通知して
詳細なエラー処理はあくまでテメーでなんとかしろってのが俺流
もし、その関数の失敗の仕方が仕様に関わってくるならそれはもう
その関数は失敗していないんじゃないかと俺は思う(意味わかるかな?)
0369デフォルトの名無しさん
2009/05/20(水) 22:44:15C++はまずクラスを作りそれを型紙としてインスタンスを生成する
Rubyはまずインスタンスを作りメンバーを追加する
書式を似せて同じように見せているが中身が全く違う
Rubyのクラスというのはデフォルト実装の指定であって
動的型付け言語というより型の無い言語と考えるべき
C++に後からメンバ関数を追加する簡単な方法はない
0370デフォルトの名無しさん
2009/05/20(水) 23:11:160371デフォルトの名無しさん
2009/05/20(水) 23:29:19俺は>>363とは違う人だけど
>呼び出し側でそんなことする意味あんの?
そんなこっとってエラー処理だよね
>呼び出し側に通知して
>詳細なエラー処理はあくまでテメーでなんとかしろって
これって呼び出し側でエラー処理しろってことだよね
言ってることがよくわからん。
0372デフォルトの名無しさん
2009/05/20(水) 23:54:37違うってだから例外で色々キャッチさせるだろ?
こっちが例外を全部処理しなきゃいけないみたいによ
でも実際に必要なのは
BOOL transXXXX()
これ↑このBOOLだけじゃん
詳細な情報ってのは関数の中でやればいいじゃん
(だって決まったエラー対応してほしいんでしょ?)
0373デフォルトの名無しさん
2009/05/21(木) 00:09:55簡単に言うと、RubyではクラスCのインスタンスaとbがあったとして、aにのみ実行中にメソッド(メンバ関数)を追加できる。
Javascriptと同様にインスタンス指向の言語と呼べると思う。
0374デフォルトの名無しさん
2009/05/21(木) 00:14:28関数内でエラーが発生したら戻り値をfalseにするというのはわかった。
例えば通信用の送信関数でBOOL SendMessage(string message);
て感じのものがあって、呼び出し側SetupDeviceは何回かSendMessageを呼ぶとする
エラーリターンの場合は
int SetupDevice() {
if (!SendMessage("Init")) return false;
if (!SendMessage("Set1")) return false;
if (!SendMessage("Set2")) return false;
return true
}
void main() {
if (!SetupDevice()) printf("通信エラー");
//後続処理
}
0375デフォルトの名無しさん
2009/05/21(木) 00:14:44わざとなのかもしれんが意味不明で滑ってる
0376デフォルトの名無しさん
2009/05/21(木) 00:18:18void SetupDevice() {
SendMessage("Init");
SendMessage("Set1");
SendMessage("Set2");
}
void main() {
try {
SetupDevice();
//後続処理
} catch() { //通信の例外が発生
printf("通信エラー");
}
}
で、楽だと思う
0377デフォルトの名無しさん
2009/05/21(木) 00:19:55詳細な対応をしたいときはどうする?
0378デフォルトの名無しさん
2009/05/21(木) 00:22:56ありえない(俺の経験上)
それは結局他の呼び出し箇所でもやらなければいけない内容であって
関数の中でやれと思う
0379デフォルトの名無しさん
2009/05/21(木) 00:24:260380デフォルトの名無しさん
2009/05/21(木) 00:25:00処理を変えることが必要であるなら
そもそもこの関数はfalseを返してはいけない
この関数がfalseを返すときは出力のすべてが無効のときでなければならない・・・はず
0381デフォルトの名無しさん
2009/05/21(木) 00:27:43了解、特異メソッドはインスタンス指向だと思う
objectのインスタンスに特異メソッドを追加するだけの方法で
プログラミングできるとも思う。
自分はあまり特異メソッドを使っていない。
クラス指向で組んでいる。
rubyはどちらにもなると言うことか
0382デフォルトの名無しさん
2009/05/21(木) 00:27:53SetupDeviceが例外を吐いてくれるかどうかはそのソースのどこで判断するの?
後続処理のどれかが吐いてる例外かもしれないんでしょ?
0383デフォルトの名無しさん
2009/05/21(木) 00:41:17だから後続処理で通信エラーが発生しても例外処理が1つで済むんだよ
SetupDeviceだけ通信エラーをトラップしたいなら
void SetupDevice()
{
0384デフォルトの名無しさん
2009/05/21(木) 00:43:27そんなこと聞いてないよ
初見でみた人がSetupDeviceが例外を返す仕様かどうかをどうやって判断するか聞いてるんだよ
0385デフォルトの名無しさん
2009/05/21(木) 00:46:39だから後続処理で通信エラーが発生しても例外処理が1つで済むんだよ
そんなニーズはあまりないが、あえてSetupDeviceだけ通信エラーをトラップしたいなら
例外処理をmainからSetupDeviceに移して
void SetupDevice()
{
try {
SendMessage("Init");
SendMessage("Set1");
SendMessage("Set2");
} catch() { //通信エラー
printf("通信エラー");
}
}
0386デフォルトの名無しさん
2009/05/21(木) 00:47:59さっきから勝手に質問を曲解してうぜぇけど
誰もそんなこと聞いてねぇよ
0387デフォルトの名無しさん
2009/05/21(木) 00:49:37ドキュメント
■ このスレッドは過去ログ倉庫に格納されています