オブジェクト指向を教えてくれ!
レス数が1000を超えています。これ以上書き込みはできません。
オブジェクト指向について、調べれば調べるほど疑問が募ります。低レベルで粗末な疑問かも知れませんが、ご教授願いたいです。
・データと振る舞いをまとめる?
まとめると何か良いことあるの?
ファイルあるいはモジュールにはまとまってるよね?
丁度いい単位があるのに、何故わざわざオブジェクトという概念を導入するの?
(Javaには1ファイル1クラスという文化あるらしいけど)
・カプセル化?
モジュールのimport, exportでも実現出来るよね?
(構造体などへのアクセスを制限できれば)
・ポリモーフィズム?
別にデータと振る舞いをまとめなくても実現出来るよね?
・モノのように扱いたい?
モノとして扱いたいときに扱えば良くない? なんでわざわざ全てをオブジェクトにするの? >>897
ああそうか
例えば上、下、右、左、A、Bというボタンが合ったとして、
それらがいつ押されたとか、いつ離されたとか、どのくらいの期間押されていたかの情報を抱えるクラスだな >>898
「状態をオブジェクトにするなは昔からよく言われている」
に対して俺はそんなこと聞いたことがないと言ってる
この話に「昔からよく言われている」ことが何なのかは
一切書かれていない >>901
「ボタンを押している状態」をクラスにするというのは
「ボタンの上を押している状態」をクラスにする
「ボタンの下を押している状態」をクラスにする
「ボタンの右を押している状態」をクラスにする
「ボタンの左を押している状態」をクラスにする
「ボタンのAを押している状態」をクラスにする
「ボタンのBを押している状態」をクラスにする
ということなわけだ
ありえないだろ >>902
> 俺はそんなこと聞いたことがないと言ってる
それはどこで? >>903
なるほどそう言うことか
ありがとうカタワ指向君
なんか言いたいことがわかったよ >>904
>>887で言ってる
>>905
今なら最初の頃に指摘したこれも理解できるだろ
711 名前:デフォルトの名無しさん[sage] 投稿日:2021/04/11(日) 07:34:09.10 ID:CjAFb9gH [9/24]
答えに詰まったようだねw
ゲームのボタンっていうのはキャラクターの一種なんだわ
例えばマリオだとPスイッチは、押したら潰れて消える
持って投げられる。ベルトコンベアやバネの上で動く。
壁として障害物になる。
そういうのとUIのボタンを一緒にするのは抽象化能力が低い
ボタンという名前だから同じものだと考えてしまっている
ゲームのボタン(キャラクター)を持ち出して
UIまでキャラクターにするのはアホ >>906
そもそもクラスに当てはめるものの見解が違ってたってことだね ゲーム脳が、ゲームキャラクタとしてのボタンのことを
言っていたのか今となっては不明だが
ゲームキャラクタとしてのボタンであれば
ボタンの状態によってボタン自身の振る舞いが変わるから
これはあり得るんだよ
だが物理的なボタンの状態をクラスにするとかありえない んで、ゲームキャラクタとしてのボタンの話かと思ってりゃ
今度はボタンの状態をスキャンする話を始めたからな
こりゃ完全にゲーム脳(ゲームの設計しか知らない)だとw >>906
失礼
>> 状態をオブジェクトにするな
>> は昔からよく言われている
>
> ちなみにこれどこ界隈で言われてたんす?
> よく言われてるとのことだが聞き覚えは無いんで
これにレスくれたからってっきり>>250さん本人が
俺の疑問に回答くれてるのかと思ってたが別人だったのね
>>250
> 状態をオブジェクトにするなは昔からよく言われている
>>887
> 俺は(略)状態をクラスにするなとは言ってない >>910
そうそう。俺の主張だと勘違いされるのを防ぐためだ。 >>909
というか最初にボタンの状態をと聞いて
>>903
>>>901
>「ボタンを押している状態」をクラスにするというのは
>「ボタンの上を押している状態」をクラスにする
>「ボタンの下を押している状態」をクラスにする
>「ボタンの右を押している状態」をクラスにする
>「ボタンの左を押している状態」をクラスにする
>「ボタンのAを押している状態」をクラスにする
>「ボタンのBを押している状態」をクラスにする
>
>ということなわけだ
>ありえないだろ
これは思いつかないよ
もっとも俺の頭が堅いのかも知れんけど >>912
たぶん単に経験が乏しいんかもね
怒らないでね >>913
怒りはしないけど
アセンブラ時代からやってたところに
そう言われると凹むわー >>912
俺にとってはstateパターンを知ってるから状態をクラスにすることはあり得る
ありえるが「ボタン」の状態をクラスにすることはありえない
あるとしたらゲームのキャラクターであるボタンのことを言ってるのかと推測したが
ボタンの状態をスキャンするとかいい出したから
ゲームのメインループの話をしてるのか?と推測したわけだ
ちなみにMS-DOS時代だがアセンブラも使ってたぞ
割り込みベクタを直接書き換えてた人間に、割り込みの話をされてもなーって感じだし
ゲームは本業ではないが、昔はでべろで遊んでた
今は普通にRubyやらJavaScriptやらオブジェクト指向言語も使ってる B型プログラマ同士が卑語を交えつつマウンティングし合う大会の会場はここかな? はいそーです
マウントされたくなければ、うかつに手を出さないことだw >>916
でべろってあのPCエンジンのか
あれやってるなら
処理単体を1/60と言っていたのも頷けるわ >>918
ちなみに俺はAB型だ
だから人格破綻者だと言ったろ? アマチュアでもよく使ってたタスクシステムってやつはオブジェクト指向とは違うの? >>922
オブジェクト指向だと思うよ
最近はコンポーネント思考が主流? >>920
60fpsは単なるよく使われる割り込み単位の一つだろ?
もとはVSYNC割り込み間隔で、アナログテレビの
垂直周波数(インターフェース)が大元じゃなかったか?
その間隔でなければならない理由はないが
名残で今でもその間隔(またはその倍数)が使われてるんだと思うが >>924
今は1/120とか速いものだと1/240になっている
vsync割り込みは今でもそうだけど
でべろで言うならNMI割り込みかな >>924
PALだと50fpsになるんだよなー
海外版と通信対戦するときはフレームレートの差を気を付けないといけなかったのはいい思い出 >>925
それはディスプレイの話だよね?
映像の表示だけなら高速でもいいが
ボタンのスキャンは低い方に合わせないと
プレイが不公平になると思うが
まあ1秒間に60回以上入力できるやつなんていないから
120回読み取りにしちゃっても差はないというかもしれんがw >>927
いんや作りによりけり
例えば1Pと2Pの格闘ゲームを作ってたとして
同じフレームの処理の場合、1Pの処理を
先にするとしたら当然1Pの方が先に
攻撃を当てることが出来るけど
1Pでも2Pでもその際に逆側の攻撃が
当たってないか判定を入れるだけ。
投げる処理とかも同じ処理では違いの
位置の同期をとって行うよ そのことは実は結構大事なことで
これをしないと同時にダメージを
受けるという事象がなくなってしまう
場合があるんだよ >>929
いや、対戦じゃなくて一人プレイの場合よ
仮に連射するだけのゲームが有ったとしたら、1秒間に60回スキャンするよりも
1秒間に120回スキャンする方がが取りこぼしがないだろうけど
そもそも1/60 = 16.7ミリ秒を超えて反応出来る人はまずいないから
気にしてないのかなーって話
でも個人的感覚では人間は瞬間的な速度であれば10ms程度で
反応することは出来ると思うんだよね
昔イライラ棒(物理)を作った時の接触判定を10msのポーリングに決めた経験からw
Cバスは単純だから線つなげるだけで割り込みが使えたと思うんだけど
そこいらに転がってたLSIを再利用して適当に作ったから面倒だった。 >>930
> これをしないと同時にダメージを
> 受けるという事象がなくなってしまう
そうそう。そうなるよね。
上の方でゲームではイベントを使わない理由の一つがそれだと思ってる。
イベントで処理してしまうと、どちらかが先に反応してしまうから
だからフレームレート等の一定間隔で1Pと2Pの両方の入力が済んで
両者の計算が終わってから判定処理をするべき
ということを自分で思いついて、小学生か中学生の頃に
MSXのBASICで作った連打するだけのレースゲームで実装してたw
当時は記憶媒体がなくて電源消したら全部消える。
紙にソースコード書いてたよw >>931
それはその通りで論理的に言えば
60fpsだと1秒に30回、120fpsだと60回の
立ち上がりを検出することが出来るのかも
知れないけど、余り現実的ではないね。
映画で連打でスイカ割ってた高橋名人が
一秒間に18回って言ってたから
打てたとしてもボタンや
キーボードクラッシャーになると思うよ
そこは冗談だけど >>932
ちなみにだけど、
昔の業務用のゲームはたまーにRAMにプログラム載せてて
電池が切れると全部無くなるというのが存在するよ >>898
もともとのオブジェクト指向の意味が「“こうしろ”ってメッセージで自律行動できる単位でプログラムを区切る」だから
単なるフラグ管理レベルをオブジェクト化するのは無駄だからやめろって話だわな。
フラグ管理スペシャリストクラスが必要とかなら別だが、それはそれで設計からおかしいだろうし。
そもそもオブジェクト指向はオブジェクト指向なんか要らないローレベル処理と
オブジェクト指向設計が必要な高レベル処理を自覚して使うものだから
正直な話、処理速度重視とかならそんなとこでオブジェクト指向なんて使う必要ないのよ
それをC++とかローレベルでのパーツ使い回しにオブジェクト指向使ったから
いらんとこまで『オーブージェークーートーー!…指向!」ってなって
低レベルプログラマが発狂していまに至る。 するとチンポは自律行動できる単位なのか???
>>935
>もともとのオブジェクト指向の意味が「“こうしろ”ってメッセージで自律行動できる単位でプログラムを区切る」だから
なら話を戻すが、「チンポがシコシコする」という日本語表現は、学術的に正しいと言えるのか?
チンポ「を」シコシコするのではなくて、チンポ「が」シコシコする。この場合、「チンポ」は主語となる。
オブジェクト指向で言う「集約」は2種類あって、全体(俺)と部分(チンポ)が繋がっている場合と、
全体(俺)と部分(チンポ)が別々になっている場合とが考えられる。けれども「チンポ」はそれ自体
が独立した生き物であり、所有者の意思とは無関係に、自ら勃起して「シコシコする」。
例えば寝てる時にエロい夢みて朝起きてみたらチンコが勃起して射精してたとか。
違うか?
「胸がドキドキする」は良いが、「チンポがシコシコする」はダメな理由を、50字以内で述べろ! メッセージングはインナークラスとしてのオブジェクト指向でオシッコするときのチンポ、
>>935
>“こうしろ”ってメッセージで自律行動できる単位
『自律行動できる単位』は、サブクラスとしてのオブジェクト指向で勃起・射精するときのチンポ!
928 デフォルトの名無しさん 2018/11/21(水) 18:59:11.61 ID:8Yc2p7H1
>>922
>ナンチャッテメッセージングスタイルになったのは
チンポ.オシッコを出す
チンポ.オシッコを止める
さっきトイレでやってきた。
929 デフォルトの名無しさん 2018/11/21(水) 19:07:17.83 ID:8Yc2p7H1
>>915
>単なる動的なメソッド呼び出しをメッセージと称し、ただしコールするメソッドが見つからない場合だけメッセージを
>ハンドリングできる省コストなナンチャッテメッセージングスタイルに落ち着いた。
×
俺.オシッコを止める 俺.オシッコを出す
○
俺.チンポに力を入れる 俺.チンポから力を抜く 割込み(インタラプト)は、OSのほうで隠蔽してくれないと
オプジェクト志向とは相性が悪い。ウィンドウシステムでも、
そこはイベント駆動(イベントドリブン)ということで
なんとか押さえこんでいるわけだし。
ボタンとかキーボードとかだと、チャタリングの処理があるので、
そこは別プロセスで割込みを受けとってキューイングしてくれないと、
メインで動いていているプロセスは対処に困る。
まぁ、入力にも出力にも関わらないプロセスを立てておいて、
出力側がタイマーでそのステートを提示の割込みで見にゆくとか、
そんな実装になるんだと思うが。 577 その名前は774人います (スップ Sd22-ObUD) sage 2021/04/14(水) 00:52:35.71 ID:/qa39Aihd
https://i.imgur.com/u2RSU8j.jpg
https://i.imgur.com/kLtQspe.jpg まぁそうね、考え方は人それぞれ
俺は使い分けだと思うけど。
別にCやC++だって自分で趣味的にやるなら
一切必要ないし、ゲームの仕事してても
多数の言語選べる環境もあるし。
ただ詳しくは言えないけど
CSでゲーム作るなら「今は」C、C++は
やっておいた方がいいと思うよ。
ま、これはObject指向には余り関係ない
から気にしなくていいよ。聞き流して。 コールバック関数というのがあって
常にデバイスをみてるOSやデバイスドライバに
コールバック関数を登録すると
データを渡してくれる
自分で作ったコールバック関数が実行される >>941
詳しそうだね。その登録するときに使う
関数名は言えるかい? 同時判定って本当に同時だったっけ?
投げは絶対に同時発生しないんだから、どっちか優先だよね?(オブジェクト指向関係ない)
ボタン入力を1ビットづつ読み出し中に分岐して処理したりはしないけど、大体2P側不利にならない?(オブジェクト指向関係ない) 割込みベクタ書き換えて、自前の処理の最後に元の飛び先への分岐も入れとく感じかな?
IOCSに自分でパッチあてたりとか(なんの機種の話だ) >>943
ベストをつくしたいのかもしれないけど
遅延とか普通なのに同時を
判定するのは意味ないような なんかスレ伸び速杉(笑)
昔は CPU が遅かったので、30 FPS としたら
33ms の奪いあいだったわけだが、
現在はプロセッサは速いわ I/O 周りのチップ
(出力側のグラフィックも含めて)は
充実してるわで、 60 FPS でも
16.7 ms の分配ということになる。
しかも最近は CRT じゃなくてディジタル表示なので、
リフレッシュタイムとかは表示側のプロセッサに
丸投げできる(とにかくグラフィック・メモリに描いてあれば
表示してくれるわけだから)。
>>940
> CSでゲーム作るなら「今は」C、C++は
>やっておいた方がいいと思うよ。
同意見ではあるのだが、
アセンブラ →〔マクロプリプロセッサ〕→ マクロアセンブラ →
〔C コンパイラ〕→ C 言語 →〔プリプロセッサ?コンパイラ?〕→
C++
という構造を踏まえたうえで、OS とか 制禦とかについて、理解して
もらいたいと思う。
とはいえ、ぶっちゃけこのあたりの話は「オブジェクト志向」では
隠蔽するのがお約束なので、もはやオカルトになってしまう。
C++を「オブジェクト志向」と呼ぶのは、正直いかがなものか、
と思う。 >>943
それも作りによりけり
1P側有利になっているものもあれば
はじき合うように作られてるものもあれば
投げを奪い合うように作られてるのもあるよ
投げを奪い合うものというのは
ちょっと説明しにくいけど組み合う形になって
その後、操作のタイミングとか、連打回数とか
そういう本来の投げの動作と違う動作になって
投げ勝ち負けの判定をするタイプのもの。
でも実際は通信対戦とかすると
僅かにラグが発生したりするので
その辺は多少は許容するという
暗黙の了解があるみたい。
最近「ラグい」って言葉を聞くことない?
あれはそのラグが酷くて文句を垂れてる
ときの言葉なんだ。 >>950
最近でばその矢印の指すC++の後ろにUnityが控えてたりもするね。
C++は痒いところに手が届く反面、多重継承が使えたり戻り値の参照渡しが使えたり
ポインタの概念があったりするある意味Object指向言語の中では
かなり特殊な立ち位置にいるものと言えるだろうね。
とは言え、OSの話はおいとくとしても
他の言語にもあるようなLinqやラムダ式も
果たしてObject指向の概念と言えるのか
ってのもあったりするからね。 >>952
Unity よりは Unreal なんじゃないかと
ソシャゲは Unity が多いけど、コンソールは Unreal だな >>948
あまり虐めてあげるな
コールバックは概念的なところが大きいから
使う言語やシチュエーションによっても行い方が変わるの分かっててそれ聞いているんでしょ?
>>941
とりあえずこれ読んどけば?
イベントもコールバックの一種だって事が分かるよ
https://docs.microsoft.com/ja-jp/dotnet/standard/design-guidelines/events-and-callbacks
こんな感じで実施する前のメソッドの参照渡しておくのもコールバックだし
リフレクションとかもコールバック
VBA(旧VB6)とかはObjectの場合はCallbyName使ったりObjectでない場合はAPI使ったり
使い分けしなければいけない場合も出てくるし
ポインタの概念があるものは関数ポインタに設定して飛ばしたりするし、
アセンブラの場合はあらかじめワークエリアにアドレス設定してジャンプ命令でそのアドレス目掛けて飛んだりとか
コールバックについて言語やメソッド、あるいは関数単位で説明すると切りがないよ。 >>952
最初からオブジェクト指向なんてラベルはどうでもいいだけだ
C++の目標はかなり初期からゼロコスト抽象の追求だろうし
最近の言語は役に立つなら何でも取り入れている >>956
>最初からオブジェクト指向なんてラベルはどうでもいいだけだ
>C++の目標はかなり初期からゼロコスト抽象の追求だろうし
うーん、そうだねぇ
俺もそういう一面で考えることもあるけど
デザインパターンなんかは結局今まで色々苦労してやってきた人達の足跡みたいなもんだし
それを疎かにしてもいいのかなって一面もある。
結局使いどこかなーとも思ってるけど
それに対して結論を出せるほど実力がある訳じゃないんだ。ごねんね。
>最近の言語は役に立つなら何でも取り入れている
これは素晴らしいことだと思うよ。
この間から話してたCやC++なんか細かいところをその気になればどうとでも作れるフニャフニャな感じなものと真逆で
ゲーム開発でもとある理由からガッチガチなものも存在するから色んなものに対応出来るのはゲーム脳でじじいで頭の硬くなった俺からしても
羨ましい限りだよ。 このガッチガチのっていうのは
OSにも関係のあることなんだけど
その内クロスプラットフォームの話でも
出て来たときに話せればいいかなって思ってるよ >>959
ちなみにC#だとどんなイメージになるの? まぁでもこれはこれで面白い考えだね
だけどみんなはどう思っているのかな?
ちょっとスレ立てて聞いてみるかな 人というスーパークラスを
男性クラス
チンポクラス
女性クラス
が継承してる 人クラスはシコシコするというメソッドしか持っていない
男性もチンポも女性もみんなシコシコする オシッコはインナークラス、勃起と射精はサブクラス。後者の場合は『人格を性欲に乗っ取られる』時で、
これはクリントンそのものを再定義するしかない。人工知能や自然言語処理では多重継承が大切。
250 デフォルトの名無しさん sage 2021/03/21(日) 16:00:54.94 ID:rWfpUSZ4
状態をオブジェクトにするな
は昔からよく言われている
「ボタンを押している状態」
をクラスにしてしまうと
プログラムが無茶無茶になる
「モノ」をオブジェクトにする
これがオブジェクト指向の本質
829 デフォルトの名無しさん 2018/11/11(日) 09:52:59.70 ID:y84pWKv0
(第1章 はじめに 2頁)
たとえば、CycはFredという名前の男が朝にひげをそるという話が理解できなかった。
Cycの推論エンジンは、この話の中に矛盾を見つけた。Cycは人間には電気の部品がないことは知っているが、
Fredが電気カミソリを持っていたので、エンティティ「Fredがひげそり中(FredWhileShaving)」
には電気の部品が含まれていると考えた。したがって、CycはFredがひげをそっている間、
Fredはそれでも人間なのかと尋ねた。
『深層学習』
著者:
Ian Goodfellow, イアングッドフェロー,
Yoshua Bengio, ヨシュアベンジオ,
Aaron Courville, アーロンカービル >>966
クラス名は名詞だけと言うよね
チンポも名詞だからクラス チンポ【が】シコシコするという『世界の真理』、これこそがオブジェクト指向の新たなるパラダイムなのだ! オブジェクト指向をクリアに説明してあるサイトがない
ということからオブジェクト指向はクリアに説明できないのだろう
他の概念はうまく説明しているサイトがある > 他の概念はうまく説明しているサイトがある
どこどこ? >>975
>あわしろ氏:「不随意運動、ハイ論破」
そして、トイレへ行き尿を出そうと思うと、脳が「出してよい」という信号を送ります。ここで副交感神経が
主にはたらき、尿道の筋肉がゆるみ、反対に膀胱の筋肉は締まって尿を押し出し、尿が排出されるのです。
健康な成人では、1回の排尿量は300ミリリットルほどで、約30秒で膀胱が空っぽになるのが普通です。
https://www.hainyou.com/sp/m/mechanism/ >>974
>ということからオブジェクト指向はクリアに説明できないのだろう
class チンポ extends クリントン{
super.不適切な関係;
}
クリントンーーーーーーーーーー
┃ ┃
┃ ┃
┃ ┃
┃ ┃
┃ ┃
ーーーーーーーーーーーーーーー
┃チンポ┃
 ̄ ̄ ̄ ̄
『人格を性欲に乗っ取られる』、つまりクリントンはチンポに人格を乗っ取られて、チンポにシコられてしまった! つまりあわしろ氏と人とチンポは
Is a 関係が成立するのである >>970
つまらないどころかオブジェクト指向の要素抜きでプログラム組むのはオブジェクト指向型言語以外でも苦行だ
900レス以上のスレになってもまだ理解及ばないアホがいるんだな。マジクソスレ >>981
オブジェクト指向は俺の股間に付いているから、オブジェクト指向言語は要らないよ? 「〜を教えてくれ!」というスレッドができる→マウントおじさんが大集合する→マウントおじさんをからかうガイジも集合する→クソスレになる >>950 だが、
「オブジェクト志向」というと、「下位オブジェクトにメッセージを投げると
返ってくる」というイメージがどうしてもつきまとうんだよな。
それを考えると、「main」の扱いがけっこう難しくなると思われる
(まぁ、Java 限定の話かもしれないが)。
「それぞれのオブジェクト間の相互作用」を上位で見守っているクラスがあり、
たとえば C 言語のような「広域変数」をシングルトン実装するのが
上位オブジェクトの役割かもしれない。 ところで、次スレはどうする?
「チンポシコシコ」が無駄にスレを伸ばしているわけだが、
肝心の「オブジェクト志向」(昔は「算体志向言語」と呼んだものだが)に
ついては、あまり議論が進んでいないように思う。
誰か「算体志向を教えてくれ!」とかいったスレでも立ててくれんかな。 >>987
>「チンポシコシコ」が無駄にスレを伸ばしているわけだが、
「オブジェクト指向」について、他にわかりやすい説明をしてみろ! >>991
じゃあ「チンポシコシコ」の話をやめて
人の話を聞いてくれるか? >>993
こんなところにまで来て
あわしろ教で荒らすな >>992
なら「オブジェクト指向」について、自分の言葉で語れよ! レス数が1000を超えています。これ以上書き込みはできません。