オブジェクト指向の先には一体何があるんですか?
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2009/01/28(水) 02:21:420232デフォルトの名無しさん
2010/03/19(金) 21:30:22意味がないところ
別にオブジェクト単位にしたところで工数など1hたりとも減らすことはできない
0233デフォルトの名無しさん
2010/03/20(土) 00:36:58対象物をすべてオブジェクトって概念で抽象化しようとするのに無理があるところw
0234デフォルトの名無しさん
2010/03/20(土) 15:26:43実装は後回しでもいいから、人間の意図の表現とプログラミング言語の間を埋める、
表現の手段が欲しい。
0235デフォルトの名無しさん
2010/03/20(土) 15:56:310236デフォルトの名無しさん
2010/03/20(土) 20:22:15オブジェクト指向は一次的な工数を減らすためにやるものではないし、
ましてや、対象を全てオブジェクト化することを目的としてやるものでもないぞ?
0237デフォルトの名無しさん
2010/03/20(土) 20:46:16じゃあ、なんのためにやるの?
成果を数字で表してくんない?
0238デフォルトの名無しさん
2010/03/20(土) 21:05:38なかなかきちんとまとまった説明はないけど、例えばこれとか参考になるんじゃないかな。
http://itpro.nikkeibp.co.jp/article/COLUMN/20060921/248617/
要求の変化に伴う保守性や再利用性、なんてのはなかなか数値化できんわな。
個人的な経験から言えば、OOの基本的な概念を軽く押さえたら、
次はデザインパターンの勉強をするのが理解の早道だと思う。
0239デフォルトの名無しさん
2010/03/21(日) 00:16:39まぁ、グローバル変数をオブジェクトに押し込んでみました、ってだけの技術やからね…
成果なんて出ないと思うよ
0240デフォルトの名無しさん
2010/03/21(日) 00:45:100241デフォルトの名無しさん
2010/03/21(日) 00:45:570242デフォルトの名無しさん
2010/03/21(日) 00:46:32結局、何が言いたいのかまったくわからない
自分の言葉で単刀直入に結論から言ってよ
0243デフォルトの名無しさん
2010/03/21(日) 01:18:48俺の理解では、
オブジェクト指向の目的:
・複雑な要件を「まとまり」単位で整理することで、人間の手に負えるようにする
・「まとまり」同士を疎結合に保つことで、要求の変化に柔軟に対応できるようにする
(・多人数開発において、個々のコードの影響範囲を限定することでバグの作りこみを減らす)
「まとまり」につく名前は「オブジェクト」だったり、そうでなかったりするけど、基本は同じ。
0244デフォルトの名無しさん
2010/03/21(日) 02:11:13つまり数字ではでてこないのね
気がするだけレベルなのがな
0245デフォルトの名無しさん
2010/03/21(日) 02:33:13どういう種類の数字?
こうした原則に則って粛々とやっていけば、目に見えて保守しやすいコードがアウトプットできるし、
仕様変更に伴う工数も大幅に短縮できるはずだが。
つうか、見ての通り、きちんとコーディングする上でごくごく当たり前の方法論でしかないわけで、
『「工数○○日短縮」って数字で示されないとやる気が起きない』とかいう話になること自体が不思議。
0246デフォルトの名無しさん
2010/03/21(日) 02:41:06>仕様変更に伴う工数も大幅に短縮できるはずだが。
だったら数字をだせよ
0247デフォルトの名無しさん
2010/03/21(日) 02:43:21逆に考えよう
それが自分のただの思い込みだったら?
ぶっちゃけC++とC言語とで比べてまったく同じ処理をするソースを書いたことないでしょ?
0248デフォルトの名無しさん
2010/03/21(日) 02:56:25そりゃ、書いてるコードや仕様変更の内容による。
>>247
異なる言語で同じ処理を「試しに」書けてしまうような規模の開発でやったら、
そりゃ、「効果が薄いわりに冗長なコーディングを強要される」と感じるに決まっている。
個人的な経験で言えば、数千NCSS程度のコードでも、こういうことをきちんとやるだけで
保守性にかなり差が出てくると思う。
0249デフォルトの名無しさん
2010/03/21(日) 03:01:26>保守性にかなり差が出てくると思う。
「思う」以上のこと言えないよね?
0250デフォルトの名無しさん
2010/03/21(日) 03:03:51実体験と書いてあるわけだが。
0251デフォルトの名無しさん
2010/03/21(日) 03:05:24だったら「思う」じゃなくて事実を書けばいいじゃん
0252デフォルトの名無しさん
2010/03/21(日) 03:11:45揚げ足取りがやりたいならよそでやってくれ。
0253デフォルトの名無しさん
2010/03/21(日) 03:19:46どこが上げ足とってんだよw
工数を大幅に短縮できるっていうからそれはどうして?って聞いてるのに
これこれこういう理由で具体的にこう減らせる
って話をしなきゃいけないのに「思う」とかそんなあいまいなレスつけるからだろ
知らなきゃレスしなきゃいいだろ
0254デフォルトの名無しさん
2010/03/21(日) 03:28:33実体験に基づいて、実際にオブジェクト指向を採用することによる効果が出てくるコード規模について、
推測を交えて話したら、君の中では俺が全てについて憶測で話していることになるの?
0255デフォルトの名無しさん
2010/03/21(日) 04:15:50だから知らないなら無理してレスしなくていいって
別に俺の問題に対する答えをもってるわけじゃないんでしょ?
0256デフォルトの名無しさん
2010/03/21(日) 04:30:53えーっと、君の問題って何だっけ?
0257デフォルトの名無しさん
2010/03/21(日) 04:31:57一人でコード書くなら差はあまり感じられないかもしれない
オブジェクト指向は、クラスのカプセル化と
小規模なクラス群からの継承やコンポジションで開発を進めていく
クラス型の選択で仕様変更を楽にできるメリットや
複数人で開発するにあたり、機能を細かく開発したり、拡張部分を楽に開発可能だし
カプセル可により、他人が安全に機能を運用できるメリットもある
特筆すべきなのは、直感的にソースがよめるため可読性が高くなること
部品を集めて組み立てるかのように、機能の選択で構築するから分かりやすい
言い換えると、中途半端なオブジェクト指向が一番読みづらい
スパゲティコードとなんら変わらないものになる
0258デフォルトの名無しさん
2010/03/21(日) 04:39:17だから具体的な答えをもってないのになんでレスするの?
無理しなくていいよ
0259デフォルトの名無しさん
2010/03/21(日) 04:44:18可読性の向上や、想定していない使用方法からくるバグとデバッグ時間
コードの修正による再コンパイル時間
諸々の理由からくる余計な時間が省けるだけ
元より開発能力の高い人だけの少人数開発で
再開発しない単発の開発なら
おそらく工数は変わらないか
余計な時間がかかるかもしれない
まあ本当に開発能力が高いなら微々たる時間だろうけど
0260デフォルトの名無しさん
2010/03/21(日) 04:52:08>可読性の向上や、想定していない使用方法からくるバグとデバッグ時間
向上してるかどうかなんてわかんないんでしょ?
0261デフォルトの名無しさん
2010/03/21(日) 04:52:22お前の言っている数値ってなんだ?
基準は相対基準か絶対基準か?
工数は普通相対基準で計るもの
相手が工数が減ったと言っているから充分だが
相手に、何の数値を求めている?
何も分かっていないで言ってないか?
お前馬鹿だろう
0262デフォルトの名無しさん
2010/03/21(日) 04:59:09あー、わからないならレスしなくていいって
そこからいってなにをすれば証明にいたるのかわからない奴相手にしたくないから
0263デフォルトの名無しさん
2010/03/21(日) 05:00:16可読性がってこと?
まあそうだね
数値化はできないな
だけど、開発規模がでかくなればでかくなるほど
自分が作成していないコードが増えることになる
そのとき、ヘッダ名(クラス名)と
外部に公開されたメソッド(publicなメンバ関数名)さえ分かれば
何をする部品なのかすぐわかる
コメント残せばいいじゃんと思うかもしれないが
他人が作ったコードと、他人が書いたコメントが一致してるかどうかなんてはっきりいって信用できん
後はUMLの設計図、クラス図さえあれば
どのクラスと関係を持ってるのかがわかればより早いよ
0264デフォルトの名無しさん
2010/03/21(日) 05:04:00ごちゃごちゃ無駄なこと書いてるけど結局可読性が上がってる云々とは関係ないじゃないか
だからわからないのに無理してレスするなよ
0265デフォルトの名無しさん
2010/03/21(日) 05:06:40ひとつひとつのメソッドを全て読むのと、名前だけの確認で終わるのどっちが早いのかはわからない?
0266デフォルトの名無しさん
2010/03/21(日) 05:11:03なんで全然関係ない話をするの?
0267デフォルトの名無しさん
2010/03/21(日) 05:13:17可読性の話の続きなんだが
0268デフォルトの名無しさん
2010/03/21(日) 05:14:33理屈だけで覚えようとしてるなら用語もわからないかもしれないな
0269デフォルトの名無しさん
2010/03/21(日) 05:17:44それがC言語からC++に変わって(オブジェクト指向という意味で)のメリットなの?
君、自分がまったく関係ない話してるの気がついてる?
0270デフォルトの名無しさん
2010/03/21(日) 05:19:25自分は片言の日本語でやりとり
一つでもおかしな点があると思い込んだら全否定
質問して知識の物乞いしてんのに殿様気取り
普通ならぶん殴られてもおかしくないから直せよ
0271デフォルトの名無しさん
2010/03/21(日) 05:21:12だから別に知らないならレスしなくていいって言ってるじゃん
0272デフォルトの名無しさん
2010/03/21(日) 05:35:05外部にみせていいメソッドだけ公開できるのはC++からだろ
カプセル化ができないと全てのメソッドを公開しないといけない
だから全部読むはめになる
どこもずれていない
あといつからCとC++の話になった?
構造指向とオブジェクト指向は両極にある概念じゃない
C++の概念はCの概念を内包する
Cの考え方はわかっているのだろ?
それならオブジェクト指向が延長線上にあるのもわかっているはず
わからないなら、アセンブラからCに変わって発達した
構造化プログラミングのメリットを269なりに述べてみ
あと、はっきり言って認めた部分もあるだろ
理屈がわかるならわかっているはずだ
そうでなければただの荒らし
もうレスは返さない
0273256
2010/03/21(日) 05:43:24代わりに答えてくれてありがとう。
どうも、彼は単に自分の知らない概念を全否定したいだけの人だったみたいだね。
時間を無駄にしてしまった。
0274デフォルトの名無しさん
2010/03/21(日) 05:46:36コンテナ操作が標準であるし、templateで静的動作(コンパイル時動作)が可能になる
煩雑な型の作成すら汎用化できるため
今まで個別に作っていたクラスを一つのファイルで書ける
正直、これは説明しようにも長くなりすぎるから割愛する
0275デフォルトの名無しさん
2010/03/21(日) 05:47:26なんでさっきから知らないのに無理やりレスするの?
いいって言ってるのに押し付けるのやめてよ
0276デフォルトの名無しさん
2010/03/21(日) 05:48:16はっきり言えば、あなたの言い方が
多分オブジェクト指向を理解していると言いづらかったから横槍いれたんです
もっと勉強してください
0277デフォルトの名無しさん
2010/03/21(日) 05:50:10そんなこといって結局メリットに関してなんも具体的な説明できないじゃん
だから知らないならレスしなくていいって言ってたのにやけにつっかかるなぁ
0278デフォルトの名無しさん
2010/03/21(日) 06:00:07再コンパイル時間については?
可読性の向上については?
反論ないようだね
これ以上レスしないから安心していいよ
悪質なあなたの反論を掻い潜ることができたと言うことは
私の理屈は間違いないということだ
なお続けようとするあなたに同情すらしてやらないよ
理論もプログラミングも私より劣っている人に説明できて
理解を簡潔にまとめることができた
0279デフォルトの名無しさん
2010/03/21(日) 06:26:18あれが具体的?
頭おかしいんじゃないか?
工数はいくつ減らせるの?
普段仕事してて1hだって根拠を求められるのに
なんで言語に対してはそういい加減なの?
ちょっとわけありでいい加減なことやってる場合じゃないから
あなたみたいな人普通に邪魔なんだけど
0280デフォルトの名無しさん
2010/03/21(日) 06:30:10知らないなら無理やりレスするのやめてもらえます?
まったく同じ仕様のものをC言語とC++とで比較した経験すらおそらくあなたないですよね?
0281デフォルトの名無しさん
2010/03/21(日) 06:33:43知らないならレスしなくていいよ
0282デフォルトの名無しさん
2010/03/21(日) 06:45:02工数?
1/2以下
0283デフォルトの名無しさん
2010/03/21(日) 11:11:28cのstructじゃ処理(関数)を外側で指定(関数ポインタへの代入)しなくちゃならないんだし。
waveのinとoutの低レベルな関数はcでべた書きで用意して、
waveファイル, waveinストリーム, waveoutストリームってな感じで、
簡単に扱えるようにしたclassはc++で用意してってやると、
利便性も拡張性も供給できて、高レベルも低レベルも両方同じコードで提供できる。
詰まる所、需要と供給の話程度かと。
0284デフォルトの名無しさん
2010/03/21(日) 13:37:34まぁ、貴方のように、既にデスマってしまった人を救済する銀の弾丸ではないかもね。
そもそも、そういう事態に陥らないための方法論がオブジェクト指向。
あるいは、レガシーコードをどうにかしたいって話だったら、こういう本を読んでみると良いんじゃないかな。
http://www.amazon.co.jp/dp/4798116831
http://www.amazon.co.jp/dp/4048676881
0285デフォルトの名無しさん
2010/03/21(日) 23:42:59てか「処理」と「データ」をオブジェクトの名の下に一元管理できるのは大きな要素だと思う
0286デフォルトの名無しさん
2010/03/22(月) 16:33:30処理とデータを関連づけるのはいいが
一緒にするのはダメなオブジェクト指向の典型だ
0287デフォルトの名無しさん
2010/03/22(月) 17:03:59おまえ、手続き抽象ぐらいは理解した上で書いているのか?
0288デフォルトの名無しさん
2010/03/22(月) 17:57:47否定してるわけじゃない
インターフェースとデータは分けて管理するのは当然だろ
0289デフォルトの名無しさん
2010/03/22(月) 18:56:51それって細かい実装技術でしょ?
それが設計にまで影響しちゃうのってないじゃん
なんかこのスレに相応しくない話してない?
インターフェースクラスが本質の設計に影響を与えるのってないでしょ?
0290デフォルトの名無しさん
2010/03/22(月) 18:57:490291デフォルトの名無しさん
2010/03/22(月) 19:05:19どっちでもいっしょでしょ?
0292デフォルトの名無しさん
2010/03/22(月) 19:06:11え?w 何と何が?w
0293デフォルトの名無しさん
2010/03/22(月) 19:06:42上げ足取りたくてレスしたの?
死ねよ
0294デフォルトの名無しさん
2010/03/22(月) 19:09:19どうせ二行費やすなら>>292答えろよw
とかいいつつゴメンね、ぐぐったら"インターフェースクラス"なるものの正体が分かったわ。
0295デフォルトの名無しさん
2010/03/22(月) 19:10:19まあ、インターフェースが設計に影響与えるのはおかしいでそ?
なのでこの話はここでおしまい
0296デフォルトの名無しさん
2010/03/22(月) 19:13:58なんか誤解していたら申し訳ないので伝えておく。
俺がここまでにレスしたのは>>290 >>292 >> 294だけ。
「インターフェースクラス」っていう謎の用語に怯えただけ。
話の続きは>>288さんとでもやってんろ。
0297デフォルトの名無しさん
2010/03/22(月) 20:37:29だいたいの設計には必要無いかもな
でもひとつのデータに複数種類のアクセス方法(インターフェース)が必要な場合どうする
まさか一つのクラスにまとめるわけないだろ
インターフェースの管理についても設計すべき時なんてプログラムやってたらいくらでもあるだろ
0298デフォルトの名無しさん
2010/03/22(月) 20:38:36ないよ
ないから君の話にはこれ以外のレスしない
おわり
0299デフォルトの名無しさん
2010/03/22(月) 20:39:120300デフォルトの名無しさん
2010/03/22(月) 20:41:300301デフォルトの名無しさん
2010/03/22(月) 20:44:55Cがどうとか言ってた基地外か
boost読めないから無理だったね
0302デフォルトの名無しさん
2010/03/22(月) 22:51:310303デフォルトの名無しさん
2010/03/23(火) 01:29:06話題をそらすなよ
0304デフォルトの名無しさん
2010/03/23(火) 01:34:20javaだとインターフェースクラスを直接作れるね
C++だと、メンバ変数のない純粋仮想関数だけのクラスだと思えばよし
0305デフォルトの名無しさん
2010/03/25(木) 01:10:490306デフォルトの名無しさん
2010/03/27(土) 01:07:56なら、boostはどんな説明をするために話題に出したの?
こんなのオブジェクト設計なんてしてねーただのオナニーライブラリじゃん
0307デフォルトの名無しさん
2010/03/27(土) 15:22:24論派したいんだろうけど、話題反らしたり無知披露したりで屑認定されてるよ
0308デフォルトの名無しさん
2010/03/27(土) 15:34:49頭悪いんですね…
0309デフォルトの名無しさん
2010/03/27(土) 18:14:44オブジェクトなんて構造体でしょ?なんでそんなに有り難がる必要があるだろう
ましてや構造体でシステム設計とか意味不明
0310デフォルトの名無しさん
2010/03/28(日) 01:59:40勉強して批判しようね屑
0311デフォルトの名無しさん
2010/03/28(日) 13:46:27考えが古いのかな?
実はあまり必要ないとか?
0312デフォルトの名無しさん
2010/03/28(日) 14:05:40意味ねーし
オブジェクト指向になって具体的にいいことって出せる奴いねーもん
0313デフォルトの名無しさん
2010/03/28(日) 14:12:51Stringクラスも不要?
0314デフォルトの名無しさん
2010/03/28(日) 14:17:16仮に似たような機能C言語で作ったらいらないな
0315デフォルトの名無しさん
2010/03/28(日) 14:25:46文字列の長さ順にソートするような場合どうする?
strlenを毎回呼ぶつもり?
0316デフォルトの名無しさん
2010/03/28(日) 15:15:18それはC++でないと作れない機能ですか?
ってことだな
同じ労力だと思うぜ
0317デフォルトの名無しさん
2010/03/28(日) 15:47:16ってことだな? 思うぜ?
>>315に具体的に答えることは不可能?
「仮に似たような機能C言語で作ったら」と言ってたのに。
0318デフォルトの名無しさん
2010/03/28(日) 15:52:23は?
それって何か問題あるの?
っていうか話の主旨をどこにしたいの?
俺は別にライブラリの出来不出来の話をしたいわけじゃないんだけど?
0319デフォルトの名無しさん
2010/03/28(日) 15:53:45ライブラリの出来不出来の話などするつもりはない。
0320デフォルトの名無しさん
2010/03/28(日) 15:55:30じゃ、何が言いたいんだよ
さっきから
0321デフォルトの名無しさん
2010/03/28(日) 15:56:47「文字列の長さ順にソートするような場合どうする?
strlenを毎回呼ぶつもり?」
0322デフォルトの名無しさん
2010/03/28(日) 16:16:25そのインスタンスsに対しs.size()とサイズを取得できる。
char *に対してはstrlenを毎回呼び出す必要があるか、
呼び出さないためには値をキャッシュする変数を別途用意する必要があり、
それらの生成破棄など、管理する手間が別途発生してしまう。
また、キャッシュのための変数の中身は、
strlenの結果と同一であるように注意を払う必要も出てしまう。
これは非常に煩わしい。
一方、stringクラスのsize()メソッドを使う場合は、
サイズの再計測もさせないように実装しうるし、
それゆえ、別途キャッシュするような変数も、
その変数との同一性への心配も不要になる。
オブジェクト指向になって具体的にいいことのひとつだと思う。
0323デフォルトの名無しさん
2010/03/28(日) 17:02:42っていうC言語の関数を用意したら?
でお仕舞いな話を出されてもねw
0324デフォルトの名無しさん
2010/03/28(日) 17:16:18そんな手間をかけるくらいなら、
俺はstring#sizeを使って単に、
bool sizegreater(const std::string &a, const std::string &b) {
return a.size() > b.size();
}
こう書いて、sort(v.begin(), v.end(), sizegreater);に渡す。
> っていうC言語の関
ご苦労様ですw
0325デフォルトの名無しさん
2010/03/28(日) 17:18:23だから君が言ってるのはライブラリの有無の話でしょ?
最近、こんな馬鹿が金もらってプログラム組んでるからな
0326デフォルトの名無しさん
2010/03/28(日) 17:20:11#include <vector>
bool sizegreater(const std::string &a, const std::string &b) {
return a.size() > b.size();
}
int main() {
using namespace std;
vector<string> v;
sort(v.begin(), v.end(), sizegreater);
return 0;
}
毎回strlenを呼ばずにCで同等のことをするのは大変。
大変じゃないというのならサクッと示してほしいところ。
0327デフォルトの名無しさん
2010/03/28(日) 17:21:37>毎回strlenを呼ばずにCで同等のことをするのは大変
大変(笑)
0328デフォルトの名無しさん
2010/03/28(日) 17:22:30すでに>>322で書いたように、stringに対してs.size()が呼べるからこそ、
>>315の問題の部分は、return a.size() > b.size(); と書ける。
オブジェクト指向じゃないとこうならない。
0329デフォルトの名無しさん
2010/03/28(日) 17:25:55バーカw
しゃべるたびに頭になにも入ってないのがバレバレだなw
0330デフォルトの名無しさん
2010/03/28(日) 17:26:39本当に不要とか思ってるのなら単なる馬鹿で相手にするだけ時間の無駄だと思うんだが。
0331デフォルトの名無しさん
2010/03/28(日) 17:27:57Cでスマートに表現できるのなら俺は>>329をバカと呼んだりはしないよ。
■ このスレッドは過去ログ倉庫に格納されています