-OOP限定-プログラム設計相談室
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2005/09/24(土) 16:35:590074デフォルトの名無しさん
2005/12/11(日) 15:08:430075デフォルトの名無しさん
2005/12/11(日) 15:21:18プログラムシラナイお偉いさんにシーケンス図見せる時点で間違ってないか?
ユースケースとか配備図とかコラボレーション図とか…
0076デフォルトの名無しさん
2005/12/11(日) 15:24:200077デフォルトの名無しさん
2005/12/11(日) 15:26:46えーと、UMLって単に開発で使う図に統一規格を持ち込んだだけの
話で、それ以上のものじゃないですよ。
0078デフォルトの名無しさん
2005/12/11(日) 15:27:290079デフォルトの名無しさん
2005/12/11(日) 15:34:43厳密な設計書として書いているなら細かすぎて読めないかも
0080デフォルトの名無しさん
2005/12/12(月) 00:14:39曖昧なまま書き起こされたUMLは、一見する分には完全な仕様書に見えるため問題が分かりにくい。
UMLが客が読める仕様書としてしまうのはある意味とても危険。
0081デフォルトの名無しさん
2005/12/12(月) 20:59:11あくまでコミュニケーションツールの一つ。
処理の流れはこんな感じですよ〜みたいに。
0082デフォルトの名無しさん
2005/12/13(火) 00:53:54・・・はっ!!
0083デフォルトの名無しさん
2005/12/17(土) 02:12:043級レベルで会計ソフトって作れるのかいな?まあそっちも勉強しながらやってきます
0084デフォルトの名無しさん
2005/12/17(土) 13:08:090085デフォルトの名無しさん
2005/12/17(土) 14:39:32そういうレスはこのスレの役を果たさないな
0086デフォルトの名無しさん
2005/12/17(土) 15:51:23これってやっぱ良くないの?
0087デフォルトの名無しさん
2005/12/17(土) 15:59:24ここがちょっとわからないが、まぁpublic全開になるのは仕方ないんじゃないかな。
コンポーネント郡はそのまま使わず、派生させてから使えば上手くカプセルにできるかもしれん。
0088デフォルトの名無しさん
2005/12/17(土) 16:00:18関連というか、メッセージ送信が双方向になるなら、そのメッセージを一度整理して、分類して、
クラス内のメッセージ受信部分をインタフェースに分離するという観点で構築しなおしたらいいんじゃないの?
0089デフォルトの名無しさん
2005/12/17(土) 16:12:250090デフォルトの名無しさん
2005/12/17(土) 16:53:09サンクスコ
そうです、メッセージ送信が双方向ってことでした。
そういえばインターフェースも抽象クラスも全く使ってない。
というか使いどころもわかんね。
とりあえずそれらの勉強してみます。
ありがとうございました
0091デフォルトの名無しさん
2005/12/19(月) 12:54:31漏れは何も考えずにとりあえずメソッドはpublicにしてるんだけど…
内部からしか呼ばれないのはprotectedにしてる
まずいのか?
0092デフォルトの名無しさん
2005/12/19(月) 16:18:57いつの間にかぐちゃぐちゃなソースになるのが弊害かな。
0093デフォルトの名無しさん
2005/12/20(火) 00:10:39public:外から呼ぶ必要がある
protected:外から呼ぶ必要はないが派生クラスから呼ぶ必要がある
private:デフォルト
0094デフォルトの名無しさん
2005/12/20(火) 00:17:270095デフォルトの名無しさん
2005/12/20(火) 01:25:220096デフォルトの名無しさん
2005/12/21(水) 16:07:20その本は読んでないが、そこだけ聞いたら焚書モノだな。
0097デフォルトの名無しさん
2005/12/22(木) 00:45:27その判断を誤るとややこしいことになるからすべてpublicにしておけ
って程度なんだろうね、その本>>95
0098デフォルトの名無しさん
2005/12/23(金) 02:03:45javaのprotectedって全然プロテクトじゃないんだね
最初はprivateで作ってて派生クラスからメンバ変数へのアクセスが必要になる度に
アクセサメソッド追加してるんだけど、まずいですか?
まともなjava技術者ならどうしてます?
0099デフォルトの名無しさん
2005/12/23(金) 09:34:12全然プロテクトじゃないってどういうこと?
0100デフォルトの名無しさん
2005/12/23(金) 10:50:460101デフォルトの名無しさん
2005/12/23(金) 11:18:140102デフォルトの名無しさん
2005/12/23(金) 12:01:36早くプロテクトじゃない理由を教えてくれよう。ワクワク
0103デフォルトの名無しさん
2005/12/23(金) 12:20:31>アクセサメソッド追加してるんだけど、まずいですか?
C++もそうだし、オブジェクト指向もわかってないんじゃないかな
なんか、Cプログラマーみたい
グローバル変数使うなっていわれたから、プライベートにしてみました
みんなが必要とするから悪切磋つけました
そんなところでしょ
0104デフォルトの名無しさん
2005/12/23(金) 12:45:220105デフォルトの名無しさん
2005/12/23(金) 13:14:14まともなC++技術者ならそんなことやらない
まともなJava技術者もそんなことやらない
まともなSmalltalkerもそんなことやらない
まともなオブジェクト指向言語使用者ならそんなことやらない
0106デフォルトの名無しさん
2005/12/23(金) 14:10:15010798
2005/12/23(金) 14:10:15プロテクトじゃない云々は、javaのprotectedメンバは派生クラスだけでなく
同じパッケージにいるクラスでもアクセスできるのでC++のより緩いって意味です。
親クラス作るときにはメンバ変数全部に対してprotectedのアクセサ用意しとくものなのかな、と。
で、こういう設計はおかしいですか?
0108デフォルトの名無しさん
2005/12/23(金) 14:12:55そういうときにpribvateだと、困るから、protectedにしておいたほうが、いいのかなぁ〜。
なんっていう、下らんこと気にしているようでは、そもそもクラス抽出がうまくできているとは思えない。
0109デフォルトの名無しさん
2005/12/23(金) 14:15:50サブクラスのためにその都度スーパークラスを改変する ってのがナンセンス。
継承前提で設計されたスーパークラスはそんな改変しょっちゅうしない。
0110デフォルトの名無しさん
2005/12/23(金) 14:17:48?
派生からアクセスが必要になる度にアクセッサを追加してるんじゃないの?
そもそも日本語もだめだったり?
0111デフォルトの名無しさん
2005/12/23(金) 14:25:09メンバ変数全部に対してprotectedのアクセサ用意って
これはカプセル化の意味ないと思うんだが…
多分そのスーパークラスの設計から見直したほうがいいんじゃ
0112デフォルトの名無しさん
2005/12/23(金) 14:32:59工数削減の関係で仕方なく、継承させるつもりがまったくなかったクラスに
スーパークラスとして、アクセサを追加してました。
まったく継承させるつもりがなくても、あとあとのことを考えて
protectedアクセサを…ってダメダメですよね。
設計が悪かったのが理解できました。みなさんありがとう
0113デフォルトの名無しさん
2005/12/24(土) 00:00:27デフォコンだけでしょ
0114デフォルトの名無しさん
2005/12/24(土) 00:30:10?
0115デフォルトの名無しさん
2005/12/31(土) 04:53:35∧_∧ / ̄ ̄ ̄ ̄ ̄
(ω・ )ゝ < なんだって?
ノ/ / \_____
ノ ̄ゝ
0116デフォルトの名無しさん
2005/12/31(土) 10:26:20オーバーロードとは違う
0117デフォルトの名無しさん
2005/12/31(土) 13:39:08Aという共通抽象クラスがあって、業務Bと業務Cがあり、BとCは機能がほとんど同じ
この場合、どっちがよい?
1)A<Bと継承して、更にB<Cと継承して違うところだけは追加・オーバーライドする
2)A<B, A<Cと別々に継承する
1だと違う部分だけ書けばそれだけでいいけど、もしBの共通部分が変更になるとCにも影響する恐れがある
2だとBの共通部分が変更になってもCには影響しないが、多少かぶってしまう箇所が出てくる
個人的には2かなと思ってるけど、今の現場では1が多い
2は共通化できそうな部分だけは別クラスに作るってので対処できるし
0118デフォルトの名無しさん
2005/12/31(土) 13:54:44早い話がラッピングするパターン。
http://www.techscore.com/tech/DesignPattern/Decorator.html
0119デフォルトの名無しさん
2005/12/31(土) 18:49:30もし俺なら、(共通部分の内容と量にもよるが)もう1層括りだせないか?
と、考えてみる。
AbstractA<抽象クラス
│
AImpl<共通実装部分
├SubclassB<差異
└SubclassC<差異
0120デフォルトの名無しさん
2005/12/31(土) 19:11:480121117
2005/12/31(土) 20:13:31>>118
Decoratorパターンでやったことないから今度実験してみよう
>>119
2の拡張みたいな感じかな
それも検討してみたことがあるけど、サブシステム全体で共通ならいいような気がするけど
サブシステム内のある2機能だけ特別にクラスを作るってのはどうか悩んだ
0122デフォルトの名無しさん
2005/12/31(土) 22:41:21BとCの差異をTraitsクラスにして選択できるようにするだろう。
119のように継承するのと大して差異はないけど。
0123デフォルトの名無しさん
2005/12/31(土) 22:54:14C++な人?
0125デフォルトの名無しさん
2006/01/03(火) 13:35:23冗談半分でSmalltalkならこうするよ
といったら怒られたw
Javaでやろうとするとひどく煩雑になるんだもん・・・
0126デフォルトの名無しさん
2006/01/05(木) 08:46:21実装する言語によって良い設計が変わってしまうしね。
0127デフォルトの名無しさん
2006/01/06(金) 00:19:47言語で左右されるような実装レベルまで設計するなよ
0128デフォルトの名無しさん
2006/01/07(土) 00:38:38どんなにすばらしい設計をしたとしても、
それを実現する手段がなければ
意味のない物になってしまうと思うんだけど
0129デフォルトの名無しさん
2006/01/07(土) 01:23:02Javaでやるならクラスで動的解決になるし。
しかも静的動的って言葉すらも言語によって意味違うし。
>>127の思想だと最大公約数的な設計になりそう。
まぁ別にそれでも問題無いことも多い気もするけど。
0130デフォルトの名無しさん
2006/01/07(土) 11:47:080131デフォルトの名無しさん
2006/01/07(土) 22:39:23詳細設計
0132デフォルトの名無しさん
2006/02/12(日) 12:27:560133デフォルトの名無しさん
2006/02/12(日) 15:23:020134デフォルトの名無しさん
2006/02/13(月) 03:39:020135デフォルトの名無しさん
2006/05/18(木) 07:22:23しなかったかなぁ、と思った事はあるね。
Perlとかを意識して妙な仕様にしたんだと思うが。
0136デフォルトの名無しさん
2006/05/18(木) 07:24:290137デフォルトの名無しさん
2006/07/01(土) 21:50:017割がたそうなってしまうのが人の世だと思う
0138デフォルトの名無しさん
2006/07/01(土) 22:01:48属性は全て private 、
操作はデフォルトで public 必要に応じて private ってのが
実装レベルでは当然と思う。
ぶっちゃけ、7割りがた属性が public なクラスなんてありえない。
0139デフォルトの名無しさん
2006/07/01(土) 22:31:200140デフォルトの名無しさん
2006/07/04(火) 00:15:15派生クラスで使用したい場合も、protectedなプロパティとして用意するべき。
0141デフォルトの名無しさん
2006/07/04(火) 23:20:03なんか使うとしても、デバッグとかテストケース動かすためとか、
裏技的な目的が多いような・・・。
0142デフォルトの名無しさん
2006/07/17(月) 03:10:02これがないと(ていうかC++のことだが)
ユーザー公開用のファサードを用意しなきゃならなくてだるすぎる
0143デフォルトの名無しさん
2006/07/22(土) 00:37:29無名インナークラスでもない限りは、インナークラスは外に出すのでね
0144デフォルトの名無しさん
2006/07/24(月) 23:36:10そのプロジェクトで利用されてるライブラリ(プロジェクトメンバーが開発)
を見たんだけど、やたらと〜Managerみたいなクラスばっかりだった。
これって、どうなのかなぁ?
例えば、ファイル入出力を司るクラスが抽象クラスで用意されてて、
そいつを必ず継承して使ってねっていう感じだった。
他の各機能も同じ。
んで、プロジェクトファイル名も〜Managerみたいなのばっかり。
(マスタデータを登録するやつだったらDataManagerとか・・)
うまく説明できないんだけど、何か違和感を感じました。
こういうのってOOPで主流(?)なんでしょうか?
ちなみに言語は.NETのC#です。
0145デフォルトの名無しさん
2006/07/24(月) 23:55:10http://www.radiumsoftware.com/0603.html#060330
0146デフォルトの名無しさん
2006/07/24(月) 23:57:43抽象クラスを継承して使うことが、Managerが多いことの例え、
って部分が理解出来ない。
0147デフォルトの名無しさん
2006/07/25(火) 00:03:42参考になりました・・・・・
明日から、どうしよ。
なんか、このライブラリを使用することを半強制されてるんだけど・・・・
(;´Д`)
0148デフォルトの名無しさん
2006/07/25(火) 00:23:510149デフォルトの名無しさん
2006/07/25(火) 00:25:50説明が悪くて申し訳ないす。
何というか汎用的な各機能毎にManagerがいて、
汎用的な処理を実装する機能をもつクラスが必要になる
場合はそのManagerを継承して、新たなManagerを作ってねという感じなんですよ。
んで、ファイルを読んだり、書いたりする機能がある場合だったら
必ずFileManagerとやらを継承してHogeFileManagerや、
FugaFileManagerみたいなクラスを作ろうという風になってます。
Managerと言う割には、ファイルの読み/書きの機能の為だけに
わざわざ継承するのはどうなのかなぁと。
FileManagerにHogeFileManagerやFugaFileManagerのインスタンスを
渡して処理するような事も無いみたいだし・・・
うまく説明できないけどこんな状態です・・・。
0150デフォルトの名無しさん
2006/07/25(火) 00:52:47"Manager"という名前がアレだけど、それって単に物理的な何かを
抽象化してるだけでしょ。
良くある話。
0151デフォルトの名無しさん
2006/07/25(火) 01:07:55〜erみたいなクラスは確かによく見るんですが、
余りにも〜Managerがたくさんいたんで
おかしいなと、自分が考えすぎてただけなのかもしれないすね。
明日あたり、作成者の人にどういう意図で作ったのか
聞いてみます。
お騒がせしました。
0152デフォルトの名無しさん
2006/07/25(火) 01:22:49聞いただけで否定されてる?って切れる。
0153デフォルトの名無しさん
2006/07/28(金) 01:10:590154デフォルトの名無しさん
2006/07/28(金) 01:46:470155デフォルトの名無しさん
2006/07/28(金) 02:10:29同じプロジェクトに居たりすると困るよなぁ。
やたらと、自作ライブラリを使わせようとしたり、
頼んでも無いのに勝手にこれ使ってくださいとか言ってきたりする奴。
身の回りに一人居るが、
今、新人を洗脳してるw
型って何?、レベルの人間に
懇々と我流オブジェクト指向について熱く薀蓄を語っては、
新人のやる気を萎えさせてる。
おかげで、久しぶりに開発人数が増えそうなのに、
辞めてってしまいそうだ。
0156デフォルトの名無しさん
2006/07/28(金) 21:20:140157デフォルトの名無しさん
2006/07/28(金) 21:27:46困るなら論破すればいいのに
0158デフォルトの名無しさん
2006/07/30(日) 10:03:49俺の事言われてるのかと思ったw
まぁ、数千行の関数とかコピペで作る奴よりマシだと思ってるけど。
俺は自作ライブラリ作るときは、シンプル&単機能な設計でUnitTestとセットで提供しているから問題ないよな。
0159デフォルトの名無しさん
2006/07/30(日) 10:10:14そのまま作らせろ
0160デフォルトの名無しさん
2006/07/31(月) 00:34:18めでたしめでたし
0161デフォルトの名無しさん
2006/08/01(火) 22:01:01GoF以外のJ2EEとかマルチスレッドとか視点を絞ったパターンまでは手が出ない
0162デフォルトの名無しさん
2006/08/01(火) 22:39:28必要な時に調べて使え。覚える必要は無い
0163デフォルトの名無しさん
2006/08/08(火) 12:54:24AbstractA<抽象クラス
│
AImpl<共通実装部分
├SubclassB<差異
└SubclassC<差異
のAImpl<共通実装部分って部分ってテンプレートパターン?
どうも何パターンとかって分類するのが苦手なのよ
0164デフォルトの名無しさん
2006/08/08(火) 13:12:16の人が理解できてる?
C++やデザパタをつかってプログラムしてもまわりが
理解できず、バグ混入の原因になっているのでは?
オタクなクラス設計やデザパタ使ってるあなたが
結果的にプロジェクトを破壊するテロリストになって
しまっているんじゃないの?
で、実際にトラブルが起きると「こんなことも理解して
ないなんて一人前のプログラマじゃない!」とか言って
自分の知識をひけらかしたり、失敗を人のせいにするん
だろ。ラーメン屋の亭主みたいな融通のきかない職人
じゃあるまいし。こういう職人肌みたいな人はC++の
テンプレートと共に消えてくれ。頼むから。
」
0165デフォルトの名無しさん
2006/08/08(火) 13:16:31と、IQ80の君に言われても・・・。
0166デフォルトの名無しさん
2006/08/08(火) 13:30:14もう2002年当時からずっと一緒。
プログラムのプウの字も知らない煽り屋が必死に煽ってるだけなんだろ。
無意味
0167デフォルトの名無しさん
2006/08/08(火) 13:32:20彼らから議論の場を取り上げるのは、酷というものであろう。
0168デフォルトの名無しさん
2006/08/08(火) 16:13:43C++は1998年の仕様がまだ実装されてないんだから
0169デフォルトの名無しさん
2006/08/08(火) 19:43:50DBConnection関係のクラスをキモくラップしただけの奴とか。
これを共通で使ってくださいとか指示されると萎えるw
0170デフォルトの名無しさん
2006/08/08(火) 19:49:04脳内業務乙。
0171デフォルトの名無しさん
2006/08/08(火) 23:20:46ユースケースから名詞を全部抜き出して一つ一つ吟味したり、
boundary,control,entityって分類分けしたりする?
仕様書が完璧に出来てるならやってもいいけど、
仕様書が完全になるの待ってたらいつまでたっても仕事に取り掛かれないし、
仕様変更のたびにそんなんやってらんないよね。
0172デフォルトの名無しさん
2006/08/09(水) 10:15:03ソースの中に簡単なFactoryパターンが含まれていたんだが、
一人だけFactoryが分からないやつがいた(年齢だけでいえば中堅)。
まあパターンを知らないってのは別によい、知らなくてもコードを
読めば何やってるか分かるはずだからな。
と、みんな思ってたんだが、いくら説明しても伝わらない。
細かく聞いていったらどうやら継承とインスタンス化の違いが分かっていなかった
ということが判明。
そんな人を設計から外す方法を相談させてください。
0173デフォルトの名無しさん
2006/08/09(水) 11:02:330174デフォルトの名無しさん
2006/08/09(水) 12:55:40■ このスレッドは過去ログ倉庫に格納されています