オブジェクト指向は戦場では必要なし9
■ このスレッドは過去ログ倉庫に格納されています
0001プロの逝って良しの1
NGNGクラスを理解する労力が大きく、目的まで達成するのに時間がかか
る。他人のソースを見るにも複雑でときほぐしにくい。ちゃんと
整備されたドキュメントがなければ粗大ゴミソース。またオブジェ
クト指向が○○に優れているとかいう話も、あくまでちゃんと設計
され、ちゃんと実装されたクラスがあるという前提での話。実際は
世の中にはそれほど有能なSEやPGなどいません。
よってオブジェクト指向は戦場では使いものになりません。
(byあいたたたた)
パート1 http://pc.2ch.net/test/read.cgi/tech/1011997945/
パート2 http://pc.2ch.net/test/read.cgi/tech/1013266554/
パート3 http://pc.2ch.net/test/read.cgi/tech/1013875413/
パート4 http://pc3.2ch.net/test/read.cgi/tech/1021468476/
パート5 http://pc3.2ch.net/test/read.cgi/tech/1027983898/
パート6 http://pc3.2ch.net/test/read.cgi/tech/1029297075/
パート7 http://pc3.2ch.net/test/read.cgi/tech/1030029357/
パート8 http://pc3.2ch.net/test/read.cgi/tech/1031028125/
宣伝に笑う者は宣伝に泣く
日経バイト 2002年10月号特集1
Javaの知られざる欠陥
http://itpro.nikkeibp.co.jp/NBY/toc/
(タイトルのみ)
0153デフォルトの名無しさん
NGNG>それからスペルはOthelloかReversiだってば。
そうか。
指摘、ありがと。
>Display()はゲームシステムが持つべきメソッドだよ。
効率悪い理由がよくわからないんだけど、
もしよければ具体的に教えてください。
0154デフォルトの名無しさん
NGNGまずBoardやPlayerなどのデータ構造・ロジッククラスは
描画機能を別オブジェクトに委譲すべき(描画コードが一箇所に集まるので実装が楽)。
それから状態を描画するタイミングはシステム・審判クラスが決めることが多いので
Board, Move, Playerオブジェクトは何も考える必要がない。
(思考中の情報を表示するなら各オブジェクトが描画のトリガをひくようになるんだけど)
昔書いたCUI/GUI両対応のコードは大体こんな感じだった。
思考中のアニメーションとかのない地味なアプリだけど。
Application.Run(){
for(;;){
Move move();
Show();
players[turn].GetMove(move);
board.MakeMove(move);
if(board.Finish()) break;
turn.SetNext();
}
}
0155デフォルトの名無しさん
NGNGだからDisplayクラスを継承だって・・・・
JavaでいうならJPanel#paintComponent()だね。
Boardに実装すれば、駒の配置が変わると
repaint()が呼ばれるので、外側からshow()を呼ぶ必要がない。
逆に画面表示しない物を作る時、
Application2を作らなきゃならないね。
0156デフォルトの名無しさん
NGNG0157デフォルトの名無しさん
NGNGJava知らないんだけどDisplayって描画を直接担当するクラスでしょ?
それを継承してロジッククラス作るって変な気がするんだけど。
たとえばGUI, CUI, Debug(ファイルへ出力)の三種類作る場合、
どういうクラス構成になるの?
こっちのはApplication.Show()をoverrideするだけ
(ApplicationをObserbable, Screenに読み替えてもいいけど)。
それからウィンドウの再描画が必要なとき
(最小化から復帰したときやファイルからロードしたとき)、
すべてのオブジェクトのrepaint()を呼ばないといけないんだから
結局Application.Show()などから描画するのは避けられないよ。
0158デフォルトの名無しさん
NGNGプロ言語派は全員別板に遠征しているようです (フ
0159プロの逝って良しの1
NGNG動くかどうかわからんが
http://megami.s1.x-beat.com/upload/upload.cgi
[megami0131.lzh] Othelloソース(Javaファイル) 5 2002年09/30(月)05:17
0160デフォルトの名無しさん
NGNG1.Viewの表示方法(SwingをつかうかSWTをつかうか、単純な四角形にするかクォータービューにするか、
置石の形や表示変更のアニメーションの種類など)
2.Modelの持ち方(単一JVM上で動くものか、ネットワーク通信によって複数のJVM上で同期されるものなのか)
3.コンピュータープレイヤーのロジック(初級、中級、上級とかあるよね?)
・・・
いくらでもあるな(藁
0161デフォルトの名無しさん
NGNGちなみに678行目(WindowAdapter#windowActivateを呼び出したところ)。
0162デフォルトの名無しさん
NGNG0163デフォルトの名無しさん
NGNG2.は3.のネットワークプレイヤーで吸収できますよ。
0164デフォルトの名無しさん
NGNG戻ってきてるよ(萎
0165デフォルトの名無しさん
NGNG>それを継承してロジッククラス作るって変な気がするんだけど。
盤面のデータ(配列)を常に表示してるだけ。
>たとえばGUI, CUI, Debug(ファイルへ出力)の三種類作る場合、
GUIは先に書いたとおり。
CUIは盤面クラスのアクセサメソッドが呼ばれた瞬間出力
ファイルへの出力は、インターフェースInputStreamがあるので
CUIと何もかわらない。
デバッグ出力は別の問題。
ただし、これは第三者から見た視点。
プレイヤーから見た視点を再現するには
プレイヤーに渡される盤面情報を元に再現するのが
一般的だと思うよ。
>それからウィンドウの再描画が必要なとき
GUIのライブラリーは何使ってるの?
ずいぶん原始的な物を使ってるみたいだねw
0166デフォルトの名無しさん
NGNGすごい発想だな(藁
0167デフォルトの名無しさん
NGNGclass Osero extends JPanel{
private Board board=new Board(8,8);
public paintComponent(Graphics g){
boardに基づいた処理;
}
private void Board変更(){
....
repaint();
}
}
0168デフォルトの名無しさん
NGNGclass Board extends JPanel{
private int[][] array;
public set(int x,int y,int value){
array[x][y]=value;
repaint();
}
0169デフォルトの名無しさん
NGNGオーバーライドを知らないとは(w
こいつがOO派だったら、
それはそれでまた面白いな。
もしかしてこのスレには、
真性無知アンチOO
勘違いOO
努力の足りないアンチOO
天才OO使い
の4カテゴリーの人間がいたりして。
0170デフォルトの名無しさん
NGNGModel と View 分けなよ。(Java に特化したことを言うと、Swing 使うまでもないんでない? AWT でいいよ)
0171デフォルトの名無しさん
NGNG0172デフォルトの名無しさん
NGNG0173デフォルトの名無しさん
NGNGおい。秘密をばらしたら、
機密漏洩罪で処罰するぞ。
0174デフォルトの名無しさん
NGNG0175デフォルトの名無しさん
NGNGけどなー、こういう経過を経てオブジェクト指向っていうのは学ぶもんだと思うよ。
知ったかしてりゃ何れは本質を知ることができる。(OOを嫌う奴は多分、永久にまともなプログラム組めない)
0176プロの逝って良しの1
NGNG0177デフォルトの名無しさん
NGNGじゃあお前から上げてみろよ。ヴォケが!
0178プロの逝って良しの1
NGNG完全情報有限ゲームでは先手必勝か後手必勝かどっちか。
0179プロの逝って良しの1
NGNG>>159
http://megami.s1.x-beat.com/upload/upload.cgi
[megami0131.lzh] Othelloソース(Javaファイル) 5 2002年09/30(月)05:17
0180デフォルトの名無しさん
NGNG☆ チン マチクタビレター
☆ チン 〃 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ヽ ___\(\・∀・)< OO版のソースまだー?
\_/⊂ ⊂_)_ \____________
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
l ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| .|
| み か ん |/
0181デフォルトの名無しさん
NGNG引き分けがあるだろ。
0182デフォルトの名無しさん
NGNG簡単過ぎて作る気になれない。
0183デフォルトの名無しさん
NGNG(天才に OO は無用という証明だな)
0184デフォルトの名無しさん
NGNG0185デフォルトの名無しさん
NGNG0186デフォルトの名無しさん
NGNG0187デフォルトの名無しさん
NGNGOOどころかモジュール化さえしてないのな。
0188デフォルトの名無しさん
NGNG読みやすいし良いソースだと思う。でも手続き型のソースって OO のより作り手の
スキルに左右されるから大人数でやるとピンキリになっちまうんだよなぁ、などと
久しぶりに手続きソース見て嫌なこと思い出してみるテスト。
ところで、その時間までオセロ作ってて仕事はどうしたの?
0189デフォルトの名無しさん
NGNGするためにはOOにした方がやりやすいね。
0190デフォルトの名無しさん
NGNGどっちでもいいんじゃない?
ところでATWよりSWINGを使った方がいい時ってどういうとき?
0191デフォルトの名無しさん
NGNGputPiece っていう関数の名前の付け方からもこなれている感じはする。
476 行目の reverseSub は、軽くポリモーフィズム的と思った。
(同じメソッドでも動作は違う。引数に方向を渡しているんだが。)
0192デフォルトの名無しさん
NGNG表とか、ツリーとか、そういう高度なコンポーネント使いたいとき
じゃないかしら。
0193デフォルトの名無しさん
NGNG0194デフォルトの名無しさん
NGNG聞くだけ野暮ってもんでしょう
0195デフォルトの名無しさん
NGNGたしかにいいソースだと思う、手続き型としては。
でも、全体像を把握しにくい事は確かだし、
新しいコンピューターのアルゴリズムを
今あるのとは別な形で追加する方法が
それなりに難しかったりすると思う。
ここでOOのソースが欲しいところだけどね。
OOはコードの量は多くなってしまうけど、
非OOのコードに比べたら読みやすいし、改良しやすいと思うよ。
ところで、アンドゥ機能はついてますか?
0196デフォルトの名無しさん
NGNG159じゃないけどコンピュータの思考アルゴリズムを追加するのは
すごく簡単だと思うよ。computer関数を書き換えて呼び出してるところを
変えるだけじゃん。
ゲーム中に動的に変えたくなったら初めてポリモの出番じゃないの?
あのコードならそのときに失うものなにもない。YAGNIだね
アンドゥ機能もしかり。ターンごとにmaster_board変数をVectorにでも突っ込んでおけば
それだけでアンドゥになるんじゃない?
0197デフォルトの名無しさん
NGNG大規模かつ複雑になると
「関数を書き換えて呼び出してるところを
変えるだけ」
がえらい手間になって
0198デフォルトの名無しさん
NGNGYou’re NOT gonna need it!
いずれ必要には「ならない」!
それは本当に必要にならない・・・のか?
いるものを作らないのはYAGNIじゃないよな。
0199デフォルトの名無しさん
NGNGユーザーはコードを書き換えて選択するのでしょうか?w
0200デフォルトの名無しさん
NGNGおまえ…
0201デフォルトの名無しさん
NGNG0202デフォルトの名無しさん
NGNGえーと、そこ笑うところでしたか?
0203デフォルトの名無しさん
NGNG0204デフォルトの名無しさん
NGNGいいね、荒野の中に咲く一輪の花のようなギャグってw
0205デフォルトの名無しさん
NGNG> もしかしてこのスレには、
> 真性無知アンチOO
> 勘違いOO
> 努力の足りないアンチOO
> 天才OO使い
> の4カテゴリーの人間がいたりして。
いいえ「天才OO使い」はいません
その証拠に、能書きばかりたれているだけで、
全然OO版オセロのソースが出てきません。
0206デフォルトの名無しさん
NGNG☆ チン マチクタビレター
☆ チン 〃 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ヽ ___\(\・∀・)< OO版のソースまだー?
\_/⊂ ⊂_)_ \____________
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
l ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| .|
| み か ん |/
0207デフォルトの名無しさん
NGNGOOではオセロ書けない
0208デフォルトの名無しさん
NGNG対価を払う気あるのか?
0209デフォルトの名無しさん
NGNG今作ってんだけどw
斜め見下ろしって部分はもう完成してるからあとはゲーム固有部分の作成のみ
大学受験終わったら完成させるよ。
0210デフォルトの名無しさん
NGNGある程度決めて作ったほうがおもしろいんじゃない?
教科書どおりなら仕様が膨らむほどOOが有利になるはず
0211デフォルトの名無しさん
NGNGOO派、非OO派両方とも自分都合の良い仕様にするから。
このスレは戦場での話だから実際の戦場さながらの現実的な仕様求む。
0212デフォルトの名無しさん
NGNG>それだけでアンドゥになるんじゃない?
アフォ?
あのコードにアンドゥ機能つけてみろよ。
アンドゥ機能をつけるという事は
インターフェースが一つ増えるという事だぞ。
ココで言うアンドゥって
一手進める、一手戻るだよな?
さらに相手がコンピューターなら2手戻るわけか?
あのコードに付け加えるのは無理だな。
0213デフォルトの名無しさん
NGNG> 戦場での話だから実際の戦場さながらの現実的な仕様求む。
取りあえず>>159のソースが仕様でいいんじゃないか?
それで何か不満があるのか?
適当な仕様を作って、五月雨のような仕様変更こそが戦場だ
OOは仕様変更に強いんだろ?
それを口だけでなくソースコードでみせてみろ。
0214デフォルトの名無しさん
NGNG0215デフォルトの名無しさん
NGNGそれから、OO、非OOのコードに対して仕様変更をしてみるってのはどう?
つまり>>159のコードは完成じゃなくスタート地点ということね。
0216デフォルトの名無しさん
NGNG> なんでこのスレの連中はケンカ腰なんだ?
戦場だから。煽るか罵られるかの殺伐とした雰囲気こそが戦場に相応しい
>>215
×:俺は作らないけど。
○:俺は作れないけど。
ま、どっちにしても口だけの能なし野郎であることは変わらないけどな。
0217デフォルトの名無しさん
NGNG暇つぶしに 159のコードをリファクタリングしてる。
出来たらウプするかも。
0218デフォルトの名無しさん
NGNGフルスクラッチで書いたらいいよ。
0219デフォルトの名無しさん
NGNG賛成。非OOのはできてるのでOO厨のみなさん
スタート地点に立てるように頑張ってくださ〜い。
0220デフォルトの名無しさん
NGNG低水準な考えだ。
開発プロセスをどう効率よくやるかが問題であるわけだから、
XPをちゃんと勉強しよう。
まぁWindowsXPをまだ入れてないやつは
体感してないわけだが、
XPは素晴らしい。
開発プロセスの効率を高めることができるし、
モチベーションも高められる。
OOとか非OOとかヤイヤイ逝ってるようじゃ、
まだまだだな。
0221デフォルトの名無しさん
NGNG0222デフォルトの名無しさん
NGNGXPを知らん馬鹿は参加しなくていいのですよ。
0223デフォルトの名無しさん
NGNG0224デフォルトの名無しさん
NGNGまあ、スレ立てたぐらいだからよっぽどこのスレに熱心なんだね
0225デフォルトの名無しさん
NGNGしかし、有能とされるヤシが、実際JAVAのプロジェクトで、
ああ言うコード出してくるから困る。正直、設計はやらせたくない。
0226デフォルトの名無しさん
NGNG>>>159 は、確かに手続き言語的にはよいソースだと思う。
いや、そんなことはない。
グローバル変数が複雑に絡まり合い不協和音を奏でているよ。
0227デフォルトの名無しさん
NGNGOO版は10月2日いっぱいで出来なかったら駄目って事でいい?
既に>>159から丸1日以上経ってるし・・。
もし間に合わなかったら、オセロさえ納期内に作れない=OO役立たず
ということでいいよね。>ALL
参考になるソースだってあるんだから、
1から作るのとは全く難度が違うけどね。
0228デフォルトの名無しさん
NGNG土日はさまんと無理じゃない? みんな仕事してんだし。
0229デフォルトの名無しさん
NGNGそんなヒマなことやれる奴いるのか?
0230デフォルトの名無しさん
NGNG( ´,_ゝ`)プッ
0231デフォルトの名無しさん
NGNG0232デフォルトの名無しさん
NGNG無職のOO厨房ぐらいいるだろ(w
0233デフォルトの名無しさん
NGNG0234デフォルトの名無しさん
NGNG0235デフォルトの名無しさん
NGNGじゃあ お前も明後日までにオセロを書いて来い
期限内に作れない=227役立たず
ということでいいよね。>ALL
0236デフォルトの名無しさん
NGNG0237デフォルトの名無しさん
NGNG0238逝って良しの1
NGNG0239デフォルトの名無しさん
NGNG正直14日は長すぎ。ネタが枯れる。
せいぜい今週中じゃないの?
0240デフォルトの名無しさん
NGNGそれから考えようや。既に作り始めてるヤシもいるかもしれんし。
その後新しい課題を考えて、それを両者一週間とか期限設けて
競うとかの方がフェアだよ。
0241逝って良しの1
NGNGOO版のソース見たいし。
0242デフォルトの名無しさん
NGNG0243デフォルトの名無しさん
NGNG一手進める、一手戻す
というのが実装できたら、
俺のOOバージョンウプします。
OOである自信ないけど。
0244HN ◆wMOjCT4s
NGNG一昨日あたりから OO Othello 作り始めてるんだけど
俺が欲しい機能が
* コマを置いた時のアニメーション
* コマをひっくり返すアニメーション
これはやりたい。
XP 的には、顧客がこの板の住人だとするならば、まずはとりあえずゲームできるもの
を作れってことになるんだろうが、仕事じゃあるまいし。OO 的に、すぐゲームになる
バージョンのものも作ろうとしてもやる気せん。
顧客は「俺」ゆえに、ちょっと複雑になるけど、好きに作りたいね。
0245デフォルトの名無しさん
NGNGXP的には、●→@→=→O→○でいいよ。
アニメーションしたきゃ、拾ってきたリソースでも使ってくれ。
まずプロトタイプ提出ありきだ。
0246デフォルトの名無しさん
NGNGプロトタイプでもCUIじゃやらねーよw
0247デフォルトの名無しさん
NGNGリソースもそうだが、プログラミングも違うのよ。
A) コマを置いてひっくり返す -> モデルを参照し画面を更新
B) コマを置く -> 各種アニメ担当オブジェクトに通知 -> アニメ終了をゲームモデルに通知 -> ひっくり返す -> 各種アニメ担当オブジェクトに通知 -> アニメ終了をゲームモデルに通知
B だと、ちょいメンドイ(けど、既にあるものよりはマシなものを作りたいんだな)
0248
NGNGアニメーションは次のイテレーションで実装すべし。
0249デフォルトの名無しさん
NGNG良スレになるから貼ってあげない!
0250デフォルトの名無しさん
NGNG0251デフォルトの名無しさん
NGNG自信がないのか?プ
0252デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています