オブジェクト指向 Part2
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG・OOP言語、UML、分散オブジェクト、デザインパターン等
などなど、オブジェクト指向についての「技術的な」スレッド。
前スレ
オブジェクト指向スレ
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=1001275287
0002やる気なしメタリンク
NGNGhttp://www.google.com/search?sourceid=navclient&q=%83I%83u%83W%83F%83N%83g%8Ew%8C%FC
デザインパターン
http://www.google.com/search?sourceid=navclient&q=%83f%83U%83C%83%93%83p%83%5E%81%5B%83%93
eXtreme Programming
http://www.google.com/search?hl=ja&q=extreme+programming&btnG=Google+%8C%9F%8D%F5&lr=lang_ja
リファクタリング
http://www.google.com/search?hl=ja&q=%83%8A%83t%83@%83N%83%5E%83%8A%83%93%83O&lr=
0003デフォルトの名無しさん
NGNGここだ!2番ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´
∧∧ ) (´⌒(´
⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
 ̄ ̄ (´⌒(´⌒;;
ズザーーーーーッ
0004やる気なしメタリンク
NGNG死ねよ
0005やる気なしメタリンク
NGNG0006デフォルトの名無しさん
NGNG答えが決まらん抽象論になるからだろ。Aにとって正解でもBにとって
間違いって問題が多い。多重継承なんか典型じゃないか?どの言語を使
ってるか、どのライブラリを使ってるか、一緒に開発してるやつのレベ
ルとかで使うかどうかは変えるだろ?
0007デフォルトの名無しさん
NGNGそのネタもう秋田
00081300万
NGNG確かにそうですよね
ところで、みなさんはどんなオブジェクト思考言語をお使いですか?
私はプログラマーではないので、JAVAとC++ぐらいしか使わないのですが
0009デフォルトの名無しさん
NGNG自作言語
0010デフォルトの名無しさん
NGNGおれもLISP系の自作言語
0011デフォルトの名無しさん
NGNGプリコンパイルでC++に
変換するだけだが・・・
0012デフォルトの名無しさん
NGNGマイナーすぎてとても言えません‥‥。
0013デフォルトの名無しさん
NGNGエラーメッセージちゃんと出るのですか?
0014デフォルトの名無しさん
NGNGろくにエラー判定しないコンパイラは月とすっぽんぐらい違います。
つまらん言語自作してオナニーするのは止めましょう。
0015デフォルトの名無しさん
NGNGやってるけど・・・。
まじめにエラー出力しないと自分で使う気にもならないし・・・。
0016sage
NGNGC++(かjava)とlispが有れば大体足りると思うがな。
0017デフォルトの名無しさん
NGNG0018デフォルトの名無しさん
NGNG0019デフォルトの名無しさん
NGNGとどうちがうの?それ.
0020デフォルトの名無しさん
NGNGエージェント指向は重そうだし、
コンポーネント指向なのかな。
コンポーネントでビジュアルに設計とか。
0021デフォルトの名無しさん
NGNG0022デフォルトの名無しさん
NGNG0023デフォルトの名無しさん
NGNG0024デフォルトの名無しさん
NGNGオブジェクト指向が使えるように教育するほうが先。
0025デフォルトの名無しさん
NGNG大抵オブジェクト指向を分かっていない
002620
NGNG0027デフォルトの名無しさん
NGNG0028デフォルトの名無しさん
NGNGあれはオブジェクト同士の関連の一形態に過ぎない。
0029デフォルトの名無しさん
NGNGそんな奴はプログラマー辞めるべき。
0030デフォルトの名無しさん
NGNGもう過去の物ですか?
0031デフォルトの名無しさん
NGNG行き過ぎたオブジェクト指向。
それはもう、すべてがめんどくさいほど
0032sage
NGNG礼賛だけするのはダメ。
0033>32
NGNG0034デフォルトの名無しさん
NGNGクラスの名前を考えるだけで何日も悩み、
それでもコンスタントに月間0.5MBのソースが書けることに喜びを見出し、
そしてまた後々のメンテのしやすさに感謝している漏れは礼賛しちゃいけませんか。
0035デフォルトの名無しさん
NGNG>クラスの名前を考えるだけで何日も悩み、
俺がプロジェクトリーダーならクビにする
0036デフォルトの名無しさん
NGNG納期は守ってるよー。
0037デフォルトの名無しさん
NGNGクラスの名前を考えるだけで、何日も悩んでるのに?
嘘つけ。
0038デフォルトの名無しさん
NGNG嘘じゃないよー。
たまにはそういうこともあるという話。
0039デフォルトの名無しさん
NGNGまあ、そこまでいうなら、話半分信じてやろう
0040デフォルトの名無しさん
NGNGなんにも嘘ついてないのに・・・。泣くぞ(/_;)
0041sage
NGNGおれ、OOP好きだし。
ソースをバイト数で言われても困るんだけど、
蓄積したコードに対するメンテが少なければ少ないほど
よいコードだと思うんだよな。
ただそれがOOPに基づいた所以なのか
OOPでなくてもメンテ性の高いコードが書けるのか、
過去を振り返ってみたとき、
なんか結局どっちでも同じような気がしてくるんだよね。
どちらでも同じ品質でモノが書けるなら、
OOPをわざわざしらんでも、だれでもメンテできる
ふつうのコードの方が、よかったんじゃないかって考える。
え、OOPじゃなくてOOの話しをしてるって?
0042デフォルトの名無しさん
NGNG0043デフォルトの名無しさん
NGNGOOPとかOOとか区別されてもピンとは来ないんだけどさ。
でも、クラス単位で考えるって絶対に楽。
関数単位での実装が前提だと過度に小回りを利かせようとして
ざくっと割り切った視点で考えられなくなっちゃいがちなんだよね。
OOだったら基本単位がクラス=意味上のまとまりだから
プログラムの意味を自然と大切にしながら書けるのが気持ちいい。
もちろん、その中で意味のパターンみたいなものが見えてきて
こんな漏れにもそれなりのノウハウが蓄積できるのが嬉しい。
OOに感謝感謝。
0044デフォルトの名無しさん
NGNGmain(){
byte data=new byte[0x100000000];
なんか処理〜。
}
0045デフォルトの名無しさん
NGNG寝る
0046デフォルトの名無しさん
NGNGOOの最大の利点は、オブジェクトの独立性にある。この点は、実務でも十分な利
益が得られる。問題は継承まわり。
00471
NGNGOOの有用性・啓蒙ネタはもういいよ。
0048デフォルトの名無しさん
NGNGOOP嫌い。
0049デフォルトの名無しさん
NGNG日曜プログラマじゃないのか?
0050デフォルトの名無しさん
NGNGこんなスレ作らんかったらよかったんや
0051デフォルトの名無しさん
NGNG0052デフォルトの名無しさん
NGNG正確に言うと進捗率。
0053通りすがりの日曜プログラマ
NGNGプロが使う生産性の指標ってどんなものなんですか?
0055デフォルトの名無しさん
NGNG俺んとこは、クラス数とステップ数
0056デフォルトの名無しさん
NGNG0057デフォルトの名無しさん
NGNG平均して、3ヶ月でソフト1本
年間4本のペースで作らされてるよー。
納期とソフトの規模が大体一定してるんで
目方で進み具合を量る癖がついた。
一本辺りソースのみで1.5MB、
リソース込みで2MB〜3MBになったら完成。
ちなみに漏れは在宅のパッケ屋。
0058デフォルトの名無しさん
NGNGポインタを使いこなすにはメモリに対する正しい知識が必要なのと同じように、
継承を使いこなすには、デザパタを読んで理解できるくらいの理解が必要。
ポインタを使いこなすのも、継承を使いこなすのも、本人次第だろ。
批判する前に勉強しろよ。
0059通りすがりの日曜プログラマ
NGNG色々あるんですね。勉強になりました。
スレ違いな質問をしてしまってすいません。
0060デフォルトの名無しさん
NGNG低レベルプログラマーなら感動して使うだろうね。
0061デフォルトの名無しさん
NGNGうーん、もう聞き飽きたよ。
批判されると、相手の知識不足に問題をすり替えて、
優越感に浸って気分良いんだろうけど、言ってることは
非論理的な根性論なんだよね。
0062非58
NGNG貴方が理解できていないようだから「知識を身に付ければ?」と
言われてるのに、「努力したくない」「理解できそうもない」から、
「知識不足だから勉強しろ = 根性論」にすりかえようとしている
ように思えてならない。
問題のすりかえをしているのは、どっちだ?
0063デフォルトの名無しさん
NGNG妄想君だねぇ
相手はデザパタ理解できない馬鹿ねぇ
>継承を使いこなすには、デザパタを読んで理解できるくらいの理解が必要。
ここに書き込むには、日本語が理解できるぐらいの理解が(w)必要だよ
0064デフォルトの名無しさん
NGNGおまえ58だろ。
継承に問題があると聞いただけで、なんで理解できてないと分かる?
明らかに、問題をすり替えてるだろ。
言ってること理解できるか?
0065非58
NGNGいや、ほんとに58じゃないんだけど。
継承に問題があるんじゃなくて
継承の使い方を知らないんじゃないの?
0066デフォルトの名無しさん
NGNG残念だけど、いってる事に根拠がないよ。妄想といわれてもしかたない・・
0067デフォルトの名無しさん
NGNG継承の使い方を知らないんじゃないの?
明らかにもうそう
どこ書き込みでこう思ったの??
0068非58
NGNGいや、実はほとんど見てないんだわ。
単に俺は継承が便利ってだけ。
問題あるなら使わなければー?
0069sage
NGNGそれよりOOPやったことない人に、いかに短期間で
自分の設計を理解してもらうかで頭痛いんだから..
0070デフォルトの名無しさん
NGNGとれていない事実に不信感を抱くプログラマが多いのだと思うね。
0071sage
NGNGみたいなケースって、ある?
0072デフォルトの名無しさん
NGNG継承好きなのに、批判されたら気に入らないよね、よね、よね
でもキレないで、相手の矛盾を理論でうち破ってよ、破ってよ。破ってよ
0073デフォルトの名無しさん
NGNG障害になるなら採用しなきゃいいじゃんか。
頭固いのね。
0074非58
NGNGめんどいのでお断り〜♪
俺が便利に使えればそれでいいわ。
アホくさ。
0075デフォルトの名無しさん
NGNG覚える暇がないってのもあるんじゃない?
0076デフォルトの名無しさん
NGNGまた根性論・・・
0077デフォルトの名無しさん
NGNGいや、会社でそんな雰囲気に頭に来てるんだけど。
歴史のある会社はむずいやね。
0078デフォルトの名無しさん
NGNG説明できないなら最初から黙ってればいいのに
0079>70
NGNGOOPに関しては
カプセル化->継承->多態->コンポーネント
と確実に浸透していると思う。
ただ、それより上位の設計・手法に関しては
OOA, OOD, UML,デザパタ、XP、リファクタリング(無茶苦茶な並べ方だけど)
と確かに乱立してるね。
ここらへんの取捨選択の判断基準ってどういうものなんだろうね。
0080デフォルトの名無しさん
NGNG仕事できないような気がするが。
これからますます重要になるぞ。
0081sage
NGNGUMLだけは、なんとか、押さえておきたいなあ。
他は、やりたい人が勝手にやればいい感じ。(←乱暴
0082デフォルトの名無しさん
NGNGある程度知った上で、問題点と運用方法
在るべき方法論について、議論しようとしてるんだけど
なんで問題点を指摘すると、相手の理解不足にしたがるの?
008370
NGNG教育コストが馬鹿高いのが問題だよな。
オブジェクト指向はクラスがあってメソッドがあって、
というだけならまあ覚えるのにそんなに時間はかからないだろう。
が、実は分析や設計の方法論であり、UMLを使えデザインパターンを使え
何とかさんの何とか法を使えとなると、
実際にやるプログラミングとは少し離れた抽象思考の世界に入ってしまう。
(UMLやデザインパターンは世間のコンセンサスを得たものだからまだ分かりやすいが、
そうでない分析や設計の方法論なんかは妙な哲学にしか見えないものが多い)
で、その方法論でクラスを作るにはどうしたらいいの?
の答えは、自分で考えろ。だからね。
その点、言ってることが分かりやすいXPには期待してる。
0084デフォルトの名無しさん
NGNGそうか?
XP→リファクタリング→デザパタ→仕様書→UML
0085デフォルトの名無しさん
NGNG最低限の妥協点としてUMLをフローチャートに書きなおして
持ってきて欲しい。
0086デフォルトの名無しさん
NGNG>実際にやるプログラミングとは少し離れた抽象思考の世界に入ってしまう。
少し離れたというよりベクトルとしては真逆だと思う
0087デフォルトの名無しさん
NGNG>世間のコンセンサス
宣伝の結果に過ぎない。
0088デフォルトの名無しさん
NGNGあまり情けないこと言うなよ。>>85
0089デフォルトの名無しさん
NGNGそれ以外の兵隊は、UMLだけ読めればよし。
0090デフォルトの名無しさん
NGNG私がいま使っているのは
UML(一部)、UnitTest、リファクタリング、デザインパターン
くらいですね。割と小規模(三人)なので。
少人数なのでペアプログラミングっぽくなりますがちょっと違うかも...
代わりに書いたソースのレビューはやってます。
0091デフォルトの名無しさん
NGNG実装に「下げる」。
問題点を指摘すると「オブジェクト指向を理解出来ない奴」という
レッテルを貼られて切られる。
設計サイドはそりゃ楽だわな。
0092デフォルトの名無しさん
NGNG画面イメージと簡単なフローチャートをSEが持ってきて
実際の設計はPGがやる。
0093デフォルトの名無しさん
NGNGOOやるまえから設計する人間はそんなもんでしたがなにか?
0094802
NGNG0095デフォルトの名無しさん
NGNGそういえばそうですね。問題無いですね。何か?
0096デフォルトの名無しさん
NGNG?
0097802
NGNG何を偉そうに語ってるんですか?
とにかく、あんま調子んのらんどけや。
0098802
NGNG難しい数学を使う偉い仕事につくのだよ。
君達は敗北者だからプログラマーやってるわけ、わかるか?
だいたい偉い人が作ったライブラリ使っとればアルゴリズムなんかしらんでもいいだろ。
お前らオートマトンとかわかってる?
数学基礎論わかるか?
アルゴリズムの計算量考えて作ってる?
あほはあほなりにがんばってるとは思うけどさ。
ああ、感情的になってしまったか。
わりいわりい、くだらんすれがあがるのがゆるせんだけなんだけどさ。
とにかく、あんま調子んのらんどけや
0099デフォルトの名無しさん
NGNG2元方程式までなら知ってるよ?
0100デフォルトの名無しさん
NGNG0101デフォルトの名無しさん
NGNG0102デフォルトの名無しさん
NGNGブラックユーモア(・∀・)イイ!
0103デフォルトの名無しさん
NGNG0104デフォルトの名無しさん
NGNGここはどっちかっていうと実務に近い人たちが
書き込むところです。ごめんなw
実務も抽象的に考えれば理論的に説明できるかもしれないのだけど
こっちはコストって概念まず一番にある世界なんだよな。
そこを分かってくれ。
0105デフォルトの名無しさん
NGNG書き忘れたけど、デキの悪いおれがここにいるのもその
コストを考えられた上での話なんだな。
0106デフォルトの名無しさん
NGNGそんな貴方にコレ。せめて人に見せられるもん書けや。
http://www.shiro.dreamhost.com/scheme/trans/gigo-1997-03-j.html
0107802
NGNG0108デフォルトの名無しさん
NGNG何言ってるか分かりませんけど何か?
0109デフォルトの名無しさん
NGNGオートマトンぐらいなら知ってるぞ。
0110デフォルトの名無しさん
NGNG0111デフォルトの名無しさん
NGNGオブジェクト指向が理解できる奴が少なくてもしょうがないか。
0112デフォルトの名無しさん
NGNGそれはあんま関係ないような・・・
0113デフォルトの名無しさん
NGNG毎回でるようなことだけに
ワラタ
0114デフォルトの名無しさん
NGNGていうか、C言語よりVBの文法の方が客観的に見て難しいよね・・・
0115デフォルトの名無しさん
NGNG英文ライクを目指した言語の方が文法は難しく
0116デフォルトの名無しさん
NGNG0117デフォルトの名無しさん
NGNG英文ライクらしいがあれよりもっといいもの作れただろ。
まったく、、、
0118デフォルトの名無しさん
NGNG0119名無しヘタぐらまさん
NGNGオブジェクト指向技術を使っている方の大半が
その技術をよくわかっていらっしゃらないからなのでは?
よくわかっていないために破綻してしまっている現状を
現場の人間は見ているので敬遠してしまうのかも.
…って,あんまり他人のことは言えないのですが.
恥ずかしながら最近ここに来るまでデザインパターンって知りませんでしたし
デザインパターンの本を読み始めて己の勉強不足を痛感してます.
0120デフォルトの名無しさん
NGNG「オブジェクト指向イッショニ勉強スレ」
というマターリな方向へもっていってはどうか?
OOの有用性、生産性批判の議論はもう飽きたYO。
0121デフォルトの名無しさん
NGNG0122デフォルトの名無しさん
NGNG確かに
自分がOOを理解していると勘違いしている人が多いのは事実
そういう人にOOが駄目だって言われても・・・
根本的なとこで、エラーが出てるわけだからね
もっと具体的な話でもしましょう
例えば、Javaでスレッドを使うとき
どういう場合にrunnableをインプリメントして
どういう場合にThreadを継承するか?
とかさ
0123デフォルトの名無しさん
NGNG漏れはほとんどいつもRunnableを使う。内部無名クラスとしての場合が
多いけど。
0124デフォルトの名無しさん
NGNGなるのはヘタレですか?
0125デフォルトの名無しさん
NGNGJavaやってないから今まで知らなかったんだけど、検索かけて
理解した。面白いね、Java。
たぶん自分で使うなら、>>123さんと同じくRunnableを使うと思う。
0126デフォルトの名無しさん
NGNGセーブしたり反映させたりするのに
いい設計かパターンかないかな?
レジストリ読んでくるときも同じことで悩みます。
0127デフォルトの名無しさん
NGNGJavaでスレッドがinterfaceとクラス継承の両方で実現できるのは多重継承が出来ない、
Mix-inもできない結果なんで。
0129デフォルトの名無しさん
NGNGメメントパターソだたかな?
デザパタ勉強中につき、うろおぼえなり。
0130デフォルトの名無しさん
NGNGOOを徹底的に叩くスレ。
0131デフォルトの名無しさん
NGNG違うだろっ!!
0132デフォルトの名無しさん
NGNGちょっと勉強してみます。さんく。
0133デフォルトの名無しさん
NGNG言語による。なに使ってんの?
>129
ちょっと違うような。OO、デザパタはあんま関係なさそう。
0134デフォルトの名無しさん
NGNGメメントはアンドゥ、リドゥの管理を自分でやらずに他人に任せるパターン。
>>126のどこに使えるのだろうか?
俺には想像できない。
0135デフォルトの名無しさん
NGNGと読んでいたのは僕です。
0136129
NGNG0137デフォルトの名無しさん
NGNG特別な設計はいらないのでは。
オプションウィンドウを開くときに、
各モジュールが持つ状態を収集してウィンドウを構築。
閉じるときに各モジュールへ反映。
単純にこれでいいと思う。
オプション項目とモジュールの関連は抽象化されないけど。
オプションウィンドウに表示される項目が
動的に生成されて動的に並べられるものでもない限り、
具体的にならざるを得ないのでは。
0138デフォルトの名無しさん
NGNG情報を持っている各モジュールに保存、復帰に相当するインタフェースをもたせる。
このとき状態を記録するためのオブジェクトを引数にとることにする。
保存、復帰に相当するメソッド内からは引数に渡されたオブジェクトのメソッド
(書き込み、読み込み相当)を利用して情報を記録オブジェクトから出し入れする。
各モジュールをリストかなんかにいれてイテレータで順次、保存、復帰メソッドをコール。
どの情報を記録するかはそれぞれのオブジェクトに委ねられる点が良いような気が。
0139デフォルトの名無しさん
NGNGそれで、オプションウィンドウのUIはどうなるのでしょうか?
0140133
NGNG>具体的にならざるを得ないのでは。
まともなRTTIのある言語なら
例えばコントロールの変数名などをキーにしてやれば、
ほぼ自動化できるよ。それが出来るかどうかは言語による。
0141デフォルトの名無しさん
NGNG0142デフォルトの名無しさん
NGNG>オプションウィンドウに表示される項目が
>動的に生成されて動的に並べられるものでもない限り、
ここを抜くなよ。
0143138
NGNGウィンドウの左側に各モジュールのリストを表示し、リストがクリックされたら
そのモジュールのプリファレンス表示メソッドをコールって具合にすれば、
UIもモジュール内に分散させられる気がします。
どっかでみたようなインターフェースですが。
0144デフォルトの名無しさん
NGNG言語はc++っす。
みなさん、いろいろ案ありがとうございます。
0145デフォルトの名無しさん
NGNG>デザパタのえらい人。
0146デフォルトの名無しさん
NGNG0147デフォルトの名無しさん
NGNG0148デフォルトの名無しさん
NGNGmementoの中途半端版
0149デフォルトの名無しさん
NGNG他のパターンの適合は?
0150デフォルトの名無しさん
NGNG作る時に処理を切り分けしやすいから良いんだけど、机上で
設計した後それを実践(実装)する時に困ることが多いと思う。
理想と現実ってとこかな。
一番広く使われてるのはC++だと思うけど、「C++FAQ」は
この妥協点を踏まえて書かれてて参考になった。多重継承
は漏れも好きじゃないけど、単一継承、それも純粋仮想クラス
は結構意味があると思う。
みんなは設計する時にどうやってる?UMLで書く?紙に丸とか
四角とか並べてる?漏れはいきなりソースのインターフェイス
(C++ならヘッダファイル)だけを書いてしまうことが多いの
だけど。。。
0151デフォルトの名無しさん
NGNG>設計した後それを実践(実装)する時に困ることが多い
どういうことで困るのか具体的に語ってよ。掘り下げてこそ面白い。
0152デフォルトの名無しさん
NGNGUML書きますね。
でも、UIはいきなり実装が多いかな。
実装依存の場合が多いですもんね。
0153デフォルトの名無しさん
NGNGオブジェクトのカプセル化を壊さないという点からみれば
メメントを使うのは一つの方法かも。
あとはCompositeが使ってあればメッセージを行き渡らせるのが楽かな?
0154デフォルトの名無しさん
NGNGオレは逆かな?
設計するときに、どのくらいの粒度でオブジェクトに切り分けるか悩む。
実装は既存クラスを再利用しながらサクサク進む。
0155デフォルトの名無しさん
NGNGそれは、オブジェクト指向がわかっていないから。
0156デフォルトの名無しさん
NGNGすっきりと設計できるようになるまでの過渡期みたいなもんあるし、
あまり冷たい言い方はせんでイイよ。
0157デフォルトの名無しさん
NGNGオブジェクトコンポジションを使え!
ってな書籍が少ないと思いませんka.
あと、オブジェクト指向たらC++だか言ってる本が多い割には、
現実のコーディング場面で考慮するべきことがあんまり載ってない。
ソースファイル(.cpp)やヘッダ(.h)間の依存関係とかさぁ
0158157
NGNG漏れ的には、
「大規模C++ソフトウェアデザイン」
http://www.pearsoned.co.jp/washo/prog/wa_pro15-j.html
が(・∀・)イイ!って思ったんだけど。
0159デフォルトの名無しさん
NGNGhttp://www.amazon.co.jp/exec/obidos/ASIN/475611895X/ref=pd_sim_b_dp_1_3/250-2856788-2389052
http://www.amazon.co.jp/exec/obidos/ASIN/4756118089/ref%3Dpd%5Fsim%5Fb%5Fdp%5F1%5F1/250-2856788-2389052
http://www.amazon.co.jp/exec/obidos/ASIN/4756118534/ref=pd_sim_b_dp_1_1/250-2856788-2389052
http://www.amazon.co.jp/exec/obidos/ASIN/4881356194/ref=pd_sim_b_dp_1_2/250-2856788-2389052
http://www.amazon.co.jp/exec/obidos/tg/detail/glance/-/books/4797311126/qid=1002722823/ref=sr_sp_re_1_2/250-2856788-2389052
これらをまだ持ってないとは言わせない。
0160158
NGNG憂鬱な〜は持ってない(大学生協で立ち読み程度
そんなに良い本だったのか!!
けど、残り4つは持ってる/全部読んだヨ。
特に「デザインパターン」は漏れの今までのOOに対する認識を一新したね!!
あれ読まずにOOPするなって感じ。
0161158
NGNG0162デフォルトの名無しさん
NGNGJavaでいいのはない?
自分はC++わからないので
0163デフォルトの名無しさん
NGNGそれでも他の本には載っていない状態遷移について詳しいから、
自分でそこが弱いと思うなら読む価値はある。
UML関係の本も一緒に読むといいよ。
0164デフォルトの名無しさん
NGNGJavaは解らない…。C++しか知らない。
0166デフォルトの名無しさん
NGNGなんか過去ログ宗教論争ばっかだったけどさ
名スレダネ
0167デフォルトの名無しさん
NGNG>名スレダネ
どこが?
0168スレ違いかな
NGNGAppWizardが吐いてるコードは、なんか全てのクラスが
CxxxAppクラスを知ってる(#includeしてる)のが気に入らなくて、
それらをCxxxAppから独立させて(絶縁して)組んでます
あとCxxxViewがDocを知ってるのも気に入らない。
こういう組み方してる人っています?実務レベルで.
どうなんだろ.
0170デフォルトの名無しさん
NGNGなるほど、本の紹介ね。
0171デフォルトの名無しさん
NGNG0173デフォルトの名無しさん
NGNGDoc ->Subject
View->Observer
ってことか.
0174デフォルトの名無しさん
NGNG0176デフォルトの名無しさん
NGNG0177168
NGNGとりあえずMFCスレにでも逝ってきますです…
0178デフォルトの名無しさん
NGNG0179デフォルトの名無しさん
NGNG0180(;´Д`)
NGNG802ってのは良く知らんけど、あんたがそうなのか.
そういうあんたは>>158,>>159,>>165の本のどれかひとつでも
理解できてるんか、と問い詰めたい。小一時間問い詰めたい。
0181伝説のPG
NGNG洗練されておる。
語れ。
0182デフォルトの名無しさん
NGNG設計で一番重要なのは、クライアントとまともに
話せることなのよ。これが出来ないと、分析も要
件定義もない。一生コーダーならいいけどさ。
0183伝説のPG
NGNG用件は聞かなくても解る。
それから私の背後から近づかない方が良い。
報酬は指定したスイス銀行にアメリカドルで振りこんでくれ。
0184デフォルトの名無しさん
NGNG確かにねー
業務知識じゃ勝てないからねー
イヤな爺の話も聞かなきゃならない(-o-)
0185デフォルトの名無しさん
NGNG802師匠童貞3流大学情報科院生低レベル厨房にしてはつまらないネタですね。
もしかして、童貞喪失者ですか。これは失敬。
802師匠の低レベル書き込みを拝見するならココ!
(;;´∀`)
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=1002111261
0186デフォルトの名無しさん
NGNG0187デフォルトの名無しさん
NGNG>話せることなのよ。これが出来ないと、分析も要
>件定義もない。一生コーダーならいいけどさ。
なんでこのスレにはこんな無内容な事しか話せない
糞厨房が後から後から湧いてくるのかねぇ?
しかも本人は結構気の利いたことを
言ってるように思い込んじゃってるのが余計に痛々しい。
0188デフォルトの名無しさん
NGNGあんたも一生コーダーの口だね。
0189デフォルトの名無しさん
NGNG気の利いたこと、っつーよりヴァカを叩く目的だから問題なしかと思われ。
>>188
あまり反応しすぎないほうが良い。オレモナー
0190sage
NGNG0191デフォルトの名無しさん
NGNG本の紹介をありがたがるヤツ
802ネタだすヤツ
関係ない話するヤツ
煽るだけのヤツ
やっぱOOスレはこうなるのね
0192デフォルトの名無しさん
NGNG0194デフォルトの名無しさん
NGNG不快云々よりスレ違いですよ。
正直このスレでその手の話題は食傷気味です。。。
0195デフォルトの名無しさん
NGNG最終的には手段だってことをどうしても忘れてしまうんだよね。
これが俺のイタさの原因。一応2chでも気をつけてはいるつもりだよ。
0197伝説のPG
NGNG基本クラスは牛皿だ。
他は全て派生クラスだ。
語れ。
0198デフォルトの名無しさん
NGNGイタイのはお互い様
特にこのスレは(w
0199192
NGNGつうことで、こんなのはいかがか。
--Class.h--
class Class
{
virtual void func1() = 0;
virtual void func2() = 0;
static Class* create();
};
--Class.cpp--
#include "Class.h"
class ClassImpl : public Class
{
virtual void func1(); // func1実装
virtual void func2(); // func2実装
//メンバ変数など
};
void ClassImpl::func1() {
...
}
void ClassImpl::func2() {
...
}
Class* Class::create()
{
return new ClassImpl();
}
Factoryクラスを用意するまでもないとき、こんなのはどうでしょう?
0200デフォルトの名無しさん
NGNGどうせみんな本に教えてもらってるんじゃん。
0201デフォルトの名無しさん
NGNG0202デフォルトの名無しさん
NGNGどちらが優秀かというと
劣等なのは802師匠がぶっちぎりだ。それに何か問題があるのか?
0203デフォルトの名無しさん
NGNG回答−>真に実力のないプログラマの性
真の実力者なら、自分でいわなくても、他人が認めてくれる
0205デフォルトの名無しさん
NGNGそ〜ゆ〜話題も食傷気味でちゅ
0206デフォルトの名無しさん
NGNGうむ、実力の中途半端な奴ほど回りに良く見られたがるよね。
他人の自分に対する評価もやけに気にする。
0208デフォルトの名無しさん
NGNGあ、それ漏れだよ(T_T)
0210デフォルトの名無しさん
NGNG0211デフォルトの名無しさん
NGNG290円でシステムを作らなければいけなくなる。
0212デフォルトの名無しさん
NGNGvirtual Discount();
virtual Price() const;
0213デフォルトの名無しさん
NGNGもっと段階的に論じてるものなんて読んだことある?
これがあるなら1000円ぐらい出してもいいな。
0215デフォルトの名無しさん
NGNGクラス分けの正規化のようなモノがあってもよいと
考えたことはある。
0216デフォルトの名無しさん
NGNG>これがあるなら1000円ぐらい出してもいいな。
もう少しだせよ(W
0218デフォルトの名無しさん
NGNG0219デフォルトの名無しさん
NGNG何だか曖昧でよく分からないが、
適切な粒度と役割でクラスを切り出せる方法論はあるかってこと?
有名どころでは
ビジネスロジック向きの「アナリシスパターン」
http://www.rational.co.jp/products/books/bk_14.html
リアルタイムシステム向きの「オクトパス」
http://www.tech-arts.co.jp/oo/octopus.html
などがあるね。やたら難しいけど。
0220デフォルトの名無しさん
NGNGこんなのとか?
http://home.catv.ne.jp/dd/chiba/ken/Java/JavaStream.html
0221デフォルトの名無しさん
NGNG1000円は誰に払えばいいんですか?
考えていたのとは違うけど「アナリシスパターン」は
目次見て面白そうだから今度立ち読みしてみます。
0222デフォルトの名無しさん
NGNGだめだ、もう寝る。
0223デフォルトの名無しさん
NGNG少なくとも趣味レベルからOOを習得しようとしてる漏れには
理解できんかった…(鬱
>>220何か違うような。
0224デフォルトの名無しさん
NGNGDare Ni Harau Ki Dattan Da ?
0225デフォルトの名無しさん
NGNGおれ自慢じゃないがパソコンの本なんて4冊しか持ってない。
あとは全部Web。これ最強。おれにとっての話ね。
0226デフォルトの名無しさん
NGNG0227デフォルトの名無しさん
NGNG読みたいものは全て立ち読みか
会社に買わせる。
0229デフォルトの名無しさん
NGNG0230デフォルトの名無しさん
NGNG0231デフォルトの名無しさん
NGNGhttp://jcp.org/jsr/detail/26.jsp
0232デフォルトの名無しさん
NGNG「アナリシスパターン」は、プロでも頭を抱えるような難物だから無理はないと
思う。後半の実装に近い部分は大体理解できるのだけど、前半は本当に難解。
1回通読しただけで理解できる人はあまりいないと思う。
0233デフォルトの名無しさん
NGNG(´-`).。oO(なでてあげたい・・・)
0234デフォルトの名無しさん
NGNGどういう利点があるのか説明きぼんぬ。
ふつうにNewとあまり差を感じないのですけど。
0235デフォルトの名無しさん
NGNGclass GYUDON extends DONBURIMESHI implements BENISYOGA
あ、牛皿が基底クラスになってない‥‥。
0236デフォルトの名無しさん
NGNGなぜなら牛丼とは並盛のことであり、
大盛、特盛は牛丼から派生している。
1980年代にブーチ博士が出版した
「Object-Oriented Yoshinoya And Donburi」
(邦題・オブジェクト指向吉野家とドンブリ)によると、
牛丼一筋80年という観測結果から
継承階層が1段階に限られていることが証明できるとあるのだ。
しかしこの本の内容は今となってはやや古臭い。
その後の研究で牛丼一筋100年ではないことが通説となり、
それを機にブーチは松屋法のヤコブソン、すき屋法のランボーと協力して
Unified Gudon Language(統一牛丼言語)を開発、発表している。
これによりどのお店でも「特盛」や「つゆだく」が通じるようになり、
今年8月には並盛り280円を達成するという目覚しい効果をあげている。
0237デフォルトの名無しさん
NGNG0238デフォルトの名無しさん
NGNG0239デフォルトの名無しさん
NGNG激ワラタ。
0240デフォルトの名無しさん
NGNG0241デフォルトの名無しさん
NGNG牛丼設計方法論の前途洋洋かと思われたその前途に突如立ちはだかったのがXP(邦訳:狂牛病)、ってことでしょうか?
自分が明日狂牛病に発病するかどうかなんて事前に判らない!というのが、
XP一派の主張らしいです。
0242デフォルトの名無しさん
NGNG狂牛病だけにヤコブソンの松屋法はダメージが大きいですよ。
松屋は改装工事でおしゃれになってアベックでも入店しやすくなり、
ペアテイスティングを積極的に取り入れていますけどね。
カレーギュウの質が落ちたことについては残念ではありますが。
0243デフォルトの名無しさん
NGNG多重継承は駄目だという実例だな。
0244デフォルトの名無しさん
NGNG顧客の要求を分析することで、松屋は他の牛丼屋にない
豊富なメニューを取り揃えています。
お客、店員だけでなく、自動食券販売機をアクターとみなしたことは
画期的な偉業だと言われています。
それにしても彼ら3人をスリーいらっしゃいズと呼んでいる人は
本当にいるのでしょうか?
彼らがそう呼んで欲しいだけのような気がするのは
私だけなのでしょうか。
0245デフォルトの名無しさん
NGNG0246デフォルトの名無しさん
NGNG0247デフォルトの名無しさん
NGNGは、ペアプログラミングのことで多重継承は関係ないのでは?
0248デフォルトの名無しさん
NGNG暇な3流大学生の溜まり場なのら〜
ら〜〜〜〜♪
0249デフォルトの名無しさん
NGNG0250デフォルトの名無しさん
NGNG例えば、privateメンバをClassImplに記述することで、
インターフェイスClass.hに見える部分をpublicメンバだけに制限できる。
っていうかそれくらい知っとけ。
#ていうか今日、Effective C++読んでたら同じやり方を見つけてショック(藁
0251デフォルトの名無しさん
NGNG> っていうかそれくらい知っとけ。
目くそ鼻くそ・・・
そう思ったの、漏れだけじゃないよね?ね?
0252デフォルトの名無しさん
NGNG0253デフォルトの名無しさん
NGNGOO理解できないアホとか、
デザパタ理解できないバカとかいってた人って、
もしかしてこのレベル?
もう、ここ来るのやめよ
0254デフォルトの名無しさん
NGNGにもなってない(T_T)
0255デフォルトの名無しさん
NGNG0256デフォルトの名無しさん
NGNG私は7つかな。(多少変形ありで。)
0258デフォルトの名無しさん
NGNG僕みたいなへたれには勉強になるのですが。
0259デフォルトの名無しさん
NGNGこのスレは捨ててニュースグループへ逝きましょう
0260デフォルトの名無しさん
NGNGそんなの数えて意味あるの?自慢?
パターンはいままであるものに名前を付けてるんだから
使ってて当然だろ。
変形あり・・・ってそのまま適用する方が少なくねーか?
そりゃ変形するだろ。銀の弾じゃねぇって書いてるだろ。
0261おれ
NGNGやっぱりCマガの「ローテク講座」じゃないでしょうか。
0263(;´Д`)
NGNG0264デフォルトの名無しさん
NGNG銀の弾と書く(書いてきた)人には注意
ストレスたまってます
0265デフォルトの名無しさん
NGNGもしかしてアノ人ですか・・・?
0266デフォルトの名無しさん
NGNG0267デフォルトの名無しさん
NGNG確かにヒステリー気味です 最低3日2chから離れましょう
0268デフォルトの名無しさん
NGNG何故このスレは・・・・
0270デフォルトの名無しさん
NGNG>ってどのレベルだよ…
>そんなにレベル低いのか…?
このソースの良い点/悪い点を解説してちょ
0271199
NGNG[目的]実装とインターフェイスを分離する。
大雑把に言えば、外部から見える.hファイルには
public:セクションしか置きたくないってことです。
この方法を使えば、データメンバやクラス内でしか
使わないメンバ関数などは
すべて実装側に記述することができます。
問題となる点としては
1.全てのメンバ関数がvirtualとなる。
このことによって
(1).関数呼び出しのオーバーヘッドが(わずかながら)増す。
(2).全てのメンバ関数が派生クラスで再定義されうる。
2.目的のクラスをnew演算子によって構築することができない。(悪い点?)
だから例のstatic 関数があります…
3.クラスの継承階層が一段階多くなるのでクラス階層の複雑さが増す。
4.friendを使う場合の問題。
0272199
NGNG0273270
NGNG0274270
NGNG0275199
NGNGいや漏れなんだけど
もっと言えば、いちいち他から参照されないprotected/privateメンバ関数や
データメンバを追加するたびに必要だった、
依存するモジュールの再コンパイルが必要無くなる。
publicインターフェイスが変更されるときだけ、
再コンパイルされる。
中・大規模プロジェクトでは結構無視できないと思われ。
0276199
NGNG結構頭ひねったつもりだったんだけど…
0277デフォルトの名無しさん
NGNGするしかない。
似たような感じで他にもバリエーションあり。
大規模どーたらという本にも載ってたかも。
Efectiveにものってたか?
0278デフォルトの名無しさん
NGNG上のほうで紹介されてたもんで。
中々良い感じです、
「C++に関する本は、ほとんどが論理デザインを取り上げている。」
大規模プロジェクトでは、ソースファイル同士の依存とかも
十分考慮に入れないと、大変なことになる。
そういった「実装デザイン」についても言及してます
でも高かった.
0279デフォルトの名無しさん
NGNG出来ないよね。
ベースクラスの方で、いちいち実装が変わってフルコンパイルかかったりすると、切れるね。
0280デフォルトの名無しさん
NGNG同じ人物が必死になってる気がするが。
ハッ、これは禁句?
0281デフォルトの名無しさん
NGNG開発環境はなに使ってる?VC?>>279
0282通りすがり
NGNGあと、継承先が1つなら、普通やらん
0283たしかに自演ぽいことしてるけど
NGNGそれ以外は知らない。
0284199で統一するか…
NGNG0285270
NGNG同じ人だったの
はずかし
0286270
NGNG0287199
NGNG>あと、継承先が1つなら、普通やらん
そういうもんなのかな…
あまりにも多くのクラスが「知っている」クラスはこれやっといたほうが
変更が効くと、思うんだけど
いかがなもんでしょ.
あとなにがバグなのかわからん.
0288デフォルトの名無しさん
NGNG全コンパイルに近い状態になるのはかなり邪魔くさいので
(C++Builderはコンパイルが遅い!)
うちもでかくなってくると自衛的に二段構えにしてるな。
VCだとDebugビルドだとあんまり気にしなくて済んでるかな。
0289デフォルトの名無しさん
NGNGどちらも場合でも、publicメンバを変更しなければ、
使用しているクラスのソース変更はない。
通常の継承との混在はイヤだな。
使用頻度の低いクラスには、
ソースを複雑にするマイナスの方が大きい。
そう考えると、使用場面は限られてくる。
ポリモの為の抽象クラスほど、有用ではないな。
0290デフォルトの名無しさん
NGNG0291デフォルトの名無しさん
NGNGC++の場合仕方のないことではあるけど
メンバ変数の宣言を実装側に切り離せれば楽なのに。
いちいち純粋仮想関数並べたインターフェース作るのもうざい。
0292デフォルトの名無しさん
NGNGpublic:がないYO!(笑)
0293デフォルトの名無しさん
NGNGぜんぜんオブジェクト指向と関係ない(笑)
0294デフォルトの名無しさん
NGNGインターフェイスのファイルの分離でしょう。
0295デフォルトの名無しさん
NGNG0296デフォルトの名無しさん
NGNGヘッダとソースを両方インクルードするのね。
なんか変。
0297デフォルトの名無しさん
NGNGいや、そーすだけだよ
さらにへんだが
0298デフォルトの名無しさん
NGNG0299デフォルトの名無しさん
NGNG0300デフォルトの名無しさん
NGNG本人は、自分で考えたと言っている。
>>299
まぁ、抑えていきましょう。
0301デフォルトの名無しさん
NGNGOOを使いこなせるようになる→ウマー
書籍に洗脳されるやつは馬鹿だと主張して本を読まない→OO使えない→OO使ってる
やつの足を引っ張る→迷惑がられる→差をつけられる→マズー
あなたはどちらの道を選びますか?
0302デフォルトの名無しさん
NGNG0304デフォルトの名無しさん
NGNG>どちらも場合でも、publicメンバを変更しなければ、
>使用しているクラスのソース変更はない。
以下はC++の話。
public以外の実装(内部処理)を変更するときにもヘッダファイルを
変更しないといけないでしょ?
インタフェース(のようなもの)と、内部実装を切り離しておけば、
そのクラスを使う場合に、利用元の変更が波及しにくくなる。
>>294
>つーかC++固有の瑣末的な問題回避の話だな。
>ぜんぜんオブジェクト指向と関係ない(笑)
確かにそうですね。
>>296
>そこから更に継承するときは、
>ヘッダとソースを両方インクルードするのね。
ヘッダファイルだけでいいよ。
0305デフォルトの名無しさん
NGNG289と296についてはもう一度考えてみると良い
0306デフォルトの名無しさん
NGNGおかしいところがあれば、具体的に指摘してくれませんか?
0307デフォルトの名無しさん
NGNG少し考えてからにしてはどうか?
その後に説明する
0308デフォルトの名無しさん
NGNG>>289では、クラスのソース変更はpublicメンバの変更があるときだと
言ってますよね。
これはそうではないと思います。
>>296
ソースをインクルードする必要があるということですか?
0309デフォルトの名無しさん
NGNG>public以外の実装(内部処理)を変更するときにもヘッダファイルを
>変更しないといけないでしょ?
この場合に、コンパイル以外の違いは何か?
>ヘッダファイルだけでいいよ。
public以外のメンバはどうなる?
0310デフォルトの名無しさん
NGNG>この場合に、コンパイル以外の違いは何か?
うーん、質問の意味がわかりません。
>public以外のメンバはどうなる?
これもわからない。「どうなる」って何がでしょうか?
ソースファイルをインクルードする必要はないと思いますけど・・・。
0311デフォルトの名無しさん
NGNGたとえヘッダファイルか更新されても、
publicメンバ以外の変更であれば、
再コンパイル以外の処理は発生しない。
継承時は、protectedやprivateも必要になる。
これは、Class.cppに記述されている。
0312デフォルトの名無しさん
NGNG>たとえヘッダファイルか更新されても、
>publicメンバ以外の変更であれば、
>再コンパイル以外の処理は発生しない。
その再コンパイルを防ごうという話なんですけど・・・。
かっこよく、うさんくさく言えば、インタフェースと実装の分離。
>継承時は、protectedやprivateも必要になる。
>これは、Class.cppに記述されている。
?
それをClassImplで実装しましょうという話なんですけど・・・。
0313デフォルトの名無しさん
NGNG>その再コンパイルを防ごうという話なんですけど・・・。
無論、分かっている。
つまり、使用クラス側のソース変更はない。
>それをClassImplで実装しましょうという話なんですけど・・・。
継承時には、その実装ファイル(Class.cpp)のインクルードが必要。
Class.hは必要ない。
0314デフォルトの名無しさん
NGNGインターフェイスのファイルを分離して、
再コンパイルを少なくするという事。
0315デフォルトの名無しさん
NGNG0316デフォルトの名無しさん
NGNGしかし、インタフェースの分離か否かというのは、見解の相違という
ところに落ち着くと思います。
ベースクラスのインタフェースの変更が無い限り、それを使用する
ユーザはベースクラスの変更に無頓着でいいのですから、その
意味ではインタフェースが分離されているとも言えます。
ところで、Class.cppのインクルードは必要ないと思いますけど、
何か勘違いしてるでしょうか?
0317デフォルトの名無しさん
NGNG>ユーザはベースクラスの変更に無頓着でいいのですから、その
コンパイルの速度が速くなるだけだよ。プログラムはビルドしなおし。ユーザーは
影響を受ける。
それでもファイルが分離された分、少しはインターフェイスが分離されたと言える。
0318デフォルトの名無しさん
NGNGOOよりも、まずプログラミングの基礎を勉強すべし
0319デフォルトの名無しさん
NGNG> ところで、Class.cppのインクルードは必要ないと思いますけど、
ClassImplを継承せずにClassを実装した別のクラスを作るんなら必要ないけど。
ちなみにXtはCで書かれてるけど、使用のためのインターフェースと継承のた
めのインターフェースが分かれてる。たとえばXawのダイアログなら
X11/Xaw/Dialog.h 公開インターフェース
X11/Xaw/DialogP.h クラス実装定義
という風になっていて、Dialogを使うときにはDialog.h、継承したクラスを作
るときにはDialogP.hをインクルードする(PはたぶんPrivateのP)。
0320デフォルトの名無しさん
NGNG牛丼の話に戻さないと・・・。
0321デフォルトの名無しさん
NGNG>コンパイルの速度が速くなるだけだよ。プログラムはビルドしなおし。ユーザーは
コンパイル速度の問題だけじゃない。
変更したのがライブラリクラスで多くの組織でそれを使ってる場合にそれぞれの組織に
再コンパイルを頼むのはコストがかかる。
0322デフォルトの名無しさん
NGNGアブストラクトクラスとかJavaのインターフェース継承とか
のことだと思ってたんだけどなぁ。
0323デフォルトの名無しさん
NGNG>コンパイルの速度が速くなるだけだよ。プログラムはビルドしなおし。ユーザーは
>影響を受ける。
スタティックリンクの場合はリンクのみ必要。
ダイナミックリンクの場合は何も必要なし。
でしょ?勘違いしてるかな?
>>319
>ClassImplを継承せずにClassを実装した別のクラスを作るんなら必要ないけど。
あぁ、ここで食い違ってたんですね。
ClassImpleはClassの内部実装なのですから、class Classだけで閉じています。
というか、そのようにします。
継承も参照も保有もそうですけど、class Class以外のクラスは、Class.h
しか使いません。
>>322
>>199のようなコードは、ABCにせざるを得ませんから、その意味でも
インタフェースと言ってもいいんじゃないかと思います。まぁこの点は
異論があるかとも思いますけれど。
0324199
NGNGインターフェイス継承の場合はClass.hをインクルード
実装継承の場合は、ClassImplクラスの定義を(class{};の部分を)、
新たにClassImpl.hに移して、(はじめからそうしておけば良いんだけど)
そのClassImpl.hをインクルード。
てな感じでどうですか
#.cppをインクルードするのは禁じ手かと。
0325199
NGNG0326デフォルトの名無しさん
NGNGクラスの中はスパゲッティーになること多くない?
あの関数とこの関数が依存しすぎ、とか。
これって漏れが下手なんかな?
他の人はどう?
0327199
NGNGFactoryクラスでもつくって、
そいつに具象クラスの生成をさせると良いと思う。
というか、それが一般的なのか?
結局漏れが言いたいのは、newで生成する側はクラスの実装の詳細を
知らないといけないから、
それをstatic Class* create()みたいに宣言して、
定義をClassImplと同じスコープに置いた、
こりゃどうでしょ、ということ
0328デフォルトの名無しさん
NGNGabstract factoryじゃだめ?
0331デフォルトの名無しさん
NGNGあの関数の処理を変更するとこっちの関数も直さないと
だめでこっちの関数を直すとそっちの関数も...
みたいな.逝ってよし?
0332デフォルトの名無しさん
NGNG0333デフォルトの名無しさん
NGNGえ?332のところって一つのクラスを複数の人間でコーディング
するの?ふつうクラスごとに割り振るんじゃないの?
あ、もちろんクラスのインターフェイスでは整合性を取ってるよ.
>>331はローカル関数の事ね.
0334199
NGNGとりあえず構造化が必要じゃないのかな
それぞれの関数の役割を明確にしておけば、
その中身の振る舞いを多少変えても大丈夫、みたいな。
「リファクタリング」とかが良い例かも。
メソッドの移動、とか.
0336VB厨房
NGNGのクラスにやたら関数が入ってるのは、そのクラスを管理するクラス
(マネージャクラス)が無いんじゃないの?
参照スパゲッティは怖かもしれんが、やたらとプライベート関数詰め込むと
誰かにfinalにされるぞ(藁
0337デフォルトの名無しさん
NGNGいや、意見産休。
やっぱりどうも自分が下手な気がしてきた。
まだまだ経験不足なのかも。
0338デフォルトの名無しさん
NGNGうーん、なんていうか、マネージャクラスに対する
インターフェイスを整備しようとしてローカル関数が
そうなっちゃう場合が多い気がする。
自分だけならあんまりならない。
0339デフォルトの名無しさん
NGNG僕はこれをやらないので、「.cppをインクルードする必要がある」
という意見が理解できないのです。
0341199
NGNGいや、
「.cppをインクルードする必要がある」
というのは、もとに挙げた>>199の例が悪いっす。スマソ。
前にも書いたけど、class ClassImpl{…};の部分だけ新ヘッダに
移してそれをインクルードすれば良いと。
実装継承は…チョト自信ないけど、
「ClassImplの一部の動作を変更して再利用」みたいになるのかな…
0342VB厨房
NGNGそれはユーティリティークラスとして別のパッケージに追いやってでも
クラスを簡素化すべき。クラスは寂しいくらい簡素な方がヨイ。
ただテストはたまったもんじゃないだろうが。バグの追跡も。
0343デフォルトの名無しさん
NGNG>実装継承は…チョト自信ないけど、
>「ClassImplの一部の動作を変更して再利用」みたいになるのかな…
それってClassImplをpublic継承して動作を変えるんでしょうか?
うーむ、デザインパターンを知らないんですが、そういうことって
よくやるんでしょうか。
Classを継承するのと何が違うのか良く分かりません(汗
0344デフォルトの名無しさん
NGNGさりげない会話の中で彼らの日本でのテロ開始の指示が行われようとしている。
開始のキーワードだけは解っている。
それは「生産性」だ。
決してこの単語を書きこんではいけない。
0345デフォルトの名無しさん
NGNGswingをデザインパターン併せて勉強しろ
糞のままでいたくなかったら普遍的な知識を見に付けろ
オブジェクト思考はやっといて損はない
アーキテクチャとかアルゴリズムとかも忘れんどけや
0346デフォルトの名無しさん
NGNG0347デフォルトの名無しさん
NGNG0348デフォルトの名無しさん
NGNGなぜ?
反論するんならきちんとしてくれな
0349デフォルトの名無しさん
NGNGそれはない
オブジェクト指向できないと、くそコードしかかけないだけ
自分がくそコード書いてる事に気づかないと・・・
>swingをデザインパターン併せて勉強しろ
同意
デザパタできなきゃswing使いこなせない
>糞のままでいたくなかったら普遍的な知識を見に付けろ
>オブジェクト思考はやっといて損はない
>アーキテクチャとかアルゴリズムとかも忘れんどけや
ライバル増やさないでー
他にできる奴がいないから、俺らは2千万以上稼げるんだから
年収1千万以下でPGとかSEとか言ってる人は
かわいくていいよ
0350デフォルトの名無しさん
NGNGじゃあ、
>Javaやればオブジェクト思考なんて自然に見に付く
なんて思ってるとは考えが浅い。
で、どう?(w
0351デフォルトの名無しさん
NGNG0352デフォルトの名無しさん
NGNG0353デフォルトの名無しさん
NGNGJavaScriptやってもオブジェクト指向は身につかんな。
0354デフォルトの名無しさん
NGNG自分でライブラリーとか作らないと・・・
ライブラリーを使ってるうちは身につかないと思うよ
>JavaScriptやってもオブジェクト指向は身につかんな。
おもしろい
ところで、JavaScriptってプログラミングって
言えるようなものなの?
0355デフォルトの名無しさん
NGNG上段
作るのはいくらでも出来ますが
ライブラリを置くスペースがありません。
下段
プログラミングと言えるようなものではありません。
というか、あれはJavaでもなんでもありません。
0356デフォルトの名無しさん
NGNG10kbだっけ?
まあ、確かにそうだね(笑)
ライブラリを書かなきゃいけない・・・
要するにポリモーフィズムとかを使ったライブラリを
(別にライブラリじゃなくてもいいんだけど、
巨大なプログラムって複数人でつくるから設計できない人にはやらせてくれないよね)
設計する機会がないとオブジェクト指向は身につかないんだよね
携帯で動かすくらいのプログラムにオブジェクト指向は必要ないかもね
iアプリとかのサーバークライアントのプログラム作る時がくれば
サーバー側はいろいろと複雑だから、それまでに身につけとかないとね
オブジェクト指向は設計フェーズの話だからね
やっぱ,JavaScriptはプログラミングってもんじゃないんだ
使う機会無さそうだし
JavaScriptでできることって
全部サンプルプログラムになっちゃってる気が
0357デフォルトの名無しさん
NGNG0358デフォルトの名無しさん
NGNGお前の方が荒らし。
0359199
NGNGてなわけで新しいネタきぼんぬ。
0360デフォルトの名無しさん
NGNGマトモな人たちはこのスレを見捨てたようだ。
0361デフォルトの名無しさん
NGNG0362デフォルトの名無しさん
NGNGどう使い分けるかについて話しませんか?
0363デフォルトの名無しさん
NGNG0364デフォルトの名無しさん
NGNG設計した後の実装の時辛い事あるよね。
id型とかを持つ言語なら大丈夫なんだろうけど、
これだと型チェックが甘くなるし・・・
0365デフォルトの名無しさん
NGNG頼むから一回分かりやすく説明してから
使い放題にしてクレ
0366デフォルトの名無しさん
NGNGcovariantのこと?
0367デフォルトの名無しさん
NGNGJavaでも、オーバーライドしたメソッドの戻り値の型は、変更できない。
確かに変更したいときもあるけど、それを許すとポリモーフィズムに影響
がでる。
Javaでメソッドを区別するシグナチャは、メソッド名とパラメータの並びで
戻り値の型とアクセス修飾子は含まれないけど、オーバーライドする場合は、
アクセス修飾子は狭くなる方には変更できないし、戻り値の型は変えられない
という制約がある。
結局、その方がオブジェクト指向に適合しているということだよね。
0368デフォルトの名無しさん
NGNGごめん漏れの言葉の使い方がおかしいのかもしれない
漏れは概念的に設計した後の実際のコーディングの事を実装って
呼んでる。C++で実装、Javaで実装とか。
>>366
あ、うん。
多分これのことだと思うんだけど、よく知らないので酢。良かったら
教えてください。資料がほとんど無いので・・・
C++相談スレへ逝ったほうが良いかな?
0369368
NGNG適合してるのかどうかは漏れには分からないけど、
例えば、ファイルを扱うCFileというクラスがあったとして
CFile::Load()の戻り値はファイル形式によって色々あっても
良さそうじゃない。テキストファイルなら
CText * CFile::Load()だし、画像ファイルなら
CImage * CFile::Load()だし。
CFileのサブクラスで実装するにしても、インターフェイスで
型が決められてしまうとこれが出来ないでしょ?
0370デフォルトの名無しさん
NGNGそういうクラスがほしいのだったら、
CText, CImageの基底クラスを作ってそれを読み書きするんでないの?
class CFileImage;
class CText : public CFileImage {}
class CImage : public CFileImage {}
CFileImage* CFile::Load();
なぜばかばかしいかはじっくり考えてくれ
0371デフォルトの名無しさん
NGNGそれはわかるんだけど、それだとCFileから返ってくる物は
全部メタクラスから派生した方でなきゃいけないでしょ?
外部ライブラリを使った時なんかはそれが出来ない事もあるわけ。
0372デフォルトの名無しさん
NGNG0374デフォルトの名無しさん
NGNGclass CLoadableImage {
public:
bool Load(CFile &f);
};
class CText : public CLoadableImage {}
class CImage : public CLoadableImage {}
こっちでいいんでないの?
パターンなんて言うか忘れた。
0376デフォルトの名無しさん
NGNGclass CImage;
class CText;
class CFile {
public:
void load() {};
};
class CImageFile : public CFile {
public:
void load(string name, CImage *img) {/*...*/}
}
class CTextFile : public CFile {
public:
void load(string name, CText *img) {/*...*/}
}
CFile file;
CImage *img;
CText *txt;
file.load("filename1", img);
file.load("filename2", txt);
0377デフォルトの名無しさん
NGNG気持ちは分かるが、それおかしすぎ。
0378デフォルトの名無しさん
NGNGどうやるのが定石なの?
0379デフォルトの名無しさん
NGNG>>374が正解だと思う。
0380376
NGNGこれじゃコンパイルエラーじゃん藁
CImageFile ifile;
CTextFile tfile;
ifile.load("filename1", img);
tfile.load("filename2", txt);
0381デフォルトの名無しさん
NGNGそれも気持ちは分かるが、それおかしすぎ。
0383デフォルトの名無しさん
NGNGバイトの並びを知っているのは各オブジェクト。
各オブジェクトがCFileに依存する形で書くのが
OO的にスマートだろ。
だが376, 380は、それ以前におかしい。
0384378
NGNGゴメソ・・まだよく理解してないんだけど、ファイルをオープン
するのはCFileで、そのなかのデータを画像として扱うのは
CImage、ということ?
0385デフォルトの名無しさん
NGNGうん。
0386デフォルトの名無しさん
NGNGCFileが、それぞれのバイトの並びを知らなければいけない。
(もしくは、CImage, CTextなどの末端のオブジェクトを知らなくてはいけない)
CFileは、CImageやCTextに対する責任を負うべきではない。
というのは、わかるよね?
0388デフォルトの名無しさん
NGNG>Javaでも、オーバーライドしたメソッドの戻り値の型は、変更できない。
>確かに変更したいときもあるけど、それを許すとポリモーフィズムに影響
>がでる。
戻り値をcovariantにしてもポリモーフィズムに影響がでないというのが定説。
0389367
NGNG>戻り値をcovariantにしてもポリモーフィズムに影響がでないというのが定説。
言われてみれば確かにそう。367での発言は、covariantの場合は当てはまらない。
sunのサイトで調べてみたら、javaでもcovarinatのサポートが検討されている
ようだし。
勉強不足、反省して逝きます。
0391体育会系SE
NGNGプログラムは根性で作るものだ!
理屈こねてんじゃねーぞ!!!
0392デフォルトの名無しさん
NGNG0393デフォルトの名無しさん
NGNG0394体育会系SE
NGNG0395デフォルトの名無しさん
NGNGっつーか、設計なんてしてないから関係ないかw
0396デフォルトの名無しさん
NGNG>>391は体育会系の人に失礼
0397デフォルトの名無しさん
NGNGこのあいだ、久しぶりにシステム設計したんです。システム設計。
そしたらなんか設計会議にに人がめちゃくちゃいっぱいで座れないんです。
で、よく見たらなんかホワイトボードに書きこみがしてあって、「ハード仕様、言語未定」、
とか書いてあるんです。
もうね、アホかと。馬鹿かと。
お前らな、設計会議でハードの仕様未定でどーすんだよ、ボケが。
システム設計だよ、システム設計。
なんか発注元のSEとかも来てるし。発注元4人で途方に暮れてるのか。おめでてーな。
よーし、OO使って納期守っちゃうぞー、とか言ってるの。もう見てらんない。
お前らな、俺の寝袋やるからその席空けろと。
システム設計ってのはな、もっと殺伐としてるべきなんだよ。
開発中にいつ大幅な仕様変更が来てもおかしくない、
誰に責任をなすりつけるか、自分だけは助かろう、そんな雰囲気がいいんじゃねーか。
OOオタは、すっこんでろ。
で、やっと座れたかと思ったら、隣の奴が、んじゃインターフェースで、とか言ってるんです。
そこでまたぶち切れですよ。
あのな、インターフェースなんてきょうび流行んねーんだよ。ボケが。
得意げな顔して何が、んじゃインターフェース、だ。
お前は本当にインターフェースでプログラム組みたいのかと問いたい。問い詰めたい。小1時間問い詰めたい。
お前、実際に仕様が固まったらそのインターフェースじゃおっつかないじゃないんかと。
システム設計通の俺から言わせてもらえば今、システム設計通の間での最新流行は
提案設計、これだね。
仕様より先に作っちまって提案。これが通のシステム設計のし方。
提案設計てのこちらの都合が多めに入ってる。そん代わり発注元の希望が少な目。これ。
で、発注先の担当者に催眠術かけて誘導。これ最強。
しかしこれは発注元が気付いたら信用を失うという危険も伴う、諸刃の剣。
素人にはお薦め出来ない。
まあお前、1は、VCでWINアプリでもつくってなさいってことだ。
0398デフォルトの名無しさん
NGNG0399デフォルトの名無しさん
NGNG違う人達だよね?。
皆さん学生さんだよね?。
そうだと言って下さい! (´Д`;)
まともなOOなんか一生させてくれない気がして来た...
0400デフォルトの名無しさん
NGNG0401デフォルトの名無しさん
NGNG「ある町に2つの会社がありました。
頭の良い社員の集まったA社と頭の悪い社員の集まったB社です。
あるとき、頭の良いA社の社員はOOを採用する事に決めました。
頭の悪い社員のいるB社は従来の設計手法のままでした。
やがて日本の景気が悪くなってきました。
業界にも冬がやって来たのです。
以前からせっせとOOを取り入れていたA社は高い生産性によって
注文が減るどころか、むしろ増えていました。
一方、OOを採用しなかったB社は仕事が減って会社が火の車に
なっていました。・・・・・・」
小学生向けOO思想普及パンフレットより。
0402デフォルトの名無しさん
NGNG0403デフォルトの名無しさん
NGNG0404デフォルトの名無しさん
NGNG0405デフォルトの名無しさん
NGNGども、隠語かと思った(w
0406デフォルトの名無しさん
NGNGFileという大雑把な言い方だから混乱するんじゃないかな。
Fileには機能的に二つの面があって、
1つはファイル名とかを扱う部分、もう1つはファイルの「中身」だ。
後者についてはSerializableとかStreamとかMarshalとかいう呼び名を
使うケースが多いね。
で、TextとかImageとかに必要なのは、まず絶対にStream経由での中身、
そして時として必要となるファイル名(拡張子連動とかで使う)。
分けて考えたほうがいいよ。
FileオブジェクトからStreamを取得して、Streamを使って中身を読み書きする、とかね。
0407デフォルトの名無しさん
NGNG0408デフォルトの名無しさん
NGNG0409デフォルトの名無しさん
NGNGこれをストリームと呼ぼう。
とするとFileの読み書きはStreamの一種といえそうだ。
0410デフォルトの名無しさん
NGNG>これをストリームと呼ぼう。
新しい俺用語の誕生ですか。
Streamという言葉にはもっとまともな定義がある筈ですが?
0411デフォルトの名無しさん
NGNG連続性を持ったデータの並び、だっけ?
0412デフォルトの名無しさん
NGNG>新しい俺用語の誕生ですか。
当然だ。俺が作るライブラリだからな!!ガハハ
0413デフォルトの名無しさん
NGNG辞書にはそうでてるかも知れないけど、普通は、受け取り側の都合も考えずに
ドンドンやってくるデーターの事を言うような・・・。
連続性なんて言ったら殆どのデーターが該当するような・・・。
0414趣味プロオタドキュソグラマ
NGNGあんた人間に対してOOPしてる。ダークサイドだ。こえー。
>>OO信者様
C++にはnamespaceとtemplateがあるんだぜ。カッコつけんなよ。
OOPなところはsusieとかPhotoShop etc.
0415デフォルトの名無しさん
NGNGこの人の言っていることって
正しいのですか?
> 一方、筆者が別れざるを得なくなったのがオブジェクト指向である。オブジェクト指向
> といえば、クラスの再利用性が重要といわれるが、筆者の経験からいえば、再利用を意識
> したクラスを作ると、当面必要のない機能まで書き込む必要が生じて、時間と手間を食う。
> しかも、手間を掛けてもそのまま再利用できるケースはほとんどない。そのうえ、使わな
> い機能がソースコード上にあることで、ソースの分かりやすさは低下する。再利用を意識
> しても、結局よいことはあまりない。
>
> また、現実のモノになぞらえたモデリングを行うあまり、何重にもクラスの継承を重ね
> ることもあるが、これも問題になる。このようなクラスは、メソッド呼び出し1つでも、
> いったいどのクラスのメソッドが呼び出されるのか分かりにくい。モノになぞらえるより
> も、継承の数を減らした方が、ずっとソースコードが分かりやすくなる。1980年代には、
> goto文がプログラムを分かりにくくする悪とされたが、継承は21世紀のgoto文といえるか
> もしれない。
0416デフォルトの名無しさん
NGNGテクニックですから、落ちこぼれてそう言う事を言う人も居ますが
気にしないで下さい。
0417デフォルトの名無しさん
NGNGなぜオブジェクト指向と継承や再利用が同義であるかのごとくに語られているのか。
0418名無しヘタぐらまさん
NGNGページ,読んできましたが,
この方,オブジェクト指向,全然否定してません.
彼の主張は
「再利用性を考えるあまりに複雑な継承をやるくらいなら
使い捨ての短いプログラムをさっと作ってしまった方がいいじゃん」
ってことなのではないかと.
彼の『オブジェクト指向』の言葉の使い方は間違っていると思いますが
主張自体は一理あるかなと思います.
確かになんでもかんでも継承にすることの問題点は
γさんとかが書いたデザインパターンの本でも指摘されていますし.
今作っているプログラムがクラスの設計でドツボにはまっているところだったので
いろいろ考えさせられてしまいました.
ただ,挙げられていたサンプル,Delphiで書けば
1: TSample1 = class
2: private
3: FSampleData: integer;
4: public
5: property SampleData: integer read FSampleData write FSampleData;
6: // 続く
7: end;
『隠蔽』をちゃんとやっても七行で済んでしまうのですが(笑).
彼にDelphiを教えてあげたい.
0419デフォルトの名無しさん
NGNG0420デフォルトの名無しさん
NGNGclass Sample
attr_accessor :sample_data
end
0421デフォルトの名無しさん
NGNGオブジェクト指向=複雑な継承
という式しか成り立っていないので
複雑な継承をやめる=オブジェクト指向を否定
と勘違いしているのでは?
何でも"短いプログラムがよい"という
決め付けは言語が変われば状況が変わるのに
そういう事が彼には理解できないのではないでしょうか。
定型的なメンバーアクセスメソッドを書くと行数が多いから
読みにくくてだめなコードという判断は
どう考えても、おかしいと思います。
優れたライブラリを使えば
ソースコードが短くて済み、その事は大変よいことでしょうが
そのライブラリを作っている人が
OO志向を否定して、メンバー変数をPublicばかりに
しているようなものは使えるものには
ならないと思うのですが、どうなのでしょう。
0422デフォルトの名無しさん
NGNG0423デフォルトの名無しさん
NGNGどこにも「複雑な継承」の話は出てきてませんけど・・・。
>何でも"短いプログラムがよい"という
>決め付けは言語が変われば状況が変わるのに
そうですか?
>定型的なメンバーアクセスメソッドを書くと行数が多いから
>読みにくくてだめなコードという判断は
という話も出てきてません。
短いプログラムが正しいという前提だとすると、セクセッサを
使わないコードの方が「正しいということになってしまう」と書いてます。
XPでも「必要ないアクセッサを今インプリメントするな(YAGNI)」
というのがありますね。
0424デフォルトの名無しさん
NGNG短くて分かりやすくて意図した通りに正しく動くプログラムが正しい
氏は言葉をはしょり過ぎ。肉を減らして言葉を増やせといいたい。
0425デフォルトの名無しさん
NGNG記事は鵜呑みにしないようにね。
0426デフォルトの名無しさん
NGNG>>423
これを複雑な継承という風に解釈したのですが?違いますか?
>>何でも"短いプログラムがよい"という
>>決め付けは言語が変われば状況が変わるのに
>そうですか?
そうでしょう、実際、DelphiやRubyの話も出ているようですが?
短いプログラムがよいという決め付けなら
アクセスメソッドを簡単に定義できる言語なら定義するのはよくて
C++ではメンバーはアクセスメソッドを付けない
のが正解なのですか?
実際、本人もC#はコードが短くなるからよいという事を書いていますけど
>>定型的なメンバーアクセスメソッドを書くと行数が多いから
>>読みにくくてだめなコードという判断は
>という話も出てきてません。
出ているでしょ。どこを読んでいます?
>短いプログラムが正しいという前提だとすると、セクセッサを
>使わないコードの方が「正しいということになってしまう」と書いてます。
前提という言葉があれば、どんな意見でもまかりとおるわけではないでしょう。
彼はオブジェクト指向より、短いソース志向が優れていると主張しているわけですよね。
XPは良い理論だと思いますが
彼の意見は短絡的で何も考えられてないと思います。
コードのリファクタリングは小さなプログラムを作れという指示ではないでしょう。
0427デフォルトの名無しさん
NGNG編集の仕方はしないでしょう。
>短いプログラムでは複雑な処理ができないではないか、と思う人もいるだろう。
>もちろん、そのとおりである。本当に必要な機能に絞り込んで短いプログラムに仕上げれば、
>単機能のプログラムになるのは必然である。
つまり、多機能ライブラリを作れないし作っている奴の事は除外して
自分だけの狭い世界でだけ通用する前提について
この人は語っているのですか?
0428デフォルトの名無しさん
NGNG0429デフォルトの名無しさん
NGNG0430デフォルトの名無しさん
NGNG>彼はオブジェクト指向がよくわかっていないのではないですか?
>
> オブジェクト指向=複雑な継承
>
>という式しか成り立っていないので
>複雑な継承をやめる=オブジェクト指向を否定
>と勘違いしているのでは?
と誤読しておいて、自分の読解能力を露ほども疑わない、
そんな無邪気な君に乾杯。
君は筆者を貶めたい、ただそれだけちゃうんかと。小1時間問い詰めたい。
0431デフォルトの名無しさん
NGNG.NET会議室の馴れ合い連中が
牛ノ屋関連で流れ着いてデブ擁護?
>君は筆者を貶めたい、ただそれだけちゃうんかと。小1時間問い詰めたい。
質の悪い記事を書いたら
叩かれるのは当たり前でしょう。
0432デフォルトの名無しさん
NGNGソースが長くて見難いたって、アクセサ程度じゃどうってことない。
アクセサならなにやってるかも名前で一目瞭然だしな。
時間がかかるってのもデバッグの時間に比べれば屁でもない。(w
0433430
NGNG>.NET会議室の馴れ合い連中が
>牛ノ屋関連で流れ着いてデブ擁護?
電波受信?
言ってることがさっぱりわからん。
>質の悪い記事を書いたら
>叩かれるのは当たり前でしょう。
マトモな批判ならOK。
426は論理的な思考も読解力も無いアホだから、議論するのも無駄。
0434デフォルトの名無しさん
NGNGhttp://mentai.2ch.net/test/read.cgi?bbs=prog&key=1002008783
まあお前、433は、このスレの115番でも読んでなさいってこった。
人のことアホ呼ばわりするなら
もっとまともな反論しろよ。
あなたこそ、誤読がとか読解能力がとかしか言ってないでしょ。
あーヤダヤダ。核心つかれるとすぐ怒るから。
0435430
NGNG>>421
> オブジェクト指向=複雑な継承
>という式しか成り立っていないので
と君が読み取っただけだね。どこにもそんなこと書いてない。
>複雑な継承をやめる=オブジェクト指向を否定
>と勘違いしているのでは?
どこにオブジェクト指向を否定してる記述があるんだ?
>何でも"短いプログラムがよい"という
>決め付けは言語が変われば状況が変わるのに
あのさー、記事全部読んでる?
「決め付け」なんてしてないだろ。
>そういう事が彼には理解できないのではないでしょうか。
「そういう事」って何を指してる?
また、DelphiやRubyでアクセッサを簡潔に書けることと、あの記事は
どういう関係がある?
>読みにくくてだめなコードという判断は
ダメだなんて判断してないでしょ。してると言うんだったら、該当箇所を引用しなさい。
>そのライブラリを作っている人が
>OO志向を否定して、メンバー変数をPublicばかりに
>しているようなものは使えるものには
>ならないと思うのですが、どうなのでしょう。
日本語おかしいね。何言ってるかわかりません。
どうなのでしょうって、何が?
そもそも、筆者が「OOを否定している」なんて思い込んでいるから、
記事の内容を読み取れないんだよ。
0436430
NGNG>あーヤダヤダ。核心つかれるとすぐ怒るから。
君って筆者の略歴にコンプレックスもって、筆者に粘着してるだけなんでしょ。
・・・なんて書かれたら、もう有効な反論は出来ないでしょ。
そんな低レベルなことは止めようや。
0437デフォルトの名無しさん
NGNG430は正しいのだが、揚げ足取りの感があるなあ。
430の指摘は枝葉末節だろう。
0438430
NGNG誤読だろ?
と言われたら、自分がそう判断した根拠を提示すればよろしい。
それをしないから非難されるのだ。
それに、筆者がよそで何をやろうと関係ないでしょ。
あのコラムの内容で閉じた話をしよう。
それともあの筆者について語りたいのか?
0439430
NGNG>>437
>426は極端に曲解してるところがあるというのはその通りだし、
>430は正しいのだが、揚げ足取りの感があるなあ。
>430の指摘は枝葉末節だろう。
うん、その通り。揚げ足取りだよ。
426がちゃんとした対話をする知性を持ち合わしているのかどうか、試してるだけなんだ。
なぜ426が、絶大な自信を持ってるのかも知りたい。
怖いもの見たさっていうか・・・(藁
0440デフォルトの名無しさん
NGNG次行こうぜ。
0442デフォルトの名無しさん
NGNG0443430
NGNG0444デフォルトの名無しさん
NGNG継承のし過ぎは確かに良くないが、それはオブジェクト指向批判には
結びつかないと思うのだが。「別れざるを得ない」の理由にならないのは
言うに及ばず。
0445デフォルトの名無しさん
NGNG0446デフォルトの名無しさん
NGNGこれが駄目ならOOは駄目つうことだ。
それが判らん奴はただの言語ヲタ。
日経あたりの提灯記事を見ぬけないのは技術者とは言えない。
0447デフォルトの名無しさん
NGNG誰もOOでは再利用性が駄目だと言ってないだろ?
どこからそんな話になるんだ?
0448デフォルトの名無しさん
NGNG関連スレ読み返すべし。
0449デフォルトの名無しさん
NGNG出てきたとしてもずっと昔だろう。
ま、俺としてはOOを使うと再利用性が上がるのは当然と思うがな。
0450デフォルトの名無しさん
NGNG??
OOの再利用性が低いっていうのは、どこのレベルでのプログラミング
の話しですのん?
C++使っててクラスライブラリを使わない人っているのン?
0451デフォルトの名無しさん
NGNGこれまでは大体、Java逝ってよし→C#イイ!って感じでしたが、
(OldProgrammerの地が出て)GUI,OOP逝ってよし→C#イイ!
ってことになっただけですよ。
0452デフォルトの名無しさん
NGNGだたのか‥‥。逝ってよしっ!
0453デフォルトの名無しさん
NGNG0454デフォルトの名無しさん
NGNGやっぱ只のライブラリヲタが騒いでるだけだったのね。
納得。
0455デフォルトの名無しさん
NGNGクラスライブラリを利用してるときはOOの恩恵をさんざん
受けてる癖に自分が再利用できるクラスを構築できないから
「OOは再利用性が低い」って言ってるようにしか聞こえませ
んが何か?
0456デフォルトの名無しさん
NGNGライブラリなんてOOじゃ無くてもあるしね
0457デフォルトの名無しさん
NGNG再利用できそうな部分と使い捨ての部分を切り分けて
クラス設計してるよ。
再利用しそうなほうはもちろん,アクセサを丁寧に用
意するし,はなから使い捨てのほうは必要最低限のメ
ソッドしか用意しない。
仕様変更が起こりそうな部分は継承せずに委譲して
ブラックボックス再利用。
ああOOって便利……。
0458457
NGNG0459デフォルトの名無しさん
NGNGあらら,自分はOOの恩恵を受けてないと思ってる人がまた
ひとり。
ま,そうゆー人は,APIをずらずら並べるプログラミング
してたらいいんじゃないの?(w
0460456
NGNG0461デフォルトの名無しさん
NGNG0462sage
NGNGという話しだと思われ。
0463デフォルトの名無しさん
NGNG0464デフォルトの名無しさん
NGNG「面倒だから勉強は身に付けない」って言ってる受験生と同じだな。
勉強しておけば将来いい思いが出来るのにね。(藁
0465デフォルトの名無しさん
NGNGあんな奴についていったらC#はわけわからない言語になりさがる。
川俣C#はDelphiでいう所の吉田翁以下だよ
C#入門 第13回 言語に内蔵されたイベント機能
http://www.atmarkit.co.jp/fdotnet/csharp_abc/csharp_abc_013/csharp_abc01.html
イベント機能をCUIで利用するなんていうバカ見たことないな
それをサンプルにしてしまうのも、非常にセンスなし
イベントドリブンは元々ウィンドウプログラムから発生した機能だから
ユーザーの入力がないのにイベントを発生させて何が面白いのだ?
>>444そうそう。
>>455その通り。
>>457それは当たり前だが、川俣はそういうのも理解していないだろうな。
全部使い捨て
0466デフォルトの名無しさん
NGNGクラスライブラリは前者。
ごっちゃに議論すると話がややこしくなる。
0467デフォルトの名無しさん
NGNGC#ネタはC#スレでやってくれ。
0468デフォルトの名無しさん
NGNG自分は再利用をにらんだクラスを作る時には
クラスライブラリを作っているつもりや
クラスライブラリを拡張している気になって作ってしまうのです。
0469デフォルトの名無しさん
NGNG究極的に言えば、クラスライブラリは再利用性なんか考えなくて良い。
過不足無く要求仕様を満たせばそれで良し。
再利用をにらんだクラスは、要求仕様+αが必要。
(必要ないかもしれない)抽象度を高めたり、独立性を高めたり、
今は必要ないリファクタリングをしたりする必要がある。
0470デフォルトの名無しさん
NGNG部品屋さん、と、アプリ構築屋さんの違いでは?
再利用性を考える=要求仕様を満たす
という状況もあります。+αが確実な要求仕様になるのです。
>(必要ないかもしれない)抽象度を高めたり、独立性を高めたり、
程度の問題ではありますが
これが要求仕様になるのですよ。
話題は異なりますが
XPのいくつかの理論はアプリ構築の為の方法論であり
元々XPを導入しなくてもスキルがあり生産性の十分高い部品屋には
通じない事もあると思います。
0471sage
NGNG話しに帰結するだろ。
とりあえず今をしのぐために手早く確実に作り込むか、
将来楽をしたいからしっかり作り込むのか、の違いなんだよ。
どちらかというと、後者の方が失敗(予測見積もり)したときの
リスクが大きいから、企業活動としてやるなら
とりあえず「そこまではやらんでいい」のだ。
些末すぎてあのペ−ジに書いてある例は議論の対象にもならんと思うが、ね。
0472デフォルトの名無しさん
NGNGK川俣は堕デブということでよろしいですか?>>471
0473sage
NGNG後で本当にオブジェクト指向を消化したうえで、
もういちど読み直しとけばいいよ。
だが、毒にもならんし薬にもなってはない、と思う。
0475名無しヘタぐらまさん
NGNG私はDelphiのコンソールプログラムでもクラスを作ってイベント定義してます.
イベントをフック,コールバック関数のようなものと考えれば
利用する場面は結構多いとように思うのですがどうでしょう.
たとえばある種のデータを処理するクラスで
時間の掛かるエンコードやデコードを行うメソッドがあるとすると
進行状況を表示する手段としてイベントを用意するのは有効だと思います.
0476デフォルトの名無しさん
NGNG0477デフォルトの名無しさん
NGNGワラタ
水俣?
http://www.autumn.org/selfint.html#NOTPROGRAMMER
プログラマではないのは結構なのだが
それなら知ったかぶりして技術駄文をwebサイトで執筆する
という行為はやめてもらいたい。
0478デフォルトの名無しさん
NGNGそのイベントの使い方は正しいですが
その利点があの川俣氏のサンプルでわかりますか?
ウィンドウプログラムのイベントドリブンだけが
イベントの利点だと思われたのならスマソ。書き方が悪かった。
しかし、コンソールベースでも隠蔽などの事を考えなければ
イベントなどは必要なく単にコールバック関数を指定すれば
いいわけなので、それほど利点になるわけではないと思います。
やはりイベントドリブン系のUIを持つ所での
使用が主として役に立つのではないかと、私は思います。
川俣氏の理論でいうと
イベント定義するより関数を直接呼んだ方が
短いプログラムになるはずですが、
それについてどう思いますか?
0479デフォルトの名無しさん
NGNG奴に書けるわけがない。
だって奴は実際の開発なんてやってないんだから。
責任は人選誤った編集部にある。
奴を責めるのはかわいそうだ。
0480デフォルトの名無しさん
NGNGのリンク先を見ていて思うのだが
自分のことを天才(と周囲に思われている)という人間が書く文章は
どうして凡才以下の文章になるのだろうか?
不思議でならない。
あの一連の記事を読む限り天才さの微塵も感じないばかりが
技術者としてダメな所ばかり目立つ反面教師の姿しか見えない。
太った奴はあつかましくて自己中という事なのだろうか。
>>479
責任は文章を書いた本人にあるのではなく
それを書かせた社会が悪いとでも?
本人が書きたくもないのに、
ああいう趣旨の文章を無理矢理書かされたというのなら
そういう理論も通るだろうが。
0481デフォルトの名無しさん
NGNGそうか、>>475さんはこの文に対してのレスだったのですね、スマソ
ああいう単純なHallowWorld的サンプルで
イベント機能を紹介するというのはひどいという事が言いたかったのです。
0482デフォルトの名無しさん
NGNGHell Worldにでも逝けってんだ。(藁
0483デフォルトの名無しさん
NGNG0484デフォルトの名無しさん
NGNG再利用が可能かどうかなんて話になってるし。
0485デフォルトの名無しさん
NGNG0486デフォルトの名無しさん
NGNG0487デフォルトの名無しさん
NGNGアンタ懲りずに毎度毎度同じネタばかりでウザイよ。
0488デフォルトの名無しさん
NGNG0489デフォルトの名無しさん
NGNG説得力がないのではなく、彼は理解も何もしていない。
理解していないのに説得力など出るわけがない。
0490デフォルトの名無しさん
NGNG死ね!
0491デフォルトの名無しさん
NGNG「再考だぜ?」の間違いかと思われる事が多いから問題なんだよな。
実際自分以外の奴が素直に再利用しているクラスって書けてる?
「なんちゅう使い方してんだ、ゴラァ!!」と思っている奴、使っている奴も
きっと憤懣やるかたない気持ちで使っているんだと思うよ。
0492デフォルトの名無しさん
NGNG0493デフォルトの名無しさん
NGNG0494デフォルトの名無しさん
NGNGここでも川俣さんは叩かれているようです。
0495名無しヘタぐらまさん
NGNGごめんなさい,川俣氏の理論が正しいかどうかはわかりません.
でも「イベントを使えば簡潔なソースになるよ〜」の説明としては
呪文のようなコードを見せられても説得力がありませんね.
>そのイベントの使い方は正しいですが
>その利点があの川俣氏のサンプルでわかりますか?
わかりません(笑).
0496デフォルトの名無しさん
NGNG★デブプログラマーってどうよ★
http://mentai.2ch.net/test/read.cgi/prog/1001686611/133-
0497デフォルトの名無しさん
NGNGどうして適当なclassの中に書くの?
class A { public static void main(...) {...} }
非常に気持ち悪いんだけど。
Javaで.jarに固めるときに、Manifestファイルを書くけど、
プログラムの起動はManifestにクラス名を記述するけど、
だったら、最初から プログラム本体+起動定義ファイルで起動するようにして、
実行は起動定義ファイルで記されたクラスのコンストラクタからでいいと思うんだけど。
0498デフォルトの名無しさん
NGNG0499デフォルトの名無しさん
NGNGテストコードを埋め込むためじゃないの?
0500デフォルトの名無しさん
NGNG単独で実行してそのクラスの機能をテストするためのコードを main に書いたりする。
0501デフォルトの名無しさん
NGNGC/C++の名残というだけの理由なんですか?
0502デフォルトの名無しさん
NGNGJava は C/C++ と見た目の互換性を考えて作られた言語だからして。
0503デフォルトの名無しさん
NGNGこのdAに対し、処理を行うオブジェクトが3つあります。(mB,mC,mD)
dAはmBにより処理され、その結果をmCが処理し、そのまた結果をmDが
処理します。このとき、各処理の入出力はdAです。
dAのカプセル化を保持したままmB,mC,mDで処理できるのでしょうか?
dAのデータ部分はpublicにするしかないのでしょうか?
0504503
NGNGあと、もう一つ、何かをうまく分けてあると今月のCmagaに載ってたんで
なんかやり方があるのではないかと思いまして。。
よろしくお願いしますです。
0505デフォルトの名無しさん
NGNGワラタヨ
0506503
NGNGクラス設計を知りたいと言わなかったのがいけないの。。?
0507デフォルトの名無しさん
NGNGカプセルかも何も、
mB.func(dA);
mC.func(dA);
mD.func(dA);
じゃないの?
やりたいことが今ひとつわからん。
0508デフォルトの名無しさん
NGNG安心しろ。
dAにgetter,setterがあるんだろ。
だったらカプセル化は保持されてると思われ。
0509デフォルトの名無しさん
NGNGmBやmCやmDがdAのprivateなデータを操作するためのメソッドが
dAによって提供されていて、mBやmCやmDが必要なメソッドにアク
セスできればいいだけでしょ。
簡単なサンプルとしてはIteratorパターンなんかそうだよね。
0510デフォルトの名無しさん
NGNGハァ?
0511デフォルトの名無しさん
NGNG処理とデータを個別にカプセル化するサンプルじゃよ。
0512デフォルトの名無しさん
NGNGいや、だからカプセル化の簡単なサンプルで、
Iteratorパターンは出ないと思われるが。
どうでもいいけど。
0513503
NGNGターゲットはJPEGの圧縮処理みたいなやつを想定しています。
画があってこれにDCTして量子化(Q)してVLCして圧縮データを得るわけですが、
画のデータを収めるクラス(Pic)があり、
DCTを行うクラス、Qのクラス、VLCのクラス、
そして圧縮データのクラス(Stream)を作ろうと思ってます。
んで、このとき、画のクラスの情報を隠蔽しつつDCTを行えるのか?という疑問です。
画のPicクラスにDCT、Q、VLCを集約し、機能を委譲すればいいかとも
思いましたがたとえばDCTには4種類ほどやり方があるのでどうやって
Picクラスに入れればいいか、そしてDCTクラスをどのように設計すればいいかが
わかりませんでした。
言語はJavaです。よろしくお願いしますです。
0514デフォルトの名無しさん
NGNG>dAのデータ部分はpublicにするしかないのでしょうか?
publicとprivateの間にJavaならパッケージスコープやインナークラスがあるし、
C++ならファイルスコープやインナークラス、そしてfriendがある。
publicにする必要はないぞ
0515503
NGNGで、OOPなのでデータのオブジェクトはしっかり情報隠蔽したい。
・・・データ部分をさらけ出すのはしょうがないんですかね?
0516デフォルトの名無しさん
NGNGgetterを適切に作れば良いだけだと思うが。
ピクセル要素やピクセルフォーマットにアクセスできない画像クラスなんて
なんの役に立つんだ?
それを隠蔽する事になんの意味がある?
0517デフォルトの名無しさん
NGNGそいつにprotectedでgetterを書く。
Javaなら画像と
同じパッケージに入れてgetterをpublic宣言しなけりゃ良いだけ。
0518503
NGNGどもです。ストラテジーについて調べてみます!
>ピクセル要素やピクセルフォーマットにアクセスできない画像クラスなんて
>なんの役に立つんだ?
>それを隠蔽する事になんの意味がある?
すいません。OOPがよく分かってないもんで。。
原則に対する割り切り方がまだ分からないんです。。
「Javaの格言」読んだら「データはprivate! protectedも危ないぞ!」って
書いてるもんだから。。
>Javaなら画像と同じパッケージに入れてgetterをpublic宣言しなけりゃ良いだけ。
パッケージレベルでの情報隠蔽ってことですね?なるほど。。
また疑問が出てきたら質問させていただきます。どうもありがとうございましたです!
0519デフォルトの名無しさん
NGNGデザインパターンのスレ有ったと思うからそこみて本買うよろし。
おいらはVisitorパターンのような実装にするかな。
class Image {
CompressedImage compress(Compressor compressor) {
return compressor.compress(pixels, pixelFormat);
}
}
0520デフォルトの名無しさん
NGNG例えばJavaのVectorクラス。
あれはメンバ変数にはアクセスできないが、
要素にはアクセスできるだろう?
メンバ変数を公開するのは(勝手に書き換えられたりして)危険だが
メンバ関数を通じてアクセスや操作させるように作れば問題無い。
Javaの標準ライブラリ見てそのへんを考えてみては?
0521503
NGNGほとんど同じのような気が。。理解が足りてないんでしょうか??
まぁ、これでどのようにして4種類のDCTを切り替えるかの方法が分かった気がします。
>>519 Visitorパターンですか。。これから調べてみます。どもです!
>>520 Vectorの例、なるほどです。
>要素にはアクセスできるだろう?
情報隠蔽とはまた違うことですが、(Vectorに格納されているオブジェクトどもは
情報隠蔽されたオブジェクトだから)
でも、その観点からも考えて見ます。
>Javaの標準ライブラリ見てそのへんを考えてみては?
標準ライブラリをほとんど知らないので。。勉強してみます。
(なにかお勧めのパッケージとかありますでしょうか?)
皆さん、どうもありがとうございますです。
0522デフォルトの名無しさん
NGNGVector のメンバ変数って何よ?
0523520じゃないけど
NGNGprotected Object elementData[];
protected int elementCount;
とか。
ところで新しめの似非VectorであるArrayListでは
上の2つ相当のメンバーはprivateになってる。
0524デフォルトの名無しさん
NGNGというか、Java厨として C++ 用語を糾弾してみた。
フィールドまたはインスタンス変数と読んでほしい。
0525520
NGNG>>521
例えばあなたがVectorクラスを自作したとします。
おそらくメンバ変数としてObjectの配列を持つと思います。
これをpublicにするといつでも外から読み書きができてしまいます。
これによって、Vectorを使う側が勝手にVectorがやるような処理を
実装してしまうかもしれません。
しかもその処理がVector側の処理と矛盾があったりするかもしれません。
これではVectorを一つの独立したオブジェクトとみなして安心して使う事は
できません。Vector内部の処理、Vectorを使っている処理
すべてに注意を払いながらコーディングしなければなりません。
一方、このObjectの配列をprivateで宣言し、代わりに
pubic Object get(int index) このように任意の位置のオブジェクトを
取得するメンバを実装したとします。
するとVectorが内部にもつ配列自体には干渉できないので
配列に関する処理はすべてVectorのメンバ関数に頼ることになります。
このように実装されていれば配列の管理は外部から隠蔽されます。
Vectorは独立したオブジェクトとして安心して
使いまわすことが出来ます。
長文ですまんが雰囲気だけでも伝わるだろうか。
0527デフォルトの名無しさん
NGNG0528デフォルトの名無しさん
NGNG0529デフォルトの名無しさん
NGNG0530デフォルトの名無しさん
NGNGそこを勘違いして、公開属性を必ず悪と考えるのは間違い。
goto問題の轍を踏んではいけない。
その目的とは、あえて難しい言い回しをすれば、
「オブジェクトが交わした契約の履行」。
これを中心に考えるべきなのに、
データ隠蔽を中心に考えるのはよくない。
0531デフォルトの名無しさん
NGNG0532デフォルトの名無しさん
NGNG0533デフォルトの名無しさん
NGNGTemplate MethodとStrategyって目的が全然違うと思うけど。
Template Methodは基本的に振る舞いは同じだが、細かいところで異なる
クラスを作る場合に、基底クラスのメソッドに振る舞いの大枠を作っておき、
振る舞いの違う分をprotecedなメソッド呼び出しにしておいて、それを
派生クラスでオーバーライドすることで振る舞いを替えられるようにする
パターン。
Strategyは動的にアルゴリズムを変更できるようにするパターン。
Template Methodと組み合わせることも可能。
0534デフォルトの名無しさん
NGNGつまるところTemplateMethodはそのObjectのメソッド定義を変える必要があるので、
クラスのメソッドを実行時に差し替えたり
クラスすら放置してObjectのメソッドをいきなり差し替えたり
できる言語(例:ruby)でもなければ、静的な変化しか得られない。
一方Strategyはメソッド持ちObjectを差し替えれば済むことだから、
今目の前に有るObject(のクラス)すら変化させることが出来ない
困った言語(例:C++(藁))でもなければ、動的な変化がばんばんやれる。
勿論、クラスにハードコードしちゃうほうが便利
(いちいちObject増やすのもうざい)な場合も多いので、
両パターンの間に明白な優劣があるわけではない。
なにをどう作りたいか?によって使い分ければいい。
キーワードは「差し替え可能」だな。
というかデザパタの多くが、ある特定の部分を「差し替え可能」になっている
ってのが売りなわけだけど。
逆にいえばその外の部分が固定になってて不便する、というパターンも多いから、
どこが「差し替え可能」になってると嬉しいか?によって、使うパターンは選ぶべきもの。
0535age
NGNGhttp://www.kame-net.com/jplop/PatternRepository/PatternBody/SwitchingMethod/SwitchingMethod.doc
…通常、振る舞いの切替りには別のオブジェクトが利用される。
本イデオムでは、そうでなく、メソッドを利用する。…(抜粋)
どうよ?C++向けだけど
0536デフォルトの名無しさん
NGNG派とかdeterminisitic computing逝って良し派の意見を
期待するんだが、、、、
中はいっつもCとかそれ系側からの単なる煽り文なのはなんで?
0537536
NGNG0538待って
NGNGこれなに?
0539デフォルトの名無しさん
NGNGちなみにnondterminisiticはPrologとかだな。
スレ違いなのでsage。
0540デフォルトの名無しさん
NGNG0541538
NGNGProlog
http://www.kprolog.com/doc/ja/language.html
えぐい言語ですね.
0542デフォルトの名無しさん
NGNG0543デフォルトの名無しさん
NGNG0544デフォルトの名無しさん
NGNG0545デフォルトの名無しさん
NGNG0546738
NGNG0547デフォルトの名無しさん
NGNG0548デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/tech/1003815855/738
0549デフォルトの名無しさん
NGNG0550デフォルトの名無しさん
NGNG0551デフォルトの名無しさん
NGNGの言語をやろうと思ってます。
もう数年も「どの言語を覚えるべきか」について考えつづけてきたのですが、
私の目には Java が一番スマートで有望に思えます。今年から
情報処理技術者試験の科目にもなりましたしね。
なお Java が「サーバサイドばかり」という批判はまったく気になりません。
私が相手にすることになるのは基幹システムなど大きなシステムだからです。
別に GUI とかまで全部一つの言語でやらなくても気にはなりませんし・・・。
私の判断に何かコメントありますか?
0552デフォルトの名無しさん
NGNGどう見ても、Java厨のネタ&煽りなんだが。
こんな事書くと、「ネタじゃないです、真剣です。」
とか言われるんだろうか?
0553551
NGNGつもりでした。
>>どう見ても、Java厨のネタ&煽りなんだが。
そーですね、潜在的 Java厨ですから、少し煽りはいってます.
0554デフォルトの名無しさん
NGNG実際にどうやってコーディングすれば良いのか分からない・・・
0555デフォルトの名無しさん
NGNG> JavaとC++の*文法を勉強*して、*オブジェクト指向がなんとなく分かって*きたけど
つっこみ希望の方ですか?
0556デフォルトの名無しさん
NGNG何もおかしくないと思うが?
0557デフォルトの名無しさん
NGNG初めは、そんなもんさね
っていうか、文法について言えば、
おおまかな使い方さえ知ってれば、さほど詳細にこだわらなくて良い
君は、ちょうどサッカーのルールを知ったくらいのレベル
ルール自体には、DFを何人、MFを何人なんて書いてないしね
さらに、ゾーンプレスなんてルールだけから思いつけるものではない
一般的に、ルールより戦術理解の方が重要
(ただし、審判なんかをやる人には、ルールの方が重要)
0558デフォルトの名無しさん
NGNG0559デフォルトの名無しさん
NGNG0560Seisei_Yamaguchi
NGNGクラス = システムに組み込みなリエントラント機構 ( オマ毛で継承機能付き )
だな .
0561デフォルトの名無しさん
NGNGいきあたりばったりなコーディングでもすげープログラムを書いてしまうのが
ウィザードというもの。カコイイ。
# もう公開されてるのか LoadOfRings ...
0562デフォルトの名無しさん
NGNG0563デフォルトの名無しさん
NGNG会社を辞めても安心の資格としてオブジェクト指圧とかやれば
儲かるんかなア。
0564デフォルトの名無しさん
NGNG戦場やら幻想やらでアンチも懲りた頃のはずだし、こちらで真面目な話を
再開しませんか?
0565デフォルトの名無しさん
NGNG本が沢山出てて選り取り緑だけど、それ以外の
OOAやOOD、OOにマッチしたプロジェクト管理
なんかのよい本が少なくないですが。
いまRUPの本を読んでいるのですが、少し抽象的で
具体例と結びつける作業が必要です。もう少し、
Tip的なものや、チュートリアル形式のの本や
サイトがあれば教えていただけないでしょうか?
0566デフォルトの名無しさん
NGNG真面目な話だとヲタ同士がヲタ用語連発して終わるので盛りあがらないのです。
0568デフォルトの名無しさん
NGNG言った瞬間、アンチがよってきて荒らす罠。
0569デフォルトの名無しさん
NGNGもう5日も経つけど、そうはならなかったという罠。
0570デフォルトの名無しさん
NGNGやはり自分でプログラム書くのが、早道なのでは。
急がば回れ。
0571
NGNG0572デフォルトの名無しさん
NGNGUnified Processで検索すれば書籍はそれなりに出てくる。
俺的には翻訳されてる本だけで十分だと思う。実践的な
内容は日々のルーチンワークにこそあると思えるから。
>>570
なんでそこでプログラミングの話になるんだよ。アホか?
0573
NGNG15日前のレスに何反応してるのやら・・・。
0574
NGNG0576デフォルトの名無しさん
NGNGマンセーもアンチもまともな人はこんなところ見てないだろ
0577デフォルトの名無しさん
NGNG0578narucy56 ◆wMOjCT4s
NGNGあまり、必要性は無いといえば無いんだよね。
オブジェクト指向プログラミングってのは、デキる人がさらにデキるように
なるってよりは、デキない人も一緒にデキる人になりましょう、っていう、
プログラミング技法という感じ。
0579デフォルトの名無しさん
NGNGできるシリーズ読め
http://dekiru.impress.co.jp/books/index.htm
0580デフォルトの名無しさん
NGNGうそつきは消えろ
0581デフォルトの名無しさん
NGNG0582デフォルトの名無しさん
NGNGたとえば、test/file.txtというパスが与えられた場合、test/file.txtが存在していれば
それをオープン、なければカレントディレクトリのtest.zipからfile.txtを読み込む、など。
こんな場合、みなさんならどんな設計をしますか?
0583デフォルトの名無しさん
NGNG0584デフォルトの名無しさん
NGNG的を得るような人にはそう思へるのですね。(Kusakabe調)
0585デフォルトの名無しさん
NGNGオブジェクト指向やテンプレートライブラリは
出来ない奴にも仕事をさせる為の道具として使うのが一番効率的
どっちにしても出来る奴は数少ない上、著作権だの何だのすぐ主張しやがるからな
0586デフォルトの名無しさん
NGNG>的を得るような人にはそう思へるのですね。(Kusakabe調)
的を射る、の間違いですね。
0587デフォルトの名無しさん
NGNGでも「出来なさすぎるやつ」とか「そもそもやる気のないやつ」に
OOをやらせようとすると、かえってめちゃくちゃになるんだよね。
そういうやつらって卑屈だったりして、遠まわしに反発されたりもするし。
0588デフォルトの名無しさん
NGNG0589デフォルトの名無しさん
NGNGつうかごく一部でしか使えん。
よってC++最強。
0590デフォルトの名無しさん
NGNGCをそこそこかじった程度の人間でも理解できるような
若しくは皆さんお勧めの本を紹介してもらえないでしょうか?
0592デフォルトの名無しさん
NGNGみんな裸の王様だと思う。
0593デフォルトの名無しさん
NGNG仕立て屋といっしょに縛り首になったんだよ……
0594デフォルトの名無しさん
NGNG「あなたが理解出来ないもの」は、すべて「存在しないはずのもの」ですか?
0595デフォルトの名無しさん
NGNGいま君が500円玉で缶ジュースを買ったとしよう。
オブジェクト指向ではこう考えるんだ。
お金はただの「もの」ではなくて、
金額という性質と「ものを買う」機能
があるんだ。「買う」という指令を受
けると一定の金額だけ減らし、その減
った分が缶ジュースと交換されるんだ
ね。
気付いたかい?
このなかでどこにも君なんて登場しな
いんだ。オブジェクト指向の世界には
君なんかいないんだよ。
0596デフォルトの名無しさん
NGNGクラス → 変数型
オブジェクト → 変数
として
オブジェクトをがんがん使えばオブジェクト指向。
と言う理解ではだめ?
0597デフォルトの名無しさん
NGNGデータ -> 変数
として制御構造をがんがん使えば構造化プログラミング。
という理解でダメなのと同じようにダメ。
0598a
NGNG0599デフォルトの名無しさん
NGNG0600デフォルトの名無しさん
NGNG0601デフォルトの名無しさん
NGNG0602デフォルトの名無しさん
NGNG0603デフォルトの名無しさん
NGNG0604デフォルトの名無しさん
NGNG儲かるのは入門書書いてるヤツだけ
0605デフォルトの名無しさん
NGNG0606デフォルトの名無しさん
NGNG0607デフォルトの名無しさん
NGNG(←高)
オブジェクト指向>>>>>>>>>>>コンポーネント指向
0608デフォルトの名無しさん
NGNG0609590
NGNGどうもです。
0610デフォルトの名無しさん
NGNG0611デフォルトの名無しさん
NGNG0612デフォルトの名無しさん
NGNG0613デフォルトの名無しさん
NGNGその状態が2ヶ月でも3ヶ月でも続いていた訳だが…
0614デフォルトの名無しさん
NGNGそんなことより、オブジェクト恥垢とは何かを語りませんか?
0615逝って良しの1
NGNG0616逝って良しの1
NGNG0618デフォルトの名無しさん
NGNGいまどき「継承」かよ。(プ
0619デフォルトの名無しさん
NGNG0620デフォルトの名無しさん
NGNG内容の9割9分が重複してるシステム作って、
「大規模SIは難しい」とか言っているんだろうなぁ
0621デフォルトの名無しさん
NGNG面白い!(笑
Delphiでオブジェクト恥垢を1から学習しようと思い、基本から作ってみたのですが、
実行後に例外が出ました。
どこがおかしいのでしょうか?
unit frmClass;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
TNum = class
num1, num2, num3: Integer;
function numChange(add: Integer): TNum;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function TNum.numChange(add: Integer): TNum;
var
n2: TNum;
begin
n2 := TNum.Create;
n2.num1 := Self.num1 + add;
n2.num2 := Self.num2 + add;
n2.num3 := Self.num3 + add;
Result := n2;
n2.Free;
end;
0622デフォルトの名無しさん
NGNGvar
n1: TNum;
begin
n1 := TNum.Create;
n1.num1 := 1;
n1.num2 := 2;
n1.num3 := 3;
n1 := n1.numChange(3);
ShowMessage('3足すと、num1=' + IntToStr(n1.num1) + ',num2=' + IntToStr(n1.num2)
+ ',num3=' + IntToStr(n1.num3));
n1.Free;
end;
end.
//例外メッセージです。
---------------------------
デバッガ例外が発生
---------------------------
プロジェクト GUIClass.exe が EAccessViolation クラスの例外を生成しました。
'モジュール 'GUIClass.exe' のアドレス 004034D0 でアドレス FFFFFFFF に対する読み込み違反がおきました。'
プロセスは停止しています。再開するにはステップ実行または実行を選択してください。
---------------------------
OK ヘルプ(H)
---------------------------
0623デフォルトの名無しさん
NGNG618 には理解不能とおもわれ
0624デフォルトの名無しさん
NGNGResultに代入しても、オブジェクトそのものはひとつなので、
計算結果を捨ててしまっています。
0625デフォルトの名無しさん
NGNGレスありがとうございます。
n2のフィールドの値をn1のフィールドに代入した後だから、Freeでインスタンスを捨てても良いのでは?
>>621で実行後に例外が出ましたと書きましたが、ShowMessageは正常に実行されて、その後に例外が出るという事です。
それとほぼ同様な感じでnumChangeメソッドの戻り値をIntegerにしてみたら、例外は無く実行されるので、
それ以外の部分に誤りがあると推測していたのですが…。
もう少し詳しく教えて頂けたら幸いです。
0626デフォルトの名無しさん
NGNGまず、n1 := n1.numChange(3) で、元々のn1の参照先オブジェクトを見失ってメモリーリーク。
Result := n2 で、Resultとn2が同じオブジェクトを指しているのに、n2.Freeして、
その後同じオブジェクトをn1.Freeしているので2重解放。(恐らくここで例外)
n2.Freeで解放後の領域をアクセスして動いているのは、
直後なので同じメモリーが他の用途に使われておらず、内容が残っているためと思われます。
Delphiは歴史的に値型と参照型が混在していてしかもBoxingもGCも無いので
参照型(クラス、インターフェース)と他の型は区別して扱う必要があります。
0627デフォルトの名無しさん
NGNG>それとほぼ同様な感じでnumChangeメソッドの戻り値をIntegerにしてみたら、例外は無く実行されるので、
>それ以外の部分に誤りがあると推測していたのですが…。
戻り値をIntegerにした時にn2 := TNum.Create; 、n2.Free; を消してるので、この部分はおかしかったです。
何かを勘違いしてました、すみません。
>>626さん
ありがとうございます。
n2にn1が代入されるため、numChangeメソッド内でも n2.Free; = n1.Free; されてしまい、2重開放になるということは理解できました。
そこでもう一つ疑問なのですが、numChangeメソッドの n2 := TNum.Create; の一行を削除したら、再び例外が出ました。
破棄の時と同様に、これもインスタンスを2度生成しているような気がするのですが、こっちは必要の様ですね。
(オブジェクトはひとつなのに、2回生成するのはおかしいような…。)
その一行がどうして必要なのかが理解できないのですが、どうしてなのでしょうか?
こちらも教えて頂けたら嬉しいです。
0628デフォルトの名無しさん
NGNGx, y: TMatrix;
...
x := TMatrix.Create( ... );
y := x.Add( ... ); {*}
で、{*}の一行でxの内容が変わったら変でしょう?
使う側は
var
n1, n2: TNum;
begin
n1 := TNum.Create;
n1.num1 := 1;
n1.num2 := 2;
n1.num3 := 3;
n2 := n1.numChange(3);
ShowMessage(...); {n2を表示}
n1.Free;
n2.Free;
end;
で、どうです?
0629A
NGNGなんとなく、普通はこうしそうな気がする
procedure TNum.numChange(add: Integer);
begin
Self.num1 := Self.num1 + add;
Self.num2 := Self.num2 + add;
Self.num3 := Self.num3 + add;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
n1: TNum;
begin
n1 := TNum.Create;
n1.num1 := 1;
n1.num2 := 2;
n1.num3 := 3;
n1.numChange(3);
ShowMessage('3足すと、num1=' + IntToStr(n1.num1) + ',num2=' + IntToStr(n1.num2)
+ ',num3=' + IntToStr(n1.num3));
n1.Free;
end;
end.
0630デフォルトの名無しさん
NGNG例えば、イテレータを進める時、Ite.Next; とするか、Ite := Ite.Next; とするか…皆さんどちら派?
もしイテレータではなく行列オブジェクトだったら?
0631A
NGNG> そこでもう一つ疑問なのですが、numChangeメソッドの n2 := TNum.Create; の一行を削除したら、再び例外が出ました。
そのままのソースで、単純に、n2 := TNum.Create; を削除したら、
次の行の、
n2.num1 := Self.num1 + add;
で、存在しない(Createされていない)インスタンス n2 にアクセスしようとしているのだから、
例外が出て当然。
n2をどうしても使いたいなら、n2 := TNum.Create; n2.Free; を消して、
n2 := TNum.Create; の代わりに、n2 := Self; って入れるとか(笑
意味はほとんど、>>629 と同じになるけど。
0633A
NGNGイテレータは、Ite.Next のほうが、自然な気がする。
というか、Ite := Ite.Next; これだと、結局自分を書き換えてない?
代入させる場合だと、自分以外の変数に入れてやることができるけど
ただの代入だと結局、インスタンスは同じだから、別々に扱いたい場合は
自分の中でインスタンスのコピー作って返してやればいいのか・・・
ただ、それだと、コピーされたインスタンスの破棄には責任もてないし、
上みたいに、自分自身に代入してしまうと、元のインスタンスを見失って
メモリリーク起すから、扱いに気を使いそう・・・。
必要な時以外は、あまり使いたくない気がしてきた(笑
>>632 あ。気にしないでください。間に時間空いてるんで
0634デフォルトの名無しさん
NGNGinterfaceを使えば破棄は自動化できますし。
Delphiに限った話でも無くGCのある言語なら尚更問題は無いし。
Ite := Ite.Next; 方式ですと、同一のイテレータを複数箇所が参照していても
勝手に書き換えられる心配が無いので
C#のstringがimmutableなのと同じ理屈で共有できますね。
0635デフォルトの名無しさん
NGNGみなさんの書き込み見ると、まだ理解できてなかったっぽい…(汗
>>628さん
使う側の例でn2 := TNum.Create; してないのは、numChangeメソッド内で生成してるからですよね?
それに対して n2.Free; は使う側にありますが、このようなメソッドはpublicで他のユニットで使う時など、
メソッドのコードが見えないので、開放するのを忘れちゃいそうですよね?
これは(;;゜Д゜)マズー
>>629さん
それの方がシンプルだし、自然っぽいですよね。
今は戻り値がクラス型なメソッドの勉強中なので、不自然ですが勘弁してください。
>>631
>n2をどうしても使いたいなら、n2 := TNum.Create; n2.Free; を消して、
>n2 := TNum.Create; の代わりに、n2 := Self; って入れるとか(笑
この方法は結局オブジェクトを二つ作るのではなく、
newChangeメソッド内でn1をあたかもn2の様に扱うということですね。
その方法だと、使う側でFree; しなくて良いので大変助かります。(笑)
0636A
NGNG>>628 のコードで生成と解放を同じ場所に書くようにするとすると、こんな感じかなぁ?
こうなると、n1のメソッドである意味がほとんどないけど(笑
function TNum.numChange(n2: TNum; add: Integer): TNum;
begin
n2.num1 := Self.num1 + add;
n2.num2 := Self.num2 + add;
n2.num3 := Self.num3 + add;
Result := n2;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
n1, n2: TNum;
begin
n1 := TNum.Create;
n1.num1 := 1;
n1.num2 := 2;
n1.num3 := 3;
n2 := TNnu.Create;
n2 := n1.numChange(n2,3);
ShowMessage(...); {n2を表示}
n1.Free;
n2.Free;
end;
要は、戻り値でインスタンスを返す以上、そのインスタンスの解放はメソッド抜けるまで
やっちゃダメなので、Freeを置くとしたら、外に置くしかない。
で、CreateとFreeはセットに、ってことで、Createも外置いて、呼ぶときに渡してやる、と。
ちなみに上のコードだと、最後の代入はあってもなくても同じだったり(笑
あとは、考え方を変えると、同じく >>628 のコードで、コードはそのまま
function TNum.numChange(add: Integer): TNum;
↓
function TNum.Create_And_numAdd(add: Integer): TNum;
とかね(笑
新しいインスタンス作ってるよ!と判るようにしてやる(笑
0637デフォルトの名無しさん
NGNGありがとうございます。
>あとは、考え方を変えると、同じく >>628 のコードで、コードはそのまま
>function TNum.numChange(add: Integer): TNum;
↓
>function TNum.Create_And_numAdd(add: Integer): TNum;
>とかね(笑
>新しいインスタンス作ってるよ!と判るようにしてやる(笑
それもいいアイディアですね。
でもよく考えると、VCLのクラスでも、使用する際に生成・破棄しなくてはいけないので、
自作のクラスでもクラスないに生成・破棄コードを書くのは不自然なのかもしれませんね。
JBuilderも無料なのでJavaもやったことがあるのですが、
本を一冊読みましたが、インスタンスを破棄するという内容は出てきませんでした。
Javaではインスタンスの破棄はしなくてもいいんですかね?
0638デフォルトの名無しさん
NGNG> Javaではインスタンスの破棄はしなくてもいいんですかね?
ガーベジコレクションって聞いたことない?
0639デフォルトの名無しさん
NGNG初耳でした。
本には書いてなかったですね。
JBuilderのヘルプ見たら項目はありましたけど、中身が見れませんでした。(泣)
でも、ガーベジコレクションが本に出てなかったってことは、破棄しなくてもいいのかな?
Google検索してみます!
0640デフォルトの名無しさん
NGNGなるほど、Java VMが勝手に使用しなくなったメモリ領域を使える様にしてくれるっちゅーことですね。
これは便利だ…。
ありがとうございます!
0641デフォルトの名無しさん
NGNGクラスは何のために作るのですか?
作り方はわかってきたのですが、実際に何かソフトを作るケースにおいて、どういう時に作って良いのかわからないのです。
ユニットを作ることにより、プログラムの再利用が容易にできるというのは聞いたことがありますが、
1回しか使わない物をクラス可する利点というのはあるのでしょうか?
0642デフォルトの名無しさん
NGNG> クラスは何のために作るのですか?
そこにクラスがあるから。
> プログラムの再利用が容易にできるというのは聞いたことがありますが、
まやかしです。
> 1回しか使わない物をクラス可する利点というのはあるのでしょうか?
データ部は野ざらしにするより、アクセス関数とセットで管理した方が安全です。
0643デフォルトの名無しさん
NGNGガベコレのってなかったの?
その本捨てちまえ
>>641
> クラスは何のために作るのですか?
オブジェクト指向をやろうとする場合に、一番クラスが利用しやすいから
> プログラムの再利用が容易にできるというのは聞いたことがありますが、
んなこたあない。必ずしもそうはならない。
> 1回しか使わない物をクラス可する利点というのはあるのでしょうか?
642に同意
0644デフォルトの名無しさん
NGNGどうもありがとうございます。
>んなこたあない。必ずしもそうはならない。
一度作ったものをusesやimportに加えるだけで再利用できるのに、容易じゃなくなる場合もあるんですか?
>データ部は野ざらしにするより、アクセス関数とセットで管理した方が安全です。
野ざらし=クラスに属さないという事ですよね?
それが理由なら、TForm1にフィールド変数やメソッドを追加すれば良いのでは?と思うのですが。
>ガベコレのってなかったの?
>その本捨てちまえ
ガベコレは載ってなかったけど、他の説明はわかりやすくて、とても良い本だと感じましたが。
ちなみに「Java本格入門(技術評論社)」っていう本です。
0645A
NGNGTForm1自体が、TFormから継承して作られたクラスだが・・・
例え再利用しなくても、プログラムの規模が大きくなってくると、人間の管理能力を
越えるようになってくる。その際にオブジェクト指向的な作り方をしてあると、
比較的管理がしやすくなる。
0646デフォルトの名無しさん
NGNGよくわかりました。
ありがとうございます。m(_ _)m
0647デフォルトの名無しさん
NGNGイメージがわかないです。
0648いいけどね
NGNG0649デフォルトの名無しさん
NGNGコンポーネントはクラスに含まれています。
Delphiだったら、クラスの中でTComponentを継承しているクラスをコンポーネントと呼びます。
俺は>>646なんで全然くわしくないけど、これは多分合ってます。(笑)
0650デフォルトの名無しさん
NGNGいや、あってないです。
0651デフォルトの名無しさん
NGNGコンポーネントって意味広いような。
0652デフォルトの名無しさん
NGNG0653デフォルトの名無しさん
NGNG俺は>>646なんで全然くわしくないけど、これは多分合ってます。(笑)
0654デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/tech/1023986216/
0655デフォルトの名無しさん
NGNGオーバーライドってのは言うなれば、上書きってことでいいの?
0657デフォルトの名無しさん
NGNG0658デフォルトの名無しさん
NGNG0659デフォルトの名無しさん
NGNG0660デフォルトの名無しさん
NGNG0661デフォルトの名無しさん
NGNG「公式設定」が存在しないので、だいたいの役割から
具体的なキャラクタを作り出している。
■ このスレッドは過去ログ倉庫に格納されています