トップページgamedev
935コメント361KB

OOとゲームプログラミング

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。01/11/07 23:55ID:HnYWCQK1
OOをどのように用いれば美しくゲームプログラミングを
行うことが出来るのか語り合うスレです。
0269名無しさん@お腹いっぱい。01/11/16 18:20ID:???
>>268
VC++使ってると全然気にならないんだけどな。
0270名無しさん@お腹いっぱい。01/11/16 23:37ID:???
Delphi使ってると再コンパイルの手間すら気にならんけどな。
0271名無しさん@お腹いっぱい。01/11/17 00:32ID:9iW0SS+5
仕様がしっかりしている場合に限るけれど、
こーゆー書き方なら、たまぁにする。
class CMain;
class CSub
{
public:
CSub(){}
virtual ~CSub(){}
virtual void FunkA(CMain*pMain) = 0;
virtual void FunkB(CMain*pMain) = 0;
};
class CSubNull : public CSub
{
public:
void FunkA(CMain*){}
void FunkB(CMain*){}
};
class CMain
{
CSub*m_pSub;
static CSubNull m_SubNull;
public:
CMain(){ m_pSub = &m_SubNull; }
virtual ~CMain(){}
void FunkA(){ m_pSub -> FunkA(this); }
void FunkB(){ m_pSub -> FunkB(this); }
void SetSub(CSub*pSub)
{
if(pSub == NULL)pSub = &m_SubNull;
m_pSub = pSub;
}
CSub*GetSub(){ return m_pSub; }
};
0272名無しさん@お腹いっぱい。01/11/17 00:51ID:???
それは立派なStateパターンでんな。
0273名無しさん@お腹いっぱい。01/11/17 13:55ID:???
C使いでC++がダメ!って言う人は、実装継承とか深い継承とかを試してみてダメって言ってる気がする。
デザインパターン勉強すれば便利に使えるんだけど、使えるかどうか試してみるだけの人にデザパタ勉強しろとは言えないからなぁ。
0274名無しさん@お腹いっぱい。01/11/17 18:20ID:???
OOの真髄はデザインパターンによるコーディングのパターン、及びテンプレート化だからなぁ・・・
ボトルネックとか、無駄な継承等を最適化していったら、どっかで既に使われていたパターンの
亜流だったなんての事は、実際かなりあったよ・・・
0275名無しさん@お腹いっぱい。01/11/17 19:25ID:???
>>273
意味不明
0276名無しさん@お腹いっぱい。01/11/18 02:39ID:???
>>275
デザパタの学習をやり出せば解る。
デザパタはOOを十分理解してる事が前提で話を進めてるので。
0277ラム01/11/18 09:59ID:m/JYi1e1
ageるっちゃ。
0278名無しさん@お腹いっぱい。01/11/18 10:48ID:???
>>276
違う、そういう意味じゃない。デザインパターンまで実務に使ってる。
キミの言ってることのつながりが全然わからないと言っている。
0279名無しさん@お腹いっぱい。01/11/18 20:54ID:???
ゲ技版にもデザパタ馬鹿が出るのか・・・・。
0280名無しさん@お腹いっぱい。01/11/18 21:18ID:???
別になあ、今更デザパタでもなかろうに。
つかっててあたりまえだといいたいんだろう? >>279
0281名無しさん@お腹いっぱい。01/11/18 22:29ID:???
Design Pattern for Computer Games
http://www.totempole.net/patterns/gamepatterns.html
こんな試みもあるがね。
0282名無しさん@お腹いっぱい。01/11/19 22:42ID:???
とてもヨワヨワな質問でスマソ。
カードゲームを作ろうとしたときカード1枚1枚をクラスとして扱う?
カードの枚数だけクラスが出来るんかな…
0283名無しさん@お腹いっぱい。01/11/19 23:38ID:???
>>282
MT:G 系のカードごとにルールがあるカードゲーム?
カードクラスとルールクラスで構成するか、それぞれをクラスにするかだね。
Prototype や Flyweight パターンを参照してみて。
↓だけじゃ分からないと思うけど、参考までに。
http://www.ff.iij4u.or.jp/~ahirusan/Java/patterns/prototype.html
http://www.ff.iij4u.or.jp/~ahirusan/Java/patterns/flyweight.html
0284名無しさん@お腹いっぱい。01/11/20 00:08ID:???
さっそくのお答えありがとです。
Flyweight パターンが近そうなので
もうちょっと勉強してみます。
0285名無しさん@お腹いっぱい。01/11/20 20:34ID:???
太閤立志伝Iは、オールアセンブラと思われる古いゲームだが
オブジェクト志向してたんじゃないだろうか。
基底クラス武将を継承するプレイヤー武将クラス、大名武将クラス、一般武将クラス。
それらのオブジェクトが家臣団ツリー構造で管理され、
マルチスレッド処理で並列で動いてる。
当時これをつくったひとは本当に天才だとおもう。
ずっと後に出た、これと似たシステムのガンパレードマーチはさんざん自慢しまくってたが。
0286名無しさん@お腹いっぱい。01/11/20 21:25ID:???
大抵のゲームプログラマーはとっくの昔に自分でOOPやデザパタ発見してるよ。
本に出てるのは他人に教えても良いゴミテクと知れや。
0287名無しさん@お腹いっぱい。01/11/20 23:36ID:2YNiudBT
>>99

例えば、ゲームボーイとか、タイトなパフォーマンスが要求されるとことか、
まぁあったでしょうけど、やっぱ今後は開発効率の向上が必須項目。

例えば、全部組み込みJavaでゲームが書かれるようなことにも数年後にはなり
かねないしさ。

>101
モジュールやデータ構想の勉強っって何ですか?
0288名無しさん@お腹いっぱい。01/11/20 23:43ID:???
タイトなパフォーマンスが要求されないゲームってPCぐらいしかないんじゃ?
アマですか>287
0289名無しさん@お腹いっぱい。01/11/21 07:35ID:???
>>286
こういうやつよくいるわ。
0290名無しさん@お腹いっぱい。01/11/21 11:44ID:kTxoHJqc
ま、とりあえず>>286がデザインパターンの存在意義を
理解してないのは分かるわねー。
0291名無しさん@お腹いっぱい。01/11/21 12:33ID:???
個人的にはパフォーマンスよりも
開発効率のほうが今後のネックだと思うが。
納期に追われたこと無いの?>288
0292名無しさん@お腹いっぱい。01/11/21 17:02ID:???
+→描画デバイス
+→シーン+→キャラクタ→モーション
     +→キャラクタ→モーション
なんて風にオブジェクトを階層構造にしてるとき
キャラクタの描画メッセージは、どいつがどのように送りますか?
それとも、こんな構造にはしませんか。
0293名無しさん@お腹いっぱい。01/11/21 20:28ID:7vVUdWJ9
>>286
確かにデザパタ厨房は、
今は物理シミュレーションの時代だとか言ってるゲーハー厨並に痛いけど
(そんなのファミコン時代からやってるって…)

デザインパターン自体には、
昔からの手法に共通の名前を与えるという意義はあると思う。
0294名無しさん@お腹いっぱい。01/11/21 20:52ID:BPHGewxM
>>271-272みたいな感じでんな。
プログラマ間の意思疎通がシャア並みに速くなる。
029528601/11/21 23:12ID:ukm0fF12
>>293
逆に名前がついてないと頑なに認めないのが一杯居て困る事多し。
1)マルチスレッド的プログラム構造の実際。
2)外部からの通信でどのような状態にも自由に遷移できる構造
3)どのような状態でもメッセージを受け取れる構造
4)正規の処理以外のエラー処理への随時対応可能構造
といった事を教えても「スタイルの違い」と理解せず変更せず、
挙句の果てに人のバグだと言い始める逐次プログラマーの多いこと
多いこと。
0296名無しさん@お腹いっぱい。01/11/21 23:16ID:zJxGH1jK
それは、貴殿が新しいパターンを作って文書化すればいいのでわ。
GoFとかに載ってるのだけがすべてじゃないよ。
0297HN01/11/21 23:22ID:qbFQMeve
> http://www1.linkclub.or.jp/~zhidao/zlab/
> オブジェクト指向を用いてぷよぷよを作る記事がある。

ウェブページだけ見ていて、ソースはそんなに真剣には見てはいなんだけど・・・。

これはこれで、イイっていえばイイのかもしれないんですけども。
オブジェクト指向の例題とするには納得しかねるなぁ〜。

1)
連鎖発生時の「ファイヤ〜」「ばよえ〜ん」とか、ここはキャラクター
が変わることによってメッセージが変わるわけだから、ここでこそ、
Character クラスでも作るのがイイのでは。

2)
Puyo クラスの中に座標を持っているんですけど、これは
明らかに無意味なような気が。

まぁもし、ぷよ一つ一つが、特別な性質を持っていて(例えば、
赤ぷよだけ5つ繋がらないと消えないとか、黄色ぷよを消すと
回りのぷよも変色するとか)そういうことなら、Puyo クラス
でも作って、自分が存在する座標とゲームフィールドの参照を
持って設計するのが、正しいと思うんですけど・・・、うーん、
ぷよぷよっていうゲームの場合、ルールは完全にゲームフィー
ルド毎に決められてるんだから、べつにint型の二次元配列
でやっても、一向にかまわないと思いますよ。

後は、MVC の分離をきっちりやるといいのかなぁ〜。でもこれも
単純なゲームにおいてはほとんど無意味だからやらなくていいか。

まぁ、ぷよぷよというゲームの本質とOOPはあまり関係ないやね。
0298HN01/11/21 23:27ID:qbFQMeve
Model(ゲームデザインの部分)のコト書いたんですけども、

View(表示する部分)の話でしたら、Puyo クラス書く意味は
大いにありますよね。消すときのエフェクトは、ぷよの色ごと
に違ったりしますから、その Puyo クラスごとに絵画方法を
定義すればラクチン。
0299HN01/11/21 23:28ID:qbFQMeve
ごめん、↑の2つ、ミス
0300マルチポストは止めよう01/11/21 23:36ID:???
どうでもいいけど語尾の『なぁ〜。』って口癖?
0301名前は開発中のものです。01/11/25 17:49ID:LE15OAAJ
age
0302きえさっぱ01/11/26 01:21ID:???
んー、ぷよぷよをOO学習のサンプル題材として議論しているのは
分かるんだけど、ベーシックでもできるものなので、題材として
適切かどうかはちょっと疑問だと思うー

「再帰呼び出し学習材料」としてなら、ぷよぷよは好材料だと思うけど。
0303_01/12/01 02:43ID:psjJyxPy
age
結局、タスクマネージャC++版は、デキなんですかね?
0304名前は開発中のものです。01/12/02 13:44ID:???
>デキなんですかね?

どう言う意味ですか?
0305名前は開発中のものです。01/12/12 13:09ID:T2PuoAFH
salvAGE
0306名前は開発中のものです。01/12/17 16:26ID:???
OOやるならレミングスとかが良いんじゃないかなー。
正直ぷよぷよはOO向きではないよね。
0307名前は開発中のものです。01/12/31 23:56ID:6Qd2dWNa
下がってる…。

やっぱり RPG 系こそOOの真価が発揮されると思うんだけど。
0308名前は開発中のものです。02/01/01 12:43ID:YwsXNczB
というか日常的に考えてシナリオとかプロジェクトというものをOO的に変換して
うまくいかないんだから
プログラムを全部OOでやろうってのがどだい間違いでは?
0309名前は開発中のものです。02/01/01 14:59ID:7Da5Jozt
>>308
じゃあ何ならうまくできるの?
構造化言語?アセンブラ?

速度的な問題点っていうのは別として、
組み方としてうまくいかないって言う人は絶対 OO 解っていない人だよ。
0310名前は開発中のものです。02/01/01 15:56ID:???
全部OOでやろうってのは非効率的(になることが多い)。
0311名前は開発中のものです。02/01/01 16:03ID:???
デザイナが書くためのスクリプトがオブジェクト指向だった日には
そりゃもう大変。
0312名前は開発中のものです。02/01/01 16:47ID:???
>>309
もうアフォかヴァカかと。
0313名前は開発中のものです。02/01/01 17:03ID:???
とにかく、ゲームプログラミングには適してない。
0314名前は開発中のものです。02/01/01 18:36ID:???
で、OO否定派で、ゲーム以外の物はOOで作ってるって人はいないの?
そういう人のゲームにOOは(どういう理由で)向いてないっていう意見キボーン。

そうじゃないやつはOO理解できてないだけでしょ?
つまり銀行でCOBOL書いてるやつらと一緒。
やつらでさえ最近はJavaにお熱みたいだから、あと数年でCOBOLer以下になるね、君ら。
0315名前は開発中のものです。02/01/01 18:43ID:J6apUrhi
>>314
C言語はそこまでダメじゃないと思うよ。
単純に乗り換えるコストが見合わないってだけだろうね。
その人にとって。ボクにとって。(ぉ

そのうちやるさw
031631402/01/01 19:02ID:???
>>315
(私以外の)OO派もきっとCとかアセンブラが駄目とは思っていないと思う。実際今までCでたくさんの名作が作られてきているから。

でも、そこには血もにじむような努力があったわけでしょう?
それこそ場合によっては発狂する人が出るくらいの。

そういうの、終わりにしませんか?っていう事です。
OOが解決策になりませんか?って言いたいんです。

みんなが幸せになる技術だと思うから、気づいて欲しい。
一番幸せになるのはプログラマーなのに、そのプログラマーに
「OO使えねぇ」とか、本当に使っても無いのに言われるのは悲しいんです。

でも、たしかに色々な意味で初期コストは高くつきますね…。
0317名前は開発中のものです。02/01/01 19:06ID:???
OO使いたい奴は使えばいいし、使いたくない奴は使わなければ良いじゃん
031831202/01/01 19:11ID:???
OOはプログラム構造の一部しか記述できないんだよ。
>絶対 OO 解っていない人だよ。
なんて書いてる君こそ判っていない。
031931502/01/01 19:13ID:J6apUrhi
C言語にかけたコストは伊達じゃないので、そんなにC++にすぐに
移行したいとは思わない。必要な規模の仕事もあんまりないし・・・。
ウチでは使ってるヤツと使ってないやつが混在してるよ。
0320名前は開発中のものです。02/01/01 19:17ID:???
根本的に設計が間違っている場合、OOで記述できない構造もあるわな (藁
0321 02/01/01 19:55ID:???
プログラム板追い出されたからってこんなとこで吼えるなや。
032231602/01/01 21:09ID:EjFgGjPu
>>318
煽り…ですか?マジで言ってるの?
OO向きじゃない部分があるのは認めるけど…。

>OOはプログラム構造の一部しか記述できないんだよ。
これOOをC言語に置き換えて、アセンブラマンセーな人の発言だと思って読んでみるといいですよ。
0323名前は開発中のものです。02/01/02 09:54ID:???
>>318
そうそうアセンブラじゃないと記述できない部分があるよね。
フルアセンブラまんせー。
032431202/01/02 10:44ID:???
そういう意味じゃない。
アセンブラでもOOは出来るし。
032531202/01/02 10:47ID:???
ああ、言うの忘れてたけど>>316はOO対Cみたいに書いてるけど
判ってない証拠だね。
OOは言語によらず使える。
戦略ゲームなんかはCでOO使ったけど?10年くらい前か 藁
あと、スプライトはOOだな。
でも全部をOO化するのはアフォです。
0326名前は開発中のものです。02/01/02 11:55ID:???
OO に対する認識が個々違いすぎる

OO 言語派: C++ など OO をサポートした言語を使えば OO である
OO 戦術 派: オブジェクト(敵データ)管理などに OO の考えを使う
一般的 OO 派: OO サポート言語を使用。設計はどうあれ全面的にクラス/継承を使う
OOD 派: UML、デザパタ、RUP や XP の使用が前提

俺は OO をサポートしてない言語でわざわざ OOP する気にはならない。
けど速度がクリティカルじゃなきゃ VC++ で全部 OOP するよ。
その方が楽だからね。
0327 02/01/02 12:33ID:???
俺は純OOPLよりC++でファイル分けする方が好きだな。
クラス化するかグローバルで行くかは使い勝手しだい。

>全部OOPするよ。

無理。全部クラス化なら可能かもしれないが。
0328名前は開発中のものです。02/01/02 16:54ID:dWsrnYIE
OO 反対派はゲームクリエイターズバイブル読んだ?
ちなみにゲームクリエイターズバイブルは
Game Architecture and Desing の日本語訳本ね。

ようするに漏れのいいたいことは…
・monostate の化け物みたいなクラスしか書いたことないのに「 OO 駄目」とか言わないように。
・80:20 の法則に基づいて、速度にクリティカルな所以外では関数呼び出しのコストを気にしすぎない。
って事かな?

まぁ、一番惜しいのは >> 326 の分類でいう「 OO 戦術派」の人達。
OO のよさが少しはわかっているのに OOPL による強力なサポートをパフォーマンスを理由に拒んでいる気がする。
反対に早く目を覚ませっ!って言いたいのは「 OO 言語派」だね、
漏れも始めはこのグループだったので、あんまり偉そうな事言えないけど、
OOPL 使うのと OOP するのは違うからね。

OOP のよさが始めに解ってくるのは 「インターフェイスに対するプログラミング」が理解できた所あたりかな?
このあたりからポリモーフィズムとか、有用な所が一気に身についてくると思うから。
そこらへんまでたどり着く前に OO 否定に回っちゃ駄目だと思うなぁ。
0329名前は開発中のものです。02/01/02 17:02ID:539yM+fZ
もうちょっと一派的な方で用語の統一を…

OO … オブジェクト指向
OOP … オブジェクト指向プログラミング
OOPL… オブジェクト指向プログラミング言語

単にOOするのとOOPLでOOPするのとは格段に違うぞ。と言いたい。
0330 02/01/02 17:22ID:???
とうとうageちゃったか・・・。
>>328
現場の人間はそんな素人向けの本なぞ読まない。
それ以下の文章は意味不明だ。病院行け。
033132802/01/02 18:49ID:???
>>330
あなた >>327
>>327 の発言のがよっぽど意味不明なんだけど。

あなたは素人向けの本だと思ったのかもしれないけど、
本当はあなたみたいな頭の固い人の為の本だと思うよ。

と思ったけど、あんたはまずはじめに「達人プログラマー」から読みなさい。

つーかそれ以前に読んでもない本を初心者向けと言い切るあたりが
やってもない「本当の OOP 」を否定してるって態度をあらわしてるね。
033231502/01/02 20:11ID:???
初期コストが問題なだけですよ。コストってお金だけじゃないからね。
最終的にはお金になるんだけどもw
0333 02/01/02 20:32ID:???
やれやれ、ヲタク本列挙して何のつもりなのやら。
0334名前は開発中のものです。02/01/02 20:46ID:???
諸君、ソフトウエア業界は危機に瀕している。
業界は頭の固い旧世代プログラマーに占拠され、発展の可能性を
失っている。
これら旧世代を駆逐し、OOPLを世に広めなければソフトウエア業界
に未来は無い。
立て。若者達よ。
立って諸君らの力でこれら旧世代を駆逐し、明るい未来を切り開くのだ。
日本の未来は諸君の双肩に掛かっている。

みたいなー。
まあ、判りやすくデフォルメするとこんな煽動が
OOPLやOOの解説で行われているわけだ。
んでもってアフォが飛びついて洗脳される。と。
0335名前は開発中のものです。02/01/02 21:05ID:???
OOPL登場の理由はたった一つ、旧世代PGの排除であるってことは
みんな分かってるよね?ね?なら若い奴は必至こいて勉強しろって事だよ。
ただそれだけの事にこんなに議論しちゃって・・・。恥ずかしくない?
0336名前は開発中のものです。02/01/02 21:22ID:???
>>335 さんの発言を見て、なんでゲームプログラマが
OOを嫌うのかわかったよ。

簡単になったら低脳なやつらはクビ切られるからね。
OOが普及するのが怖いんでしょ?
0337名前は開発中のものです。02/01/02 21:37ID:???
結局OOはインネンつける手段かい!
0338名前は開発中のものです。02/01/02 21:38ID:???
>>336
低脳かどうかはどうやって判断するの?
0339名前は開発中のものです。02/01/02 21:38ID:???
OOの理解度で判断します!
0340名前は開発中のものです。02/01/02 21:44ID:???
自己完結哲学というか、オウムそっくりというべきか・・・。
救いようがないですな。
0341名前は開発中のものです。02/01/02 22:03ID:???
単純に C より C++ の方が組みやすいじゃん。
0342名前は開発中のものです。02/01/02 22:18ID:???
      ビビビビ
  ∧_∧  。))))))))  ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( `∀´)/        ( @∀@)< OOマンセー
 (Sつ二/)         (    ) | 旧世代を打倒せよ
 | | |           | | |  \_________
 (__)_)          〈_フ__フ
0343名前は開発中のものです。02/01/02 22:29ID:???
こうしてアンチOO派は論理的反論ができなくなったので
コピペ荒らしに転向しましたとさ。

               めでたし、めでたし。
0344名前は開発中のものです。02/01/02 22:30ID:???
めでたしめでたし

************* 終了 **************
0345名前は開発中のものです。02/01/03 23:00ID:???
レースゲーとかだったら、OO不要なんだけど。
0346 02/01/04 00:50ID:???
そうだね。
ゲームを完全OOで組めるとか言ってる人は実際に組んでみればいいじゃんか。
さらに、それで効率上がるなら自分だけ効率上げて待遇良くなればいいじゃんか。
(やったら自滅するけど)
なんで布教活動するのかなあ。
0347名前は開発中のものです。02/01/04 02:23ID:???
バカのためにわざわざ非OOで組まなければならない
苦労を察してください。
0348名前は開発中のものです。02/01/04 02:40ID:???
>>345
OOが絶対必要だっていう事は(レースゲーに限らず)多分ないよ。
でもレースゲーだってOOならもっと簡単になる可能性がある。

>>346
いいかげんウザすぎる。
本当に頼むから理解してないくせに批判するのやめて欲しい。
というか、逆にきくけどOOの何が不満さ?
「ぼくがりかいできないからです」以外の理由をちゃんと言ってよ。
0349_02/01/04 02:53ID:SxnE1SFQ
何が効率よくて、何が良くないかが、理解出来てない。俺は。
上手く比較デキンというか、理想系がわからんというか。

メンバアクセス関数を用意するのは、面倒かな?
記述量も増えるし。
設計で余計に悩まされるとも思う。

どのぐらいの納期かで使い分けるのがいいのかな。
0350名前は開発中のものです。02/01/04 04:15ID:???
>>349
OOの良さって、なかなか文章にするのは難しいです。
肌で感じてもらうのが一番いいと思うんですけど…。
もしあなたがすごく頭がいい人なら、もしかしたらOOの良さを
肌で感じてもらうには、途方も無く難しい(複雑な)問題に対面して
もらわなければいけないかも知れません。
私はあんまり頭が良くないので、OOを知ってよかった。と日々痛感していますけど。

うーんアクセッサを書くのが面倒っていう心情はわからなくはないけど、カプセル化は必要だから、これは慣れてもらうしかないです。

設計についてはOOが解っていれば逆に簡単になると思います。
ただし一番酷い状態はOOがわかっていない人がOOの設計をしたときかな?
記述量は…たしかに増えているかもしれませんけど、何度も書き直すのに比べれば確実に生産性はいいはずです。
それに本来混みあって見難くなる部分が逆にすっきりしたりする場合が多いので、単純にキーボードを叩く数では決められない生産性があると思います(まともなプログラマーなら多少鍵打数が増えるくらいはたいした負担ではないでしょう?)。

納期での使い分け…、というのはちょっと違うかな…。
もし納期の単位が一週間から一ヶ月とかいうのでもない限りは。
そんなに納期が短いスパンの仕事なら、わざわざOOしなくても
(むしろしない方が)いいでしょう。
すごく小さいプログラム(複雑度が低い)ならばOOはそれほど必要じゃありません。
私の心情的には「本当に速度にクリティカルな部分」はOOの冗長性が邪魔なので、そういう部分は非OOでもかまわないけれど、
それ以外の全てのコードはOOでやって欲しい。と思います。
0351名前は開発中のものです。02/01/04 04:23ID:???
>>350
禿同
アクセッサを書くのは確かに面倒かもしれないけど、カプセル化の恩恵は
それ以上の物がある。
0352_02/01/04 05:03ID:SxnE1SFQ
>>350
そうスか。
ゲームって、そんなに複雑なものでもないと思ってるけどね。
(後、規模的にも)

>もし納期の単位が一週間から一ヶ月とかいうのでもない限りは。

因みに今やってるのは2日です。(1つの目標に割ける時間)
全体で3週間かな?で、C++で書いてる。

そもそもC++ぐらいしか、現状で実用的な環境にない。てのが
問題なのかもね。

>>351
重要なものに関してはCの頃からやってた。
(「マクロ定義関数用意してるから、それ使え」とコメント付けてるだけだが)
テンプレートもマクロ定義のようなものだよね?
コンパイラが型チェックしてくれるようになった。と。
0353名前は開発中のものです。02/01/04 12:03ID:???
OOPは、コピペPGの天敵かもしれんな。
漏れの場合、似たようなコードを何度も書きたくない
という理由でコードを共通化してる部分が山ほどあるケド、
そのために、継承をさかのぼって読まないと、
どんな作業をしているかが分かりづらい所があるんよ。

だから、自分に理解できても、他人には理解出来んコードが
少なくないかもしれん。
0354名前は開発中のものです。02/01/04 12:45ID:???
関数呼び出しを遡っていくのと大して変わらないと思ったり。
0355名前は開発中のものです。02/01/04 14:01ID:???
ライブラリが複数ファイルにまたがっている事に対して、
文句を言ってる厨房がいたような・・・・
0356名前は開発中のものです。02/01/04 18:29ID:???
>>343
泣ける…
モナジェクトXとかにして。

OOで効率が悪くなるとか全部組めないとか言ってる人は、どういう部分が出来ないと思ってるんだろう?
>>355は、だしかにそう思う。
ユースケースごとくらいにシーケンス図があったりすると嬉しいんだけどね。
あと、JavaDocみたいなドキュメントをちょこっと書いておくのも重要だ。
C++はDoxygenだっけ?
0357名前は開発中のものです。02/01/04 18:31ID:???
なお、継承は悪(ただし必要悪)だという事に決まりましたので、
あんまり継承に頼らないようにしましょう。
Template Method とかは別として。

ライブラリ的な部分と利用者部分を分けて考えるのが良いと思います。
ライブラリの中身が実は OO じゃなくても、外っツラがちゃんとした OO っぽく
なっていれば結構ハッピーです。でも意味不明な static 変数やめてね。
(クラスのメンバって意味じゃなくて、関数の中とかのね)

それじゃ!グッドモーニング!!
0358名前は開発中のものです。02/01/04 19:00ID:???
ポリモーフィズムがOOのキモなのに…
0359初愚痴02/01/04 19:26ID:???
必要悪だから頼り過ぎないように、という話だろう。
経験的にインターフェースと実装の分離の為の継承では
ほとんど問題起きないね。
036035702/01/04 19:32ID:???
>>358
あぁ、言葉が足りなかった!
Java 用語で言う interface を継承するのはちっとも悪くないよ。
実装継承を繰り返すのが悪なの。

むしろインターフェイスだけの継承はバリバリ行うべし。
まさしくポリモーフィズムは OO の華。

まぁ漏れはアクセッサくらいはベースクラスに含めてもいいと思ってるけど。
(まともなロジックは入れない)

共通の基本の振る舞いが欲しければアグリゲートする方向で。
0361 02/01/04 20:49ID:???
まあ、コーダーレベルのPGには全てOOで行けると思えるだろうね。
0362名前は開発中のものです。02/01/04 22:10ID:???
じゃぁ、どこが行けないの?
0363 02/01/04 22:31ID:???
実際に作ってみれば?
OOは
1)処理とオブジェクトをごちゃ混ぜにしている
2)規模が大きくなり、オブジェクト間の処理が多くなってくると
  クラスが邪魔になる。(OOPL)
3)オブジェクトの無い処理に不向き
4)メモリ上のインスタンス以外をオブジェクトにしようとすると
 たちまち非効率になる。
5)処理だけでオブジェクトが無い場合は無意味。
0364 02/01/04 22:34ID:???
あ、3)と5)被ってるw
5)境界のあいまいな処理に不向き。
0365 02/01/04 22:35ID:???
例:
Stringクラスは何故Charクラスを継承してないか?
0366名前は開発中のものです。02/01/04 23:24ID:???
はぁ…。
別にすべてクラス(のメソッド)にしなくても、OOはOOだと思うんだけど…。
(「処理」もオブジェクトであるという見方をしてもいいし)
「全て」の定義を聞きたいところ。
全てのコードをクラス内に入れること?
OOPの話だよね?

あと、>>365はネタですか?
文字と文字列は(国際化とか考え出すと)深すぎるのであまり足を突っ込みたくないけど、
それは違うでしょ。
あぁ、でも、言いたい事はだいたい分かった。曖昧なのはあなたの頭です。
0367名前は開発中のものです。02/01/04 23:45ID:???
1)処理はメッセージパッシングの流れであらわすのが基本。できなそうなら、全体を制御するオブジェクトを作るのが普通かな?
2)異なる種類の複数のオブジェクトを処理する場合は、STLばりに「処理をする」オブジェクトを作ろう。
3)意味不明。整数オブジェクトは使いませんか?
4)VRAM上のメモリとかに直接アクセスできない場合とかの事を言っている?非効率なのは単純に設計が悪いだけでしょう。
5)曖昧でなくなるまで設計を見直しましょう。
0368名前は開発中のものです。02/01/04 23:47ID:???
>>361での発言を見ると、チーフか何かなのかも知れないが、
そうだとしたら、こいつの下の人は本当にかわいそうだ。

つーか何だ>>363は?
意味不明。
>実際に作ってみれば?
これはそっくりそのまま返したい。
■ このスレッドは過去ログ倉庫に格納されています