オブジェクト指向を教えてくれ!

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2021/03/16(火) 17:06:02.41ID:VhqTt897
オブジェクト指向について、調べれば調べるほど疑問が募ります。低レベルで粗末な疑問かも知れませんが、ご教授願いたいです。

・データと振る舞いをまとめる?
まとめると何か良いことあるの?
ファイルあるいはモジュールにはまとまってるよね?
丁度いい単位があるのに、何故わざわざオブジェクトという概念を導入するの?
(Javaには1ファイル1クラスという文化あるらしいけど)

・カプセル化?
モジュールのimport, exportでも実現出来るよね?
(構造体などへのアクセスを制限できれば)

・ポリモーフィズム?
別にデータと振る舞いをまとめなくても実現出来るよね?

・モノのように扱いたい?
モノとして扱いたいときに扱えば良くない? なんでわざわざ全てをオブジェクトにするの?
683デフォルトの名無しさん
垢版 |
2021/04/10(土) 20:21:03.66ID:XPz+daq5
>>682
ならばオブジェクト指向とチンポ【が】シコシコとは、関係無いのか?
2021/04/10(土) 20:47:28.50ID:edMGid1M
>>681
何がそうなのかよく分からない
>>679を読む限りではボタンの各状態をそれぞれクラスとして定義してるようには全く見えないんだけど?

書き換え前と書き換え後のボタンの状態を表現する各インスタンスをオペランドとして論理演算してるってことなの?

もしそうだとしたら何のためにボタンの各状態をわざわざクラスとして定義するのかわからない
stateパターン使って状態遷移を制御するんなら理解できるんだけど
685デフォルトの名無しさん
垢版 |
2021/04/10(土) 21:06:31.28ID:GLiDRYw8
>>684
なんかここまで説明して分からない人にこれ以上説明するのは無駄な気がする
Object指向以前にコンピュータとはどういうものかもっと基礎的なことから勉強した方がいいと思う
恐らく掛け算のロジックを作れと言われたらそのまま掛けられる数の回数分だけ掛ける数をループして
足しこむようなロジックを作るタイプだな
2021/04/10(土) 21:34:26.26ID:edMGid1M
「ボタンを押している状態をクラスにしてしまうとプログラムが無茶無茶になる」という主張に対する反論に
「ボタンを押している状態」をクラスにしてない例を持ってきても意味なくないかい?

何か意図があったのだろうか?
687デフォルトの名無しさん
垢版 |
2021/04/10(土) 21:42:44.90ID:GLiDRYw8
>>686
何を言ってるのか全く分からんけど
>>679はれっきとしたボタンが押されているか、今押されたのか、ボタンを離したのかの状態を監視するクラスだ。
それが読んで分からない人にそこから先の何が理解出来る?
2021/04/10(土) 21:44:59.07ID:AcLZ31++
ゲームみたいな例外をだしたって参考にならないんだがな
ゲームのボタンは押したらロボットに変形したりする
2021/04/10(土) 21:48:22.34ID:hfLklo2F
仮想コントローラークラスにして
コントローラオブジェクトとして扱ってるってことか
690デフォルトの名無しさん
垢版 |
2021/04/10(土) 21:52:03.15ID:GLiDRYw8
>>688
別にゲームのボタンでなくてもいいよ
スマホとかのタブレットデバイスで
スライドするとそれに合わせてスクロール
したりするのも原理的には同じだ
2021/04/10(土) 21:58:30.06ID:AcLZ31++
>>690
スマホとかの〜ボタンだと
そういうのは予め用意されてる
何のフレームワーク・ライブラリの話をしてる?
692デフォルトの名無しさん
垢版 |
2021/04/10(土) 22:05:19.22ID:4ha6UGTx
>>691
そうだな
例えばスクロールする枠とスクロールを検知する枠が異なる場合、
通常のフレームワークだとそこまでやってくれない場合がある。
例えばWeb画面だと本来CSSだけでそれは出来ることだが
上記のような条件がつく場合、>>691だったらどうするよ?
693デフォルトの名無しさん
垢版 |
2021/04/10(土) 22:08:38.99ID:bj32NwrN
さあさあ議論が白熱して参りました!
694デフォルトの名無しさん
垢版 |
2021/04/10(土) 22:11:15.49ID:XPz+daq5
さあさあ皆さん、チンポ【が】シコシコして参りました!
2021/04/10(土) 22:40:41.01ID:CMXyYVkE
チンポがシコシコ君はいい加減に消えて欲しいが
「〜が」の時点で主語(サブジェクト)だから、それはサブジェクト指向やぞ
2021/04/10(土) 22:46:33.74ID:GpjuDdyG
static変数を持つクラスを作ると
そのクラスに依存するクラスがたくさんできる
プロジェクト内で完結してるなら問題ない
そのかわり次のプロジェクトで使えないようなクラスが
たくさん残る
そういうことじゃ
2021/04/10(土) 23:07:58.78ID:d/QnIuGg
privateにすりゃいいんじゃ
698デフォルトの名無しさん
垢版 |
2021/04/10(土) 23:38:19.35ID:GLiDRYw8
>>696
いつものじーさんか
んー、上のボタン制御のロジックに限って言ってしまうとボタン情報による状態変化を司るクラスを作っておいて
それだけ変えればいいように設計すればそこの変更だけで済むんだけど
Object指向のスレ的に言えば本来、開放閉鎖原則というのがあるからそれに関しては否定しないよ。
2021/04/11(日) 04:40:53.16ID:CjAFb9gH
>>692
そういうのを作ればいいだけでは?
それとゲームのボタンとは全く違う
700デフォルトの名無しさん
垢版 |
2021/04/11(日) 06:22:47.87ID:0+LhiyyI
>>699
>そういうのを作ればいいだけでは?
>それとゲームのボタンとは全く違う

そういうのをどう作るのか聞いている
そこに行き着く前に思考停止しているから
原理が同じことに気付けない
2021/04/11(日) 07:11:59.27ID:CjAFb9gH
>>700
だから既存のものはどうなってるかって聞いたんだよ
どれもゲームのようにはなってないだろ?

YAGNIって知ってるか?出来るかどうかの話はしてない。
必要ないのに無駄な汎用性をもたせるなという話
それともゲーム並みに無駄な汎用性をもたせるといい理由でもあるか?
2021/04/11(日) 07:12:30.62ID:CjAFb9gH
ゲームが必要だから、それ以外でもゲームと同じようにするべき

という考えなら、それこそ思考停止
703デフォルトの名無しさん
垢版 |
2021/04/11(日) 07:14:37.55ID:0+LhiyyI
後輩「先輩」
先輩「何だ後輩」
後輩「すみません、画面スライドしたとき、スクロール範囲でないところでスクロールを検知させたいんですけど」
先輩「それで?」
後輩「CSSじゃ出来なそうなんです。どうすればいいですかね」
先輩「そう作ればいいだろ」

こんな感じで笑えたわw
流石に上司や客先にはやったらクビになるから
今度後輩にやってみよう
2021/04/11(日) 07:19:58.71ID:CjAFb9gH
後輩「先輩」
先輩「何だ後輩」
後輩「すみません、画面スライドしたとき、スクロール範囲でないところでスクロールを検知させたいんですけど」
先輩「それなら全画面を透明のCSSで覆えばいいよ」

こんな話か?w
705デフォルトの名無しさん
垢版 |
2021/04/11(日) 07:20:56.91ID:0+LhiyyI
>>702
この話においてゲームの話はただのトリガーで
「ゲームのような特殊な」って言うから
比較的一般のものの話をしているんで
そんな心配しなくていいよ。

で、どう作るのかまだ回答を貰っていないんだが
どうすんの?コレ
2021/04/11(日) 07:21:24.67ID:CjAFb9gH
あれだな。見えているもがオブジェクト全てだと考えてしまうゲーム脳だなw
2021/04/11(日) 07:22:43.08ID:CjAFb9gH
>>705
スクロールする枠と、スクロールを検知する枠を別にすればいいだけ
それとボタンを押した状態を別のオブジェクトにする話と何が関係あるんだ?
708デフォルトの名無しさん
垢版 |
2021/04/11(日) 07:24:12.88ID:0+LhiyyI
後輩「先輩」
先輩「なんだ後輩」
後輩「なんか画面がスクロールしなくなっちゃったんですけど」
先輩「いいから、出来るように作ればいいんだよ!!」
こんな感じ
2021/04/11(日) 07:25:51.39ID:CjAFb9gH
後輩「○○で作れそうじゃないんですけど。どうすればいいですかね」
↑相談

先輩「そう作ればいいだろ」
↑無能

こういうのが報連相をぶち壊しにするんだよな
後輩が相談してるのに、その相談にのらない
2021/04/11(日) 07:27:33.86ID:CjAFb9gH
それでボタンを押した状態というのは
どれも状態としてボタンが持ってるのが普通なのに
なんでわざわざ別のオブジェクトにするんですか?
まだ答えもらってないよ
2021/04/11(日) 07:34:09.10ID:CjAFb9gH
答えに詰まったようだねw

ゲームのボタンっていうのはキャラクターの一種なんだわ
例えばマリオだとPスイッチは、押したら潰れて消える
持って投げられる。ベルトコンベアやバネの上で動く。
壁として障害物になる。

そういうのとUIのボタンを一緒にするのは抽象化能力が低い
ボタンという名前だから同じものだと考えてしまっている
ゲームのボタン(キャラクター)を持ち出して
UIまでキャラクターにするのはアホ
712デフォルトの名無しさん
垢版 |
2021/04/11(日) 07:35:04.81ID:0+LhiyyI
>>710
え?何?そこから?
なら画面が動いている最中に
ボタンが押されたばかりか離されたか
押しっぱなしか押してないかどう検知するんだよ?
まさかボタンのイベント括り付けて常に拾うつもり?
2021/04/11(日) 07:40:36.11ID:CjAFb9gH
>>712
常にイベント拾う必要ないだろ

ボタンが押された・・・onPressイベント
押しっぱなし・・・そのまま何もイベントが発生しない
ボタンが話された・・・onReleaseイベント

こんなとこだろ
2021/04/11(日) 07:42:16.08ID:CjAFb9gH
そもそもフレーム単位で描画処理するというのがゲームの発想なわけで
普通のUIはそんなことはしない。
やっぱり理解できてないとしか言うしかないな
マジのゲーム脳だなw
715デフォルトの名無しさん
垢版 |
2021/04/11(日) 07:44:03.37ID:0+LhiyyI
>>711
>ゲームのボタンっていうのはキャラクターの一種なんだわ

ちょっと何言ってるか分かりませんね
十字キーやABボタンがキャラクター?
あれって勝手に外れて動き出すの?
・・・狂った?

>>714
>そもそもフレーム単位で描画処理するというのがゲームの発想なわけで

お前、スマホとかの開発出来ねーな
2021/04/11(日) 07:47:15.00ID:CjAFb9gH
>>715
十字キーやABボタンの話をしてたのか?
それもう現実世界のもので
ソフトウェアのオブジェクトじゃないじゃん
お前何言ってるの?

それに「オブジェクトを押した状態」をクラスにするのが
アホ設計って話をしてるよね
つまり、お前のABボタンは、押すと別のオブジェクトに変わるんか?

>>715
> お前、スマホとかの開発出来ねーな

やっぱり反論できなくなったら遠吠え DA・YO・NE☆
717デフォルトの名無しさん
垢版 |
2021/04/11(日) 07:57:06.87ID:0+LhiyyI
>>716
いいか?
ボタンをクラスにするのではない
「ボタンの状況」を把握するクラスを作ること
それが最初から言われている大条件だが
日本語苦手なのかな?

で、俺はスマホでスクロールの話をしたとき
お前は「原理は全く別のもの」と吹っかけた
では原理的に何がどう違うのか説明して貰おう
否定すると言うことは当然理解もしているし
こうだから違うと言うことを自分が
理解していて説明出来るからという解釈でいいんだよな?
2021/04/11(日) 08:13:48.85ID:CjAFb9gH
>>717
話をすり替えるな

>>675
>「ボタンを押している状態」
>をクラスにしてしまうと
>プログラムが無茶無茶になる
2021/04/11(日) 08:14:43.87ID:CjAFb9gH
680 名前:デフォルトの名無しさん[sage] 投稿日:2021/04/10(土) 18:35:00.78 ID:edMGid1M [2/4]
>>679
それ「ボタンを押してる状態」をクラスにしてる?

681 名前:デフォルトの名無しさん[] 投稿日:2021/04/10(土) 18:52:25.48 ID:GLiDRYw8 [2/6]
>>680
そうだよ
2021/04/11(日) 08:18:42.29ID:CjAFb9gH
「ボタンの状況」を把握するクラスっていうのも意味不明なんだよな
イベントドリブンをしらないのか?
ボタンは状況が変わればそれをイベントとして通知する
それはハードウェアやドライバレベルで処理する話なの

いちいちフレーム単位でボタンの状況を
スキャンしたりしないの
721デフォルトの名無しさん
垢版 |
2021/04/11(日) 08:19:04.30ID:0+LhiyyI
>>718
何もすり替えていない。
「ボタンを押している状態」のクラスを作ることだろ?
ボタンが別のオブジェクトになるとか
さっきから何の話をしているんだ?

俺からするとお前の方が回答したくなくて
話を逸らしているように見えるんだが?
なぁ、早く答えてくれよ
2021/04/11(日) 08:22:01.88ID:CjAFb9gH
> 「ボタンを押している状態」をクラスにする

> 「ボタンの状況」を把握するクラスを作ること


この2つが区別つかないようじゃ話にならんなw
723デフォルトの名無しさん
垢版 |
2021/04/11(日) 08:25:38.30ID:0+LhiyyI
>>722
「ボタンの押している状態」
「ボタンの押している状況」
「ボタンの状況」
俺からすれば言葉遊びのように見えるが
では何がどう違うのか説明してくれ
2021/04/11(日) 08:28:12.36ID:CjAFb9gH
> 「ボタンを押している状態」をクラス
ButtonPressedClass

> 「ボタンの状況」を把握するクラスを作ること
ButtonStateScannerClass

ぜんぜん違うだろ
725デフォルトの名無しさん
垢版 |
2021/04/11(日) 08:36:11.20ID:0+LhiyyI
>>724
馬鹿か?
ボタンのイベント処理そのものをクラスにするなんて常識としてあり得ないだろ?
そういう言葉遊びはもう沢山だから
キチンとボタンの状態を管理する話から話を逸らすなよ。
で、スクロールの件は?早く答えてくれよ。
2021/04/11(日) 08:37:59.54ID:CjAFb9gH
> ボタンのイベント処理そのものをクラスにするなんて常識としてあり得ないだろ?
誰もそんな話はしてない
どこをみて「ボタンのイベント処理そのものをクラス」と
書いてあると思ったのか?

そして>>724へのレスはなし。
都合の悪いレスは無視して違う話を始めるw
727デフォルトの名無しさん
垢版 |
2021/04/11(日) 08:45:17.73ID:0+LhiyyI
>>726
>>724ぬ対してのレスは見えなかったことになってるのか
ButtonPressedClassって
どう見てもボタン押下しましたクラスだが
それはボタンを押下したイベントを司るクラスでないなら何のクラスなんだ?
こっちからしてみるとそっちの言ってることはさっきから支離滅裂なことにしか見えないんだが?
2021/04/11(日) 08:50:34.59ID:CjAFb9gH
> どう見てもボタン押下しましたクラスだが
> それはボタンを押下したイベントを司るクラスでないなら何のクラスなんだ?

ボタンが押された状態のクラスだろ
なんでもう押されてしまった状態なのに
ボタンを押すイベントを司らなければならないのか
ボタンを押すイベントが発生した後のクラスだろうに
はぁ英語も通じないのか・・・
729デフォルトの名無しさん
垢版 |
2021/04/11(日) 08:56:03.31ID:0+LhiyyI
>>728
そのボタンが押された後に発生したクラスで何をやっているのか?
押された後の状態管理で有れば>>724で言っている下のクラスとは何が違うのか?
730デフォルトの名無しさん
垢版 |
2021/04/11(日) 08:59:35.24ID:7+Z1QVDQ
チンポという主体意思決定存在(サブジェクト)を、オブジェクト指向で表現するということなんだが?

>>695
>「〜が」の時点で主語(サブジェクト)だから、それはサブジェクト指向やぞ

カンタンに表記すれば、
Subject = 法則,
Object = (法則によって規定される)集団
になるんでしょう。
これをコンピュータのプログラミングに当てはめると、
Subject = コンピュータの処理方法,
Object = プログラマが設定可能な部分
になるんではないかと。
https://note.com/nephews_tech/n/n02380a2cc0e3
2021/04/11(日) 09:01:34.10ID:CjAFb9gH
>>729
> そのボタンが押された後に発生したクラスで何をやっているのか?

>>716より
> それに「オブジェクトを押した状態」をクラスにするのが
> アホ設計って話をしてるよね

「ボタンが押された後に発生したクラス」なんてのを
作るのがアホと言ってる俺に聞くなアホ
2021/04/11(日) 09:03:59.94ID:CjAFb9gH
> >>724で言っている下のクラスとは何が違うのか?

それはお前が「ボタンを押してる状態のクラス」と聞いて
「ボタンの押してる状態を把握するを把握するクラス」と勘違いしたものだろ
お前が想像で作り出したものなんか知らんわ
733デフォルトの名無しさん
垢版 |
2021/04/11(日) 09:07:23.17ID:7+Z1QVDQ
>>718
ここで話を本質に戻すと、もしチンポをクリントンのインナークラスとして固定してしまうと、

>>626
>人格は乗っ取られているかも知れないがそれはクリントンの状態変化であって

『チンポに人格を乗っ取られた【状態】のクリントン』を【再定義】【継承】が不可欠ということだ!
734デフォルトの名無しさん
垢版 |
2021/04/11(日) 09:07:31.72ID:0+LhiyyI
>>731
なんだ結局>>724で言ってたものの上下は
言葉を変えただけの言葉遊びか
735デフォルトの名無しさん
垢版 |
2021/04/11(日) 09:10:06.68ID:0+LhiyyI
>>732
まぁいいや何が言いたかったかは大体分かった。
後はスクロールの件だけ答えてくれればいいや。
2021/04/11(日) 09:10:12.49ID:CjAFb9gH
>>734
どこを読んで言葉遊びだと思ったの?
全く違うものであるといったよね?

「どこを読んで同じものだと思ったの?」
次のレスはそれだけ言えばいいよw
2021/04/11(日) 09:10:32.38ID:CjAFb9gH
> 後はスクロールの件だけ答えてくれればいいや。
すでに返答済み
738デフォルトの名無しさん
垢版 |
2021/04/11(日) 09:15:12.83ID:0+LhiyyI
>>736
結局ボタンを押した後に行うのは
それに対しどう状況が変化するのか
管理するものへの設定だけだろ?
名前が違うだけでやることは同じだからな
だから言葉遊びと言ったんだ。

>既に回答済み
ああ、あの「そのように作ればいい」ってやつね。
はいはい
739デフォルトの名無しさん
垢版 |
2021/04/11(日) 09:25:57.00ID:7+Z1QVDQ
オブジェクトの更新処理
一般にゲームは、時間の経過とともに状態が変化します。
その時間経過による状態の更新を、BattleクラスのUpdate()メソッドで処理することとします。
そして、BattleクラスのUpdate()の中で、各BattleObjectのUpdate()を呼びます。
https://developer.aiming-inc.com/programming/design-battle-program/
740デフォルトの名無しさん
垢版 |
2021/04/11(日) 09:34:53.14ID:7+Z1QVDQ
バトル通信ラグ軽減のための「武器持ち替え廃止論」コメント 1件

アイミョン
[KS108-054]
テーマ:バトル2020/09/20 15:47
https://hiroba.dqx.jp/sc/forum/pastthread/413734/

>現在できている操作ができなくなってしまう可能性もあるため

武器持ち替えは操作が無駄に多くなるし行動ターンを浪費するので、無くしてしまっても問題無いと思います。

https://i.imgur.com/U4jgmc3.png
741デフォルトの名無しさん
垢版 |
2021/04/11(日) 09:45:39.75ID:0+LhiyyI
>>739
お、いつもチンポチンポ言ってるけど
こういうのの反応は早いのね。
ちょっと見直したよ。

ちょっとC++は忘れたけど時間経過と言うか
確か走査線が一画面分走ったときに起る
VSYNC割込みが使えたんじゃなかったかなー
まぁその辺の単位で処理しているのは違いないよ
ネットでの他者との同期は俺もそこまで詳しくないけど
他のPCとの同期は2台だけでもかなりややこしかったからね
後で色々起きるのも理解出来るよ。
742デフォルトの名無しさん
垢版 |
2021/04/11(日) 09:53:24.21ID:7+Z1QVDQ
状態変化といっても、オシッコするときのチンポはインナークラス、勃起・射精するときのチンポはサブクラス。

>BattleクラスのUpdate()メソッドで処理することとします。

オンラインゲームのバトルはごくシンプルに、同一人格の状態変化はインナークラスが良い。

928 デフォルトの名無しさん 2018/11/21(水) 18:59:11.61 ID:8Yc2p7H1
>>922
>ナンチャッテメッセージングスタイルになったのは

チンポ.オシッコを出す
チンポ.オシッコを止める

さっきトイレでやってきた。


929 デフォルトの名無しさん 2018/11/21(水) 19:07:17.83 ID:8Yc2p7H1
>>915
>単なる動的なメソッド呼び出しをメッセージと称し、ただしコールするメソッドが見つからない場合だけメッセージを
>ハンドリングできる省コストなナンチャッテメッセージングスタイルに落ち着いた。

×
俺.オシッコを止める 俺.オシッコを出す

俺.チンポに力を入れる 俺.チンポから力を抜く
2021/04/11(日) 09:56:07.22ID:dlO5vcSm
君たち日曜の朝からなにやってんのwww

>>687
とりあえず「状態をクラスにする」の意味が分かってないことは良くわかった
誰も問題にしてないことに対して頑張って反論してたわけね
744デフォルトの名無しさん
垢版 |
2021/04/11(日) 10:14:46.71ID:0+LhiyyI
>>743
まぁお前はその入口にすら立てていないことも解ったけどな
2021/04/11(日) 10:20:51.36ID:dlO5vcSm
>スクロールする枠とスクロールを検知する枠が異なる場合

検知するというのがスクロールイベント自体を作成することを言ってるのか
それともスクロールイベントをハンドリングすることを言ってるのかわからないな

前者ならスクロールされた枠がスクロールイベントを発行すればいいだけなのに
別のところでスクロールされた枠用のイベントを発行する意味がわからない
後者ならごく一般的なことなので何を問題にしてるかがわからない

とかいっても無駄かな
746デフォルトの名無しさん
垢版 |
2021/04/11(日) 10:29:15.53ID:0+LhiyyI
>>745
というかお前はまずスマホのタッチとかスライドとかどうなってんのとか、
昨日も言ったけどコンピュータとは何か、から勉強しような。
自分の後輩なら手取り足取り教えるけど
スクロールイベントがどうのなんて言ってる時点で本質が全く見えていないのミエミエだから
747デフォルトの名無しさん
垢版 |
2021/04/11(日) 10:32:01.65ID:0+LhiyyI
話続きだったな
自分の後輩なら手取り足取り教えるけど
そんな義理は全くないから。
ましてや質問者じゃなくて教える立場として
このスレに来ているなら尚更。
748デフォルトの名無しさん
垢版 |
2021/04/11(日) 11:17:29.99ID:7+Z1QVDQ
ボタンが押されたか離されたかってのはともかく、

>>712
>なら画面が動いている最中に
>ボタンが押されたばかりか離されたか
押しっぱなしか押してないかどう検知するんだよ?

オンラインゲームでバトルキャラが死んだか否かってことでの『死亡ラグ』は珍しく無いぞ?

他のプレイヤー視点では既に倒れている。しかし、遅れているので自分では分からないためいきなり何も
ないところで死ぬ。また、デスマッチなどでは既に死んでいるため、自分が動けてもリスポンされていたり
して無敵時間が無くなり、復活した瞬間に倒されることもある。
自分がいつ死んでいるのか分からず突然死んで突然画面が切り替わってしまう。その結果キルログを注視してしまいゲームを楽しめなくなってくる。
https://gamingpcs.jp/knowledge/kankyou/kaisenhuguai/
749デフォルトの名無しさん
垢版 |
2021/04/11(日) 11:37:53.31ID:7+Z1QVDQ
オシッコを出している状態と、オシッコを止めている状態、インナークラスのメッセージング処理だなw

724 デフォルトの名無しさん sage 2021/04/11(日) 08:28:12.36 ID:CjAFb9gH
> 「ボタンを押している状態」をクラス
ButtonPressedClass

> 「ボタンの状況」を把握するクラスを作ること
ButtonStateScannerClass

ぜんぜん違うだろ

250 デフォルトの名無しさん sage 2021/03/21(日) 16:00:54.94 ID:rWfpUSZ4
状態をオブジェクトにするな
は昔からよく言われている
「ボタンを押している状態」
をクラスにしてしまうと
プログラムが無茶無茶になる
「モノ」をオブジェクトにする
これがオブジェクト指向の本質
750デフォルトの名無しさん
垢版 |
2021/04/11(日) 11:47:01.37ID:7+Z1QVDQ
さっきトイレでオシッコを出したり止めたりしていたが、

>オンラインゲームでバトルキャラが死んだか否かってことでの『死亡ラグ』は珍しく無いぞ?

オシッコを出したり止めたりするのに、脳とチンポで『通信ラグ』を感じたのは、自分だけたろうか???
751デフォルトの名無しさん
垢版 |
2021/04/11(日) 12:31:55.97ID:7+Z1QVDQ
インナークラスを用いたメッセージングによる状態操作、イベントドリブンによる割り込み処理と通信ラグ、
それはトイレでオシッコを出したり止めたりして、脳とチンポで必ずしも『同期』が取れるかという問題だ。

728 デフォルトの名無しさん sage 2021/04/11(日) 08:50:34.59 ID:CjAFb9gH
> どう見てもボタン押下しましたクラスだが
> それはボタンを押下したイベントを司るクラスでないなら何のクラスなんだ?

ボタンが押された状態のクラスだろ
なんでもう押されてしまった状態なのに
ボタンを押すイベントを司らなければならないのか
ボタンを押すイベントが発生した後のクラスだろうに
はぁ英語も通じないのか・・・
752デフォルトの名無しさん
垢版 |
2021/04/11(日) 12:42:55.74ID:7+Z1QVDQ
プログラミング言語の性能差
主な言語とスループット
言語 スループット 特性 C/C++ 100 静的言語 ネイティブコード Java 1〜10 静的言語 VM バイトコード Ruby/Python 0.1〜1 動的言語
オンラインゲームのサーバではC/C++が最も使われる
http://www.wata-lab.meijo-u.ac.jp/file/seminar/2013/2013-Semi1-Atsushi_Somekawa.pdf

オンラインゲームでは『メッセージング』なんて当たり前なのに、いつの時代の話をしているのかな?

701 デフォルトの名無しさん sage 2021/04/11(日) 07:11:59.27 ID:CjAFb9gH
>>700
だから既存のものはどうなってるかって聞いたんだよ
どれもゲームのようにはなってないだろ?

YAGNIって知ってるか?出来るかどうかの話はしてない。
必要ないのに無駄な汎用性をもたせるなという話
それともゲーム並みに無駄な汎用性をもたせるといい理由でもあるか?
753デフォルトの名無しさん
垢版 |
2021/04/11(日) 13:13:51.27ID:7+Z1QVDQ
オブジェクト指向には、大きく分けて2種類ある。

1 インナークラス(オシッコをするときのチンポ)
ネットワーク、メッセージング、イベントドリブン、同期処理・・・
2 サブクラス(勃起・射精するときのチンポ)
自然言語処理、人工知能・・・

世界初のパーソナルコンピュータであるApple Iと、キーボードやメモリ、CPU、画像出力装置、外部記憶装置、
音声出力装置とのインターフェース、プログラム言語などのオールインワンパッケージ化を可能にした
最初のコンピュータであるApple IIの開発を1人で成し遂げたのもスティーブ・ウォズニアックです。
https://engineer-shukatu.jp/column/archives/26603


インターネットも人工知能も無い1980年代のプログラミングは、いかにメモリを節約するかということだった。
演算処理をいかに早く正確に行うかが全てであって、オブジェクト指向がどうこうという議論は無かったはずだ。
近年のオブジェクト指向を意識したシステム開発は、インターネットと人工知能が背景にあり、従って、
チンポ【が】シコシコするという、新しい言語パラダイムが求められているということだ。
2021/04/11(日) 16:03:38.54ID:CjAFb9gH
>>748
> 押しっぱなしか押してないかどう検知するんだよ?
>
> オンラインゲームでバトルキャラが死んだか否かってことでの『死亡ラグ』は珍しく無いぞ?

だからお前はゲーム脳(ゲームの設計しか知らない)だと言ってる
フレーム単位でボタンの状態をスキャンするなんてことは
普通のアプリではしないんだよ

そもそもな、フレーム(1/60)ごとに発生するイベントが存在しない
お前は1/60ごとに描画しなきゃならないと思ってるんだろうが、そんなことをするのはゲームだけ

普通は何もイベントが発生しない限り変化がない
ボタンは押したときと離したときにイベントが発生する
それに応じて処理をするのがイベントドリブン

押しっぱなしは普通キーリピートとして、何度も押したというイベントが発生するのが普通のUI
それじゃゲームには役に立たない!っていいたいんだろう?ゲーム脳だからゲームに役に立たない!としか言わんわけだ

普通のUIで押しっぱなしの状態で何かを変化させる必要があれば
そのときにタイマーイベントを設置する。
ゲーム脳のお前は、このタイマーイベントがあるという前提でしか物事を考えられないんだろうが
普通のUIじゃそんなの追加機能だ

そして押しっぱなしの状態を検知したいんだったな?
ボタンオブジェクトは自身に押されたか押されてないかの状態を示すステータスフラグを持ってる
(なければそういうステータスフラグを作って、ボタンが押された・離されたときにフラグを更新するだけ)
そしてタイマーイベントからそのステータスを見るだけだ
755デフォルトの名無しさん
垢版 |
2021/04/11(日) 18:21:34.08ID:AX7XCaAp
>>710
むかーし、スマートフォンアプリ(Java/Objective-Cベース)開発初期に
ケータイやWebアプリ(flashベース)の人が来て質問してきた時に
スマホ側は「ボタン自体がタッチイベントなどの属性持ってる」前提で話してるのに
ケータイflashの人が「画面へのタッチをトリガーに
if文で矩型の範囲設定してどこを触ったか?で条件分岐させよう」としてて
噛み合わなさに苦笑したの思い出した。
2021/04/11(日) 21:18:16.23ID:LXnW0jT4
高橋名人だっけ?
1秒間に、18回クリックできた人

確か、これがこの当時の限界のはず
757デフォルトの名無しさん
垢版 |
2021/04/12(月) 08:31:37.55ID:A3OoULtt
>>754
つまり君の言い分はこうだ
「ぼくのさいきょうのおぶじぇくとしこう(ただしげーむやすまほではつかえません)」

つまり時間による状態変化にはついて行けないということだ。
別にタイマーみてボタン押下のイベントを見るのは構わないが、ひと処理がタイマー期間に間に合わず、次の期間にもなだれこむ場合、
ひとつの処理の中で複数回のボタン読み込み処理が発生する場合があり、それだけだと正確なボタン検知が出来なくなるし
それ用の処理をそのために作るのも大変だしな
作るとしてもそれを含めて
結局正しいボタン情報を監視、制御するクラスはそういう役割として持たせておくと楽だろう

それとあの後一生懸命勉強したのだろうが、フレーム(1/60秒)と書いてあるがfpsという言葉を知っているか?
身に付けたばかりの知識はひけらかすと恥をかくから気をつけた方がいいぞ

後、プログラマーのゲーム脳というのは
少なくとも君の語る最強のオブジェクト指向のようなカタワではないから褒め言葉として受け止めておくよ

それと人が居なくなった頃を見計らって書き込むのはいいが、
いくら俺が怖いからって他の誰かれ構わす他噛みつくのはみっともないな
後でチンポさんに謝っておけよ
2021/04/12(月) 09:11:21.50ID:yZXPyOt1
>>757
> 別にタイマーみてボタン押下のイベントを見るのは構わないが、ひと処理がタイマー期間に間に合わず、次の期間にもなだれこむ場合、
コマ落ちでもすりゃいいじゃん。なにか問題でも?

やっぱりゲームのことしか考えてないよね
759デフォルトの名無しさん
垢版 |
2021/04/12(月) 09:13:33.97ID:A3OoULtt
あ、カタワ指向君ちーっす
2021/04/12(月) 09:15:25.81ID:yZXPyOt1
>>757
お前はイベントドリブンっていうのを知ったほうがいいよ
今の主流の開発手法。ブラウザなんかもイベントドリブンで処理する

マウスクリック、キーボード入力、タッチ、などなど
それぞれのイベントが発生し、そのイベントの中で処理を行う
それらのイベントが発生しない間に、常にボタンを監視するなんてことはしない
761デフォルトの名無しさん
垢版 |
2021/04/12(月) 09:17:10.71ID:AGjFdU+p
???

>>754
>押しっぱなしは普通キーリピートとして、何度も押したというイベントが発生するのが普通のUI

756 デフォルトの名無しさん sage 2021/04/11(日) 21:18:16.23 ID:LXnW0jT4
高橋名人だっけ?
1秒間に、18回クリックできた人

確か、これがこの当時の限界のはず
2021/04/12(月) 09:17:17.08ID:yZXPyOt1
イベントドリブンは省エネ
メインループをずっと繰り返すというのはアンチパターン
特にスマホなんかだと、そんな事するとあっという間にバッテリーが無くなる
763デフォルトの名無しさん
垢版 |
2021/04/12(月) 09:20:34.27ID:A3OoULtt
>>760
イベント知ってるからこそ
そこの落とし穴も知ってて
>>757のようなことを書いてるんだけどなー
まぁ処理落ちのことをコマ落ちとかいったり
そうした場合の処理が結構大変なのを
知らないというのも幸せなんだろうなー
2021/04/12(月) 09:22:29.29ID:yZXPyOt1
>>763
だからその落とし穴ーをお前が説明した途端
ああ、やっぱりゲームのことしか考えてないよねって思ったわけだ
765デフォルトの名無しさん
垢版 |
2021/04/12(月) 09:28:23.26ID:A3OoULtt
>>764
いんや別にゲームでなくても
画面にボタン操作が入って時間経過の概念があるものは何でもそうだよ
そうであれ、なかれ
きみの言うさいきょうのおぶじぇくとしこうではそれに対応出来ないってだけ
766デフォルトの名無しさん
垢版 |
2021/04/12(月) 09:28:42.73ID:AGjFdU+p
イベント連携機能では、発生する『イベント』と、イベントを検知したときにどう振る舞うかといった
『アクション』を事前に登録していただければ、『イベント』の発生を監視し、イベントの発生を検知したら、
事前に登録されている『アクション』を自動実行することができます。
http://a-auto50.blogspot.com/2014/11/blog-post.html?m=1

760 デフォルトの名無しさん sage 2021/04/12(月) 09:15:25.81 ID:yZXPyOt1
>>757
お前はイベントドリブンっていうのを知ったほうがいいよ
今の主流の開発手法。ブラウザなんかもイベントドリブンで処理する

マウスクリック、キーボード入力、タッチ、などなど
それぞれのイベントが発生し、そのイベントの中で処理を行う
それらのイベントが発生しない間に、常にボタンを監視するなんてことはしない
767デフォルトの名無しさん
垢版 |
2021/04/12(月) 09:55:23.61ID:A3OoULtt
>>766
うーん、リンク先見たけど
リアクティブプログラミングの話かな?
だとしたらカタワ指向君にはまだ早いし
自信損失に繋がるからやめたげて
768デフォルトの名無しさん
垢版 |
2021/04/12(月) 09:58:33.20ID:AGjFdU+p
左側の太い線で書いたループはイベントループと呼ばれ、発生するイベントを常に監視しています。そして、
ユーザがマウスを押したり、キーを押したりして何らかのイベントが発生すると、それに対応する処理を呼び
出します。各処理は自分の仕事が終わると再びイベントループに戻り、次のイベントを監視します。
http://www.ics.kagoshima-u.ac.jp/edu/ProgramingJava/Event/top.html

762 デフォルトの名無しさん sage 2021/04/12(月) 09:17:17.08 ID:yZXPyOt1
イベントドリブンは省エネ
メインループをずっと繰り返すというのはアンチパターン
特にスマホなんかだと、そんな事するとあっという間にバッテリーが無くなる
769デフォルトの名無しさん
垢版 |
2021/04/12(月) 10:10:52.76ID:A3OoULtt
>>768
これは比較的俺が言っていたのに似ているね
まぁ普通のアプリの場合(何を持って普通というのかはアレだけども)、
あんまし画面描写関係ないなら
処理単位でのループだし、さっき言った落とし穴にもはまらないからいいと思うよ
770デフォルトの名無しさん
垢版 |
2021/04/12(月) 10:33:08.50ID:AGjFdU+p
チンポから力を抜く、チンポに力を入れるという体内の『イベント』により、

>『アクション』を事前に登録していただければ、『イベント』の発生を監視し

オシッコを出す、オシッコを止めるという体外の『アクション』に繋げられる!

・・・我流なので、異論があれば何なりと!
2021/04/12(月) 10:51:42.72ID:yZXPyOt1
>>765
> 画面にボタン操作が入って時間経過の概念があっても
そこじゃない

> 処理がタイマー期間に間に合わず、次の期間にもなだれこむ場合
を気にしないといけないのがゲームぐらいしかない
2021/04/12(月) 10:53:49.34ID:yZXPyOt1
>>768
> 左側の太い線で書いたループはイベントループと呼ばれ、発生するイベントを常に監視しています。

メインループとイベントループをごっちゃにするな
イベントループはイベント(マウスボタン押下など)が発生しない限り何もせず休んでいる
ゲームのメインループは、一定間でボタンの状態をスキャンしている
全く別のものだ
2021/04/12(月) 10:55:32.60ID:yZXPyOt1
しかもそこに書いているな


> 左側の太い線で書いたループはイベントループと呼ばれ、発生するイベントを常に監視しています。
> そして、ユーザがマウスを押したり、キーを押したりして何らかのイベントが発生すると、それに対応する処理を呼び出します。
> 各処理は自分の仕事が終わると再びイベントループに戻り、次のイベントを監視します。

ユーザがマウスを押したり、キーを押したりして何らかのイベントが発生すると、それに対応する処理を呼び出します。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


> GUI部品に対してのこれらのイベントを自分で処理する必要はほとんどありません。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

> マウスやキーボードを自分で処理する必要があるのは、アプレットやキャンバス上で発生したイベントについてだけです。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
774デフォルトの名無しさん
垢版 |
2021/04/12(月) 10:59:41.18ID:A3OoULtt
>>771
さっきも書いたけど、
そうであれ、なかれ
君のカタワ指向では対応出来ないってだけ
775デフォルトの名無しさん
垢版 |
2021/04/12(月) 11:02:43.20ID:A3OoULtt
カタワ指向君大ハッスルで草
2021/04/12(月) 11:05:06.27ID:yZXPyOt1
>>767
> リアクティブプログラミングの話かな?

ぜんぜん違う。
リアクティブプログラミングはマウス等のイベントの発生をきっかけに
処理がすすんでいく(マウス等のイベントに対してイベントハンドラを設定する)

ゲーム脳が言ってるやつは、マウスのイベントではなく一定時間ごとに
自分でマウスの状態をスキャンする。タイマーがイベントとも言えるが
普通のUIはタイマーをイベントにしない。

マウスのイベントをトリガーとすればマウス操作で即座に反応できるが
しかしタイマーをイベントとしてマウスの状態をスキャンする場合
即座に反応させるためには、短い間隔のタイマーを設置しなければいけない
しかも精度の高いリアルタイムタイマーでなければならない

リアクティブプログラミングでリアルタイムタイマーをサポートしているライブラリは
おそらくないだろう。だからゲームではリアクティブプログラミングは使えず
イベントドリブンではない旧来のメインループを使うという特殊なプログラム技法を使っている

完全に概念が別なんだわ。
2021/04/12(月) 11:05:48.18ID:yZXPyOt1
>>774
> さっきも書いたけど、
> そうであれ、なかれ
> 君のカタワ指向では対応出来ないってだけ

書いてないよ。ただお前が主張してるだけで
その根拠が全く書かれていない
2021/04/12(月) 11:15:38.40ID:o1bf8P7D
イベントと状態を区別して整理できてないから落とし穴にハマってるだけだな
結局オブジェクト指向とは関係ない
2021/04/12(月) 11:18:09.51ID:yZXPyOt1
参考と言えるほどのものではないが

ゲーム開発と一般的なアプリケーション開発の違いについて
https://qiita.com/sawasaka/items/288c745b48328e76ca66#%E3%81%AA%E3%81%9C%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%AB%E3%83%BC%E3%83%97%E3%82%92%E4%BD%9C%E3%82%8B%E3%81%8B

決定的な違い
一般的なアプリケーションはイベント駆動型で
ボタンを押したり、メニューを選択した時などのアクションが発生した際に処理を行う。

ゲームは終了するまで永久に回り続けるメインループを作り
ループ内でアクションの発生を確認し、それに応じて処理を行う。
2021/04/12(月) 11:21:13.76ID:Ggr3enQ8
>>776
横からだが、イベントってのはそもそも言語やフレームワークやOSの機能だから、まずはそこを定義してないから話が噛み合わないんじゃないのか?

低レベルの部分ではハードウェア割り込みやポーリングは必要だし、キーバッファだってあるわけだから、組み込み系だったりそういうレベルでコーディングしてる人からしたらイメージしにくいのかも
2021/04/12(月) 11:22:51.88ID:yZXPyOt1
>>780
言語、フレームワーク、OS、いずれにしろイベントというのは
イベントが発生したときに、そのイベントに対応する処理を書くという点では一緒

ゲームのメインループはイベントを使わず、(以下>>779
782デフォルトの名無しさん
垢版 |
2021/04/12(月) 11:28:26.35ID:A3OoULtt
>>780
折角書いたのにね
恐らく割込みというのを知らないんだよ
ちょっとアレな人だから許してあげてね
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況