■ このスレッドは過去ログ倉庫に格納されています
今年はプログラム勉強してゲームつくるよ!
- 1 :以下、?ちゃんねるからVIPがお送りします:2020/02/14(金) 21:32:40.362 ID:aTTYB2Uk0St.V.net
- 現在26日目だよ!!
開発環境
MacBook 12インチ
unity
VSCode
コードはここ
https://github.com/himajin-vip/test2
現在の進捗状況
https://unityroom.com/games/rensyuu
動画とか
https://Twitter.com/xPf19p
(deleted an unsolicited ad)
- 2 :以下、?ちゃんねるからVIPがお送りします:2020/02/14(金) 21:33:30.361 ID:aTTYB2Uk0St.V.net
- intやstringをラップしたらDictionaryがめちゃくちゃ使いにくくなったから全部つくりなおすよ!!
- 3 :以下、?ちゃんねるからVIPがお送りします:2020/02/14(金) 21:34:42.306 ID:FosWWFN40St.V.net
- 毎日続けててえらいですね
継続してると結果がでます
- 4 :以下、?ちゃんねるからVIPがお送りします:2020/02/14(金) 21:34:45.138 ID:aTTYB2Uk0St.V.net
- DictionaryのKeyにintの値を持つだけのクラスAを入れたとしてvalueの追加ってどうやったらいいの??
- 5 :以下、?ちゃんねるからVIPがお送りします:2020/02/14(金) 21:35:22.935 ID:aTTYB2Uk0St.V.net
- >>3
ありがとう!
- 6 :転がりマン :2020/02/14(金) 21:40:54.103 ID:q+9aZIgI0St.V.net
- お前がスレ立ててくれるおかげでさぁやるかって気になってるみたいなとこある
がんばろ
- 7 :以下、?ちゃんねるからVIPがお送りします:2020/02/14(金) 21:41:00.868 ID:aTTYB2Uk0St.V.net
- やっぱむりっぽいなDictionaryはつかうのやめよ、、、、
- 8 :以下、?ちゃんねるからVIPがお送りします:2020/02/14(金) 21:41:09.656 ID:aTTYB2Uk0St.V.net
- >>6
がんばろうね!!
- 9 :以下、?ちゃんねるからVIPがお送りします:2020/02/14(金) 21:42:07.494 ID:aTTYB2Uk0St.V.net
- 車輪の再開発なんだろうなぁ
- 10 :転がりマン :2020/02/14(金) 21:43:57.889 ID:q+9aZIgI0St.V.net
- dictionaryのキーに参照系の型を設定する発想なかったなぁ
ちゃんと取り出せなくなるのか
- 11 :以下、?ちゃんねるからVIPがお送りします:2020/02/14(金) 21:48:48.320 ID:9KjTsPWbdSt.V.net
- 車輪の再開発せずに成長した奴はいねぇ
ドンドンやれ
- 12 :以下、?ちゃんねるからVIPがお送りします:2020/02/14(金) 21:58:19.910 ID:aTTYB2Uk0St.V.net
- >>10
そうなんだよね
オブジェクト指向エクササイズですべてをラップしてるんだけどそこが大変だった
>>11
ありがとう!
- 13 :以下、?ちゃんねるからVIPがお送りします:2020/02/14(金) 21:59:22.719 ID:aTTYB2Uk0St.V.net
- って事でDictionaryをつかうのをやめていままでのキーとバリューをもったクラスを作ってリストで管理する事にしたよ!
- 14 :転がりマン :2020/02/14(金) 22:01:28.032 ID:q+9aZIgI0.net
- なんで今までキーがオブジェクトのdictionary作らなかったんだろと考えてみたら
フィールドにオブジェクトのキーと値を持った自作クラスのリストを使ってたからだった
取り出しやすさが違うか
- 15 :転がりマン :2020/02/14(金) 22:01:48.597 ID:q+9aZIgI0.net
- 同じこと書いてあったw
- 16 :以下、?ちゃんねるからVIPがお送りします:2020/02/14(金) 22:04:29.611 ID:aTTYB2Uk0.net
- >>15
たどりつくところは同じなのかもですねwwww
- 17 :以下、?ちゃんねるからVIPがお送りします:2020/02/14(金) 22:12:23.962 ID:Gr6xMcHUd.net
- 今日も頑張ってるなぁ
- 18 :以下、?ちゃんねるからVIPがお送りします:2020/02/14(金) 22:17:58.393 ID:aTTYB2Uk0.net
- >>17
頑張ってるよ!
- 19 :以下、?ちゃんねるからVIPがお送りします:2020/02/14(金) 22:43:43.612 ID:aTTYB2Uk0.net
- たのちい
- 20 :以下、?ちゃんねるからVIPがお送りします:2020/02/14(金) 22:48:05.254 ID:+BU2rJOI0.net
- listとかdictionaryにstatic付けられるのってどゆことなんだ
予めメモリ確保しまくってるの?ヤバくね?
- 21 :以下、?ちゃんねるからVIPがお送りします:2020/02/14(金) 22:57:04.129 ID:aTTYB2Uk0.net
- >>20
どゆこと?
- 22 :以下、?ちゃんねるからVIPがお送りします:2020/02/14(金) 23:11:27.273 ID:+BU2rJOI0.net
- >>21
静的なのに要素の出し入れできるの不思議だなあって
何か認識が間違ってるかもしれんが
- 23 :以下、?ちゃんねるからVIPがお送りします:2020/02/14(金) 23:26:03.899 ID:aTTYB2Uk0.net
- >>22
ふむ、、、自分がstaticの認識をまちがってるかもしれない、、、、
- 24 :以下、?ちゃんねるからVIPがお送りします:2020/02/14(金) 23:26:59.552 ID:aTTYB2Uk0.net
- >>22
ちなみにどこのことですか??
- 25 :以下、?ちゃんねるからVIPがお送りします:2020/02/14(金) 23:31:26.198 ID:+BU2rJOI0.net
- あ、いやすまんこないだ自分で書いてて抱えた疑問書いてみただけなんだ
- 26 :以下、?ちゃんねるからVIPがお送りします:2020/02/14(金) 23:34:47.729 ID:+BU2rJOI0.net
- そらこのスレに書いたら>>1のソースについて言ってると思うわな
ミスった
- 27 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 00:01:08.246 ID:DYnmRO/K0.net
- Cの教プロとか
最悪計算量のメモリ確保するけど
C#のディクショナリってHashMapみたいなもので認識あってるなら
最低限のメモリしか確保されなくない?
- 28 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 00:12:53.390 ID:6mQufTaZ0.net
- >>26
あっそういうことですね!
自分もリストとかstaticでもたせてるので考えさせられました!
- 29 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 00:13:35.589 ID:6mQufTaZ0.net
- >>27
メモリの事はわかんないけど勝手に増やしたり減らしたりしてくれてると思いたい、、、、
- 30 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 00:14:32.255 ID:DYnmRO/K0.net
- メモリリークか!
- 31 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 00:31:37.931 ID:6mQufTaZ0.net
- >>30
メモリまったくわかんないや
- 32 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 00:33:07.874 ID:R2NUkrrE0.net
- ハッシュマップは要素を自動生成してくれる便利ちゃんだぞ
- 33 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 00:33:54.765 ID:6mQufTaZ0.net
- オブジェクト指向エクササイズやってみてるけどすごくたのしい
- 34 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 00:39:05.315 ID:6mQufTaZ0.net
- インベントリクラスがどんどんかわっていくわ、、、
- 35 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 00:42:17.870 ID:6mQufTaZ0.net
- ああああああRemoveどうしたらいいんやああああああああ
- 36 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 00:44:06.889 ID:6mQufTaZ0.net
- RemoveRangeを手に入れた!!!!
- 37 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 00:52:50 ID:dZ6s55gg0.net
- 俺は一週間なにもしないで過ごした間に6日くらいすすんでる
応援してる
- 38 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 00:57:23 ID:6mQufTaZ0.net
- >>37
休息も大切だよ!!
ありがとう!
- 39 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 01:04:32.768 ID:6mQufTaZ0.net
- しつもんです!
アイテムを保管するインベントリを持ったインベントリコントローラークラスがあってアイテムを入れたりだしたりっていろんなところでするから
インベントリをstaticにしてインベントリコントローラークラスを継承した操作用のクラスを作ってるんだけどおかしいことしてる?
- 40 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 01:11:56.730 ID:liAW4KrCM.net
- >>4
いまさらだけどこれってどんなコードでvalue追加しようとしてダメだったの?
- 41 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 01:12:12.380 ID:R2NUkrrE0.net
- インベントリーコントローラーがインベントリーをコントロールしてないのは違和感あるな
- 42 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 01:22:04.807 ID:6mQufTaZ0.net
- >>40
えっとたとえばintのフィールドをもったクラスAをキーにしてたとして
Dictionary[ここなにいれるの?]+=addvalue
わかるかな??
- 43 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 01:22:36.452 ID:6mQufTaZ0.net
- >>41
継承してるから継承先もインベントリコントローラーだよってかんがえてるんだけどおかしいかな??
- 44 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 01:23:47.019 ID:6mQufTaZ0.net
- 用はインベントリコントローラーを継承した追加する人、削除する人みたいにクラスをわけようとおもってるんだよね、それならインベントリコントローラークラスにメソッドとして全部持たせてもいいんだけどどっちがいいかな?
- 45 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 01:40:15 ID:nWtOzOCqM.net
- やっぱ変なことしてんのかなぁ、、、
- 46 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 01:40:34 ID:nWtOzOCqM.net
- あれIDかわった
- 47 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 01:41:43 ID:y1dH28U+0.net
- すごいな
全然わからんけど頑張ってくれ!
- 48 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 01:44:11 ID:6mQufTaZ0.net
- >>47
ありがとう!
- 49 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 01:47:26 ID:wyQlVcZvM.net
- >>42
なるほどどうも
これなら同一オブジェクトの参照をわたす必要があるからキーに使ったオブジェクト自体も管理しないといけないから面倒ですね
intの値が同じなら取り出すってやりたいならequalsメソッドをオーバーライドとかかな
- 50 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 01:51:34 ID:6mQufTaZ0.net
- >>49
大変ですよね、、、だからDictionaryつかうのをやめてListにしました!!
- 51 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 01:52:32 ID:6mQufTaZ0.net
- >>49
もともと有る物をオーバーライドするって考えはなかったですね、、、、、
- 52 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 01:53:06.365 ID:6mQufTaZ0.net
- きっとものすごい車輪の再開発やってるけど勉強だし気にしない!
- 53 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 02:05:02 ID:6mQufTaZ0.net
- とりあえずインベントリクラスは完成かなぁ
- 54 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 02:06:00 ID:6mQufTaZ0.net
- intをラップしただけでこんなに大変とは思わなかったよ、、、暇な人がいたらコードレビューおなしゃす、、、
- 55 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 02:18:58 ID:1JpW8VGNM.net
- >>51
ちょっと調べたらIEqualityComparerを実装してdictionary作るときに渡すのが正しいようです
テキトー言ってすんません
https://docs.microsoft.com/ja-jp/dotnet/api/system.collections.generic.iequalitycomparer-1?view=netframework-4.8
- 56 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 02:21:02 ID:6mQufTaZ0.net
- >>55
こんなのがあったのか、、、、、、わざわざありがとうございます!!
- 57 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 02:23:21 ID:6mQufTaZ0.net
- ただprayfabに格納するためにTojsonがDictionaryに対応してないからどちらにしろListにしないとなぁとは思ってたしよしとしよう、、、、
- 58 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 02:29:59 ID:6mQufTaZ0.net
- ただラップされたクラスを持ってるリストをちゃんとtojsonしてくれるのかなぁ、、、、ちょっと試してみよう
- 59 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 02:31:57 ID:p9d0kdEl0.net
- 秋葉原昭和口のマクドナルドが閉店、お隣のバーガーキングからもお別れコメントが→感動と思いきや、ド畜生すぎる隠しメッセージ。
http://jicomy.negociar.org/k532kn4/py6f305vd621aa.html
- 60 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 02:33:13 ID:6mQufTaZ0.net
- やっぱだめかああああああああああ
- 61 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 02:36:15 ID:6mQufTaZ0.net
- ってことは端からひとつづつJson化していくしかないか、、、、
- 62 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 02:39:49.598 ID:6mQufTaZ0.net
- あれ、、、、なんか違うな
- 63 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 02:44:57 ID:6mQufTaZ0.net
- ふむパブリックかつint とかStringみたいなそのままの値じゃないとだめなのか
- 64 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 02:45:22 ID:6mQufTaZ0.net
- パブリックかぁ、、、、、
- 65 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 02:45:57 ID:6mQufTaZ0.net
- やっぱそうなるとSavedataクラス作ってそこに値を全部ぶち込むしかないよなぁ
- 66 :転がりマン ◆KCMJNs5qa6 :2020/02/15(土) 02:50:37 ID:bItSl10j0.net
- unityのjson化融通効かないよなぁdictionary使いたすぎる
いろいろライブラリ試したけどこれってのがなかったから結局セーブ用のアセットポチってしまった
- 67 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 02:53:14 ID:6mQufTaZ0.net
- >>66
もうちょっと気軽にぶち込ませて欲しいよね、、、、
- 68 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 03:01:40 ID:6mQufTaZ0.net
- 引数のListの型ってスーパークラス指定しててもサブクラスのListは受け付けてくれないんだ、、、、、、
- 69 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 03:06:00 ID:6mQufTaZ0.net
- んースーパークラスに変えるクラスを用意するべきかそもそものリストをスーパークラスで作るか、、、
スーパークラスで作ってもいいんだけどコード読むときにそのリストがなに入れてるか分かりにくい気がするけどそんなことないのかな?
- 70 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 03:18:40 ID:6mQufTaZ0.net
- ああああラップするとクラスで受け渡しするから参照なのかコピーなのか気をつけないといけないな!
- 71 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 03:19:18 ID:6mQufTaZ0.net
- まじでオブジェクト指向エクササイズ大変だけどプログラムで気をつけるところとか分かってくるし勉強にはいいと思う!!
- 72 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 03:25:58 ID:6mQufTaZ0.net
- 受けを広くしろってよくみるけど引数はスーパークラスにして内部で本当にほしいクラスか判断して動作するようにしたらいいのかなぁ?
- 73 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 03:42:03 ID:XJrU1eHm0.net
- チミもがんばってるのかね
- 74 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 03:49:05 ID:6mQufTaZ0.net
- >>73
頑張ってるよ!!
- 75 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 03:52:14 ID:6mQufTaZ0.net
- Unityでスクリプトつくると勝手につくられるusingって使ってないなら消した方がいいのかな?
- 76 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 03:57:55.400 ID:WPjSP1iO0.net
- 久々に見たわ
やめたかと思った
- 77 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 04:05:05 ID:6mQufTaZ0.net
- >>76
えっほぼ毎日やってるよ!!
- 78 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 04:05:49 ID:WPjSP1iO0.net
- >>77
ここ一週間見かけなかったけど…
スレ見逃してただけかな
- 79 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 04:13:09 ID:6mQufTaZ0.net
- >>78
時間が合わなかったのかもね!!
気にしてくれててうれしい!!
- 80 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 04:14:16 ID:XJrU1eHm0.net
- そういやワシUNITYしらんしC#も3.5以来触ってないやw
- 81 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 04:19:28 ID:6mQufTaZ0.net
- >>80
楽しいですよ!!
プログラムやってる人なんですね!
- 82 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 04:33:19 ID:XJrU1eHm0.net
- 空気よまずにいうとデータフローに使う構造体やクラスはとりあえずラップしときゃええんちゃうの?
そんで実体はDictionaryで合成してもたせれば?
別途インターフェースで窓口定義して、それを実装させて
コントローラにはその型で入出力するようにしてさ
必要な窓口は挿入削除参照インポートエクスポートくらいやろうし
そのラッパーをアダプタにしていろいろな不都合吸収させればよろし
- 83 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 04:36:13 ID:6mQufTaZ0.net
- >>82
ひええええなんかわかりそうでわからない初心者脳でごめんなさい、、、
- 84 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 04:38:42 ID:6mQufTaZ0.net
- ちょっと話それるかもしれないけど最近オブジェクト指向勉強しててインターフェースで窓口的なのよくみるけどこのインターフェースってInterfaceのことなの?
それともクラスとクラスをつなぐ時に直接触らせると依存がうまれるから入出力用にクッションクラス的なのを作れってこと?
- 85 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 04:39:17 ID:6mQufTaZ0.net
- ちなみに今は下の考えでコードかいてる
- 86 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 04:41:49.130 ID:6mQufTaZ0.net
- そろそろ1ヶ月になりそうなのにまだ全然だな、、、、、、
- 87 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 04:48:58.650 ID:6mQufTaZ0.net
- んーなんかぐるぐるしてんなぁ
- 88 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 04:49:44.229 ID:6mQufTaZ0.net
- フィールドだけのクラスって作ってもいいの?
- 89 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 04:49:51.964 ID:XJrU1eHm0.net
- >>84
構文はしっかり忘れたけどメンバの定義のみ列挙したやつやったらたぶんせやで
クラスにインターフェースをインプリメントしとけば、
利用側はインターフェースの型で入出力できるで
つまりインターフェースをインプリメントさえしとけば
当該クラスの実装内容はなんでもええから簡単に差し替えられる
型による結合を弱めることがでけるわけやねー
しかしデータの形式による不都合のアジャストはクラス内で実際に実装するけどねー
たいがいはラッパークラスにするよん
継承は全体像が固まってからにしないと逆にクラス間結合あげてしまうから慎重にー
- 90 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 04:50:09.751 ID:6mQufTaZ0.net
- あっやっぱちがうわ
- 91 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 04:51:51.063 ID:XJrU1eHm0.net
- >>88
それやとただの構造体やけど普通にバリデータ入れなきゃってなって
あとでクラスになるけどなw
- 92 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 04:52:52.261 ID:6mQufTaZ0.net
- >>89
なんとなくわかるけどわかんない、、、ちなみにもし時間あるならいまinventoryクラスをリファクタリングしたところだからみてくれるとすごくうれしい
- 93 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 04:56:35 ID:XJrU1eHm0.net
- なんやしらんけどDictionaryでほぼ要件満たしてるけど
オブジェクト型だと強制的に参照扱いになって困るでーってことなら
Dictionaryラップしてアクセスに必要な窓口つくって
そこで参照や挿入時にオブジェクト型から実体とりだして
合成したDictionaryにわたせばええやんと思うたわけや
- 94 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 04:59:45 ID:6mQufTaZ0.net
- >>93
あっそれならわかった!!
そゆことか!
もともとそんな感じでつくってたんだけどオブジェクト指向エクササイズってやつにすべてのプリミティブ型と文字列型をラップすることってあったからちょっと悩んでたんですよね、、、
- 95 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 05:00:31 ID:6mQufTaZ0.net
- まあ臨機応変にやればいいのは分かってるけど勉強の為だからちょっと無理矢理でもやってみようかなってやってます
- 96 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 05:09:26 ID:6mQufTaZ0.net
- >>39
>>44
ここら辺だれか教えてほちい
- 97 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 05:11:42 ID:6mQufTaZ0.net
- 値を持たせるところがそもそも違うのかなぁ
- 98 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 05:13:14 ID:6mQufTaZ0.net
- なんだかそんな気がしてきたよ
- 99 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 05:14:10 ID:XJrU1eHm0.net
- >>94
別に他のクラス間でのデーターフローではラップしたやつつこうててもええんよ
すべて参照型にしといたほうが全体での凡ミスも減るやろしな
単純にアダプタの役割を扱うクラス内で中継するときに
入力時にプリミティブラッパーから値をとりだして渡し
出力時に再びプリミティブラッパーに戻して渡す処理をするだけのことで
アダプタクラスってそういう役割のもんやから
契約単位外のサードパーティのライブラリが全体の設計思想にあわないときに
外部との境界となって結合する役割やからねー→Adapter
MFCやATLといったウ●コを扱うときはセオリーやったんよw
これは契約単位の境界に使うセオリーともいえるパターンやからまぁ参考程度に
- 100 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 05:19:59 ID:6mQufTaZ0.net
- >>99
めちゃくちゃわかりやすい!
データの入出力の窓口で取り出したりラップしたりすればデータフローの末端ではラップしなくてもいいって事かな!検討違いのこといってたらごめんよ!
- 101 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 05:21:40 ID:6mQufTaZ0.net
- 問題はその窓口の作り方がよくわかんないんだよなClassAとClassBをつなぐ窓口をつくるインターフェースをちゃんと作りましょうはわかるんだけど実際の実装をどうやったらいいのかわかんない
- 102 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 05:23:00 ID:6mQufTaZ0.net
- 自分のなかでプログラムがトップダウン的なイメージだからクラスをつなぐっていう横の繋がりのイメージが全く持てない
- 103 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 05:24:01 ID:XJrU1eHm0.net
- >>96
とりあえずSingletonにしときゃいいんじゃないの?
仮想マシン上で動くアーキテクチャの場合staticによる恩恵はほとんどないし
staticだとマルチタスクになった瞬間ほぼ詰むし
データ構造がわからんしデータをどういう分類してるのかわからんけど、
ヘルパー作ってそれ経由で操作ってのはよくやるで、
あまりにも種類が膨大で窓口が大量だったら、
各々のデータオブジェクトに共通のインターフェースをもたせて、
データオブジェクトを返してそのデータオブジェクトを触らせるというパターン
インターフェースが共通なので操作方法は一緒なので利用側はとくに何クラスなのか
意識する必要はなっしんぐ
- 104 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 05:27:38 ID:6mQufTaZ0.net
- >>103
マジでお友達になってください、、、
ちょっと今の自分には全部は理解できないけど多分インターフェースを理解できてないのが問題なんだとおもった
- 105 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 05:29:48 ID:6mQufTaZ0.net
- >>1
githubにあげてるからみてくれないかなぁ、、、、、、
- 106 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 05:34:47 ID:6mQufTaZ0.net
- やばい全然わかんねーわ
- 107 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 05:38:41.736 ID:6mQufTaZ0.net
- Unityで勉強してるのが悪いのか、、、
- 108 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 05:45:56 ID:XJrU1eHm0.net
- >>104
Interface IHoge
にaddメソッドのシグネチャが定義されている場合、
それを実装したCFugaクラスやCPiyoクラスの実体は
IHoge型でうけとる(キャストする)ことができんねん
そしてそのIHoge型にキャストされた実態からはaddメソッドがよべるわけだす
つまりデータ入出力のようなきまった振る舞いの場合は、
必要な振る舞いはほぼ決まってるのでクラス内で
ファイルにおとそうがネットワークにおとそうが操作側からは
データを追加!っていう事実がわかってればいいわけだす
その先が武器集合であろうと防具集合だろうと
操作側は追加!や削除!という態様でいいわけでね
Interface 集合
void 追加
class 武器集合 implements 集合
void 追加 {実装色々}
みたいな感じ?
- 109 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 05:51:44 ID:XJrU1eHm0.net
- 分類が少ない場合
[caller] ⇔ [helper] ⇔ [ctrl] ⇔ [ datas ]
分類が多い場合(helperがゴッドクラスになりそうなとき)
[caller] ⇔ [helper] ⇔ [ datas ]
← [ datas extends ctrlimp or implement ictrl]
こんな感じ?
- 110 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 05:52:12 ID:6mQufTaZ0.net
- >>108
interfaceを使えばそれができるってのはなんとなく理解しててそれでステートマシン作ってみたりはしてるんだけど他の使い道がよくわかんないんだよねとくにクッションクラス的なものとインターフェースの繋がりがさっぱりわかんない
- 111 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 05:53:45 ID:6mQufTaZ0.net
- そもそもの話なんだけどインベントリみたいに色んなところから参照したいクラスをstatic意外でどうやって実装したらいいのかわからない
- 112 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 05:54:01 ID:6mQufTaZ0.net
- static以外で、、、、
- 113 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 06:01:19.958 ID:DYnmRO/K0.net
- webの設計だとflexって言うのがあって
Store→View→Action(→Store)
でっかいStore→View
表示されてる全ては一つのデータツリーから表現される
Action(ボタン押す)→Store更新
ロジックがここに分離される
- 114 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 06:01:36.263 ID:XJrU1eHm0.net
- >>111
UNITYがちょっとよくわからんけどたぶんアプリケーションフレームワークになってて、
プラグインのようにハメこんでいくものと過程すると
実行エンジンがイベントなりでコールバックをコールしたときコンテキストをマップなりで受け取れるようにしてるはず
それに習って頻繁に使うデータ構造はコンテキストオブジェクトの中のメンバとして内包しておくってのもテンプレやね
で、大元となる全体を制御するコントローラクラスがコールバック呼び出すときに、
引数なりでコンテキストオブジェクトを渡してやると
Win32のようにデバイスコンテキスト取得する静的窓口用意してもいいけど
こっちの方式は古典的になりつつあるかも
- 115 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 06:01:53.108 ID:6mQufTaZ0.net
- 最初に全部newしてSetUp的なメソッドの引数で必要なクラスを全部引数としてもたせればいいのかな、、、、
- 116 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 06:02:23.148 ID:DYnmRO/K0.net
- つまり現在どっかからアクセスされる可能性があるデータは一箇所がロードして管理してるほうがいいのかな
MVCって設計だとControllerって役割かな
- 117 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 06:04:18 ID:DYnmRO/K0.net
- そろそろ「Unity game Best practice」とか「unity game asesome」とかでオープンソース読んだらどんどん吸収できる時期なんじゃないの
- 118 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 06:09:01 ID:6mQufTaZ0.net
- ふむ、、、えっと今考えてるのがUnityではGamemanagerクラスって特別なクラスがあってどこからでも参照できるクラスがあるんだよねそこに全てのデータを持たせておいてGamemanager.ほにゃららで操作するのがいいのか
それとも起動時にGamemanagerのStartメソッドが呼ばれるからそこでデータ管理系のクラスを全部インスタンス化してしまってお互いに必要なものを参照渡ししあって自信のメンバにして操作するか
なんだけど、、、、
- 119 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 06:10:07 ID:6mQufTaZ0.net
- >>117
そうなのかなぁ、、、多分めっちゃ基礎的な部分ができてないんじゃないかと思ってきたよ、、、、
- 120 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 06:12:17 ID:XJrU1eHm0.net
- >>110
ラッパーは、基本契約単位外との入出力時の橋渡しに使う感じかねえ
そういう規約にしてるとこはおおいかんじ。三●グループではそうやった
つまり接続先の内部にたちいったり管理することが不可能な場合は
力技が効き接続先に明らかなバグがあっても
バグを前提に接続させることができるし契約単位内と完全分離できるから
2000年代のWinServはほんとクソだったから境界ほぼこのパティーンで実装されてる
で、インターフェースを使うのはCOMやDCOMやCORBAみたいに外部に窓口提供したり、
契約単位内でクラス結合を弱めたいときやデータ分離して設計思想を統一するときに使うって感じ
まぁ契約単位内っていっても配置転換で担当者変わったら・・・ってこともあるので
あくまで形而上の話やけどねw
- 121 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 06:12:31 ID:DYnmRO/K0.net
- あとは状態管理(state management)ってキーワードでググるとなにか出てくるかも
- 122 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 06:22:41 ID:6mQufTaZ0.net
- あああなんとなく分かってきた気がするわ
- 123 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 06:23:32 ID:6mQufTaZ0.net
- ラッパークラスって考え方がなかったから変に考えてたきがする
- 124 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 06:26:13 ID:6mQufTaZ0.net
- とりあえず自身のクラスのことは自身にやらせて2つのクラスのデータが欲しいときは別のラッパークラス作ってその中でやればいいって感じかな??
- 125 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 06:26:27 ID:6mQufTaZ0.net
- ちがうか、、、、
- 126 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 06:27:03 ID:XJrU1eHm0.net
- >>118
まぁ作りながら発想ひろげていくパティーンだと前者はゴッドになりやすく
WindowsOSのソースコードみたいにものすごく長いswitchみたいになって
どうすんのコレって状態になるから後者のほうがええで
作りながら拡げていくって製作方式続けるなら
コントローラがモデルにそのモデルに必要なデータオブジェクトをコンテキストとして渡す
ってのが機能整理分担しやすくてええんちゃうか
OSの基本アーキテクチャの場合
イベントはユーザ入力・ハードウェア入力・タイマの3種類しかないみたいに、
大枠の分類してみればどのときにどのコンテキスト情報が入用かは割りと整理できるで
- 127 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 06:33:32 ID:6mQufTaZ0.net
- >>126
やっぱり前者だと神classができあがるよね、、とりあえず後者でやっていこうと思う実際ステートマシンで状態移管しながらUpdateするって設計だからその状態で必要なクラスをその状態のインスタンス作るときに引数で渡すようにするよ!!
- 128 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 06:35:26 ID:XJrU1eHm0.net
- >>124
まぁそのデータクラスを構造的に抽象化できる概念があれば、
その概念でラッパーを作ればみたいな感じでええんちゃう?
武器集合と防具集合があればそれの上位概念である装備集合を導きだして
装備集合にアダプタ機能と窓口はあるが実体は武器集合と防具集合みたいに
基本は別のクラスからコレ使えるかなって考えたら余計な窓口がみえてきて
別の概念の振る舞いやなコレと気づいて割りと独立性は高まるもんよ
- 129 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 06:36:10 ID:6mQufTaZ0.net
- 多分だけどいまの状態管理だとおおまかすぎてあれもいるこれもいるってなってるから状態をもっと細かくしていこうと思いました
- 130 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 06:39:19 ID:6mQufTaZ0.net
- >>128
たとえばなんだけどプレイヤーがItemUseってメソッドをもってるとしてインベントリの情報もアイテムの情報もいるじゃないですか?
インベントリもアイテムもクラスとして有る場合はプレイヤークラスにその二つのクラスを持たせた方がいいんですか?
それとも3つのクラスの情報を引き出して操作するクラスを作った方がいいです?
- 131 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 06:39:45 ID:6mQufTaZ0.net
- いるじゃないですか?ってわかるかそんなもんって感じですよね、、、すいません、、、、、
- 132 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 06:42:37 ID:XJrU1eHm0.net
- >>127
状態遷移は基本タイマか移動などのユーザ入力のタイミングで行うだろうし
それでええんちゃう?
ユーザ入力のうち特定のキーイベントがおこったとき、
コンテキストの中にヘルパーやツールなりを入れたらええしね
で、そのコンテキストオブジェクトをインターフェースで縛ることができれば、
かなりの仕様変更に耐えられるようになるで
- 133 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 06:46:57 ID:6mQufTaZ0.net
- >>132
現状StateはStart,Update,Endのインターフェースで作っててこのStateをどんどん切り替えていく感じで作ってます!
- 134 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 06:52:52.988 ID:6mQufTaZ0.net
- なんかめちゃ勉強になったきがする!!
- 135 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 06:53:06.360 ID:XJrU1eHm0.net
- >>130
要するにアイテムの数量管理する台帳とアイテムの性質を示すクラスがあるってことかな?
その場合はイメージ的に道具箱を渡すってイメージでええと思う。ツールクラスね。
その中にアイテムと台帳を結びつける道具をいれとくって感じで
当然、プレイヤーからは道具箱以外意識しなくて(アイテムや台帳の型を使わない)いいように
たぶんそのアイテムを捨てたら台帳から差し引きたいとかそんな感じでしょ?
その際アイテムの性質と在庫状況がいるってことって勝手に解釈した
- 136 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 06:57:27 ID:6mQufTaZ0.net
- >>135
めっちゃそんな感じです!!
アイテム自体もインターフェースで作っててプレイヤーにはなんかわからんけどUseすれば使えるよっていう風にはしててその使ったらどうなるかっていうデータと台帳は別のclassで管理してるんだけどこのclassをメンバで持たせるのはなんか違うなとおもってたんですよね
- 137 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 06:59:31 ID:6mQufTaZ0.net
- インベントリクラスはHasだからプレイヤーに持たせてもいい気がしたんだけど全てのアイテムのデータベース的なアイテムライブラリークラスは違う気がするんですよね
- 138 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 07:00:10 ID:6mQufTaZ0.net
- てかそうなってくるとプレイヤークラスが全部のデータをもつ神様になってしまう、、、、
- 139 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 07:02:35 ID:6mQufTaZ0.net
- やっぱりステートに必要なコントローラークラスを持たせておいて行動的な物は全て別クラスで作成してその都度コントローラークラスから必要な情報を引き出したほうがいいかな!
- 140 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 07:03:50 ID:DYnmRO/K0.net
- ステートがhas aでネストするなら
ノーマライゼーションというのがあってだな
- 141 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 07:09:39 ID:6mQufTaZ0.net
- >>140
なんとなくみたことは有るけどそれこそインターフェースをつかって吸収しましょう的なイメージしかないです、、、
- 142 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 07:10:22.058 ID:XJrU1eHm0.net
- >>137
まぁツールはすべてのアイテムを操作できるけど、
すべてのアイテムを持ってるわけじゃないからね
すべてのアイテムを操作できるのはアイテムが共通のインターフェースを実装してるからだし
受け取ったイベントに沿ったアイテムをつめてプレーヤーに渡すわけだから
つど必要なものがとどけられる感じ
まぁ四次元ポケットみたいなものといえばいいかw
現代風にいうと宅急便の配達と荷受かな
- 143 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 07:10:25.156 ID:6mQufTaZ0.net
- プログラムはじめて1ヶ月なりそうだけどまじで進歩してない気がしてきたよ、、、、、、
- 144 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 07:12:37 ID:6mQufTaZ0.net
- >>142
ようはアイテムを使うってこととインベントリを減らすって行動をパッケージにしたボタンをプレイヤーに渡して押させる的な感じかなぁ??
- 145 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 07:14:46 ID:6mQufTaZ0.net
- 今までクラスの中で他のクラスの情報を入手したり操作したりしてたからそれをやめて一回自分のクラスの事だけをさせるようにします!
それから他のクラスとの兼ね合いが必要なものは作っていこうかな!
- 146 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 07:19:26 ID:XJrU1eHm0.net
- >>144
受け取り拒否したら在庫は減らない売り上げもそのまま
受け取ったら在庫は減る売り上げは上がる
ユーザがやるのは受け取りを拒否するか承諾するか
その他のことはヤマトがやりヤマトが結果をAmazonに通知してAmazonが計上する
みたいな感じ
- 147 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 07:21:05 ID:6mQufTaZ0.net
- >>146
ほうほう、、これ1から作り直した方が早い気がしてきました!!
- 148 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 07:26:26 ID:XJrU1eHm0.net
- >>145
まぁそれが無難だす
BtoBの発想が大事ぽ
売人と買人と仲介人
消費者と生産者をしっかり作ってそれをつなげる商社や銀行があると
商社や銀行がお金や商品といった財を統一した手続きでやりとりできるようにしとるわけだす
そしてそれを市場経済や商法といったコントローラの中で動くわけだす
オブジェクト指向はもともと実社会を概念に落とし込んだものなので
実社会の社会システムを参考に境界を考えてみると捗るかも
- 149 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 07:30:42 ID:6mQufTaZ0.net
- >>148
RPGだとそこが落とし込みやすいかなと思って始めたんですけどよくわからないうちにばーっと書いちゃったらぐちゃぐちゃになっちゃいましたwwwwww
- 150 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 07:41:44 ID:XJrU1eHm0.net
- >>149
クラスベースのオブジェクト指向でいくとどうしてもモノシリックになりがちなので
クラスの機構からはなれてUnixドメインソケットやパイプといった通信機能を使ったと想定して
各機能間の連携を行う発想で分類わけしてもええかもね
各機能群はバイナリ化されていていじることはできないと考えてみるっと
クラスベースの機構に頼った場合、境界の向こうのソースコードが手元にあると
こっち側の事情なのに境界の向こうのソースコードいじりたくなってしまう
作用する実態に近いところのほうが融通きくし簡単に目の前の課題解決できてしまうからねえ
しかしそれをした瞬間境界の壁は壊れてしまう
- 151 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 07:46:16 ID:6mQufTaZ0.net
- >>150
多分今その境界がぶっこわれてしまってますね、、、無駄にstaticとかしってしまったせいでstaticクラス量産してどこからでもなでもできるって状態になってしまってます
動くからよかったんだけど勉強的にはNGだと思うのでとりあえず動かなくなるけどカプセル化していって終わってどうするか考えます!!
- 152 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 07:48:24 ID:6mQufTaZ0.net
- あと単一の機能をもたせるのが基本って見たんですけどたとえば同じ物を取り出すんだけど取り出す対象が違う時ってクラスを分けるべきですか?用は引数が違って戻り値が同じものなんですけど、、、、
- 153 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 07:55:55 ID:4pZHivC40.net
- 寝ないでずっとやってたの?
どんな生活リズムしてるのか気になるわ
- 154 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 07:57:47 ID:XJrU1eHm0.net
- >>100
みおとしてた・・・・データタイプの相違はアダプタが面倒みるので
こんな感じ
[境界]
|
・こちらの契約単位←|→・マイクソの契約単位
統一性をもたせて | マイクソ仕様のプリミティブのみ受け付ける
参照型のみ使用 | ライブラリたち
[入出力アダプタ] ⇔
|
入出力アダプタが境界間の相違、
参照型とプリミティブの相互変換するから
左側のモジュール群は参照型で統一しててええでって話し。
データフローの終端が右側であっても相違の相互翻訳は
アダプタがやるんで他のモジュール群は参照型を使って
右側の機能群を利用できるよんってこと
- 155 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 08:00:57 ID:6mQufTaZ0.net
- >>153
今日はお休みだからね!多分そろそろ限界来そうだけどいまいいとこなんだよ!!
- 156 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 08:07:19 ID:6mQufTaZ0.net
- >>154
わかったきがする!!!
- 157 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 08:10:05 ID:XJrU1eHm0.net
- >>152
まぁ基本だけど単一機能といっても分類の仕方によっては
ものすごくでっかい単一になることもあるしね
個人的にはサービス間の通信連携のように境界をはっきりさせて
境界をこえたアルバイトをさせないこと
インターフェースを利用してでっかいswitchを避けること
この辺が実現できたらあとの役割分割とか実装分割は宗教戦争になりがちだから
複数人開発でない限りお好みでとしか
>同じ物を取り出すんだけど取り出す対象が違う時
ちょっとイメージが湧かないので具体例でオナシャス
静的な型は同じだけど動的な型が異なってるとか
動的な型も同じだけど実体が異なって異なるコンテキストをもってるってことかな
同じ振る舞いをするプレイヤーだけどマリオとルイージでの足のひっぱりあいプレーみたいな
- 158 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 08:14:36 ID:6mQufTaZ0.net
- >>157
えっと袋からチョコを取り出すってクラスと棚からチョコを取り出すってクラスがある感じかな??
- 159 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 08:16:03 ID:6mQufTaZ0.net
- ただ袋と棚で依存してる物がちがうから分けた方がいいのかとも思ってるんだよね
ただ今度冷蔵庫からも取り出したいとかなってきたらクラスが莫大に増えていくからどうなのかなと
- 160 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 08:29:33 ID:XJrU1eHm0.net
- >>158
そこはもう執事クラスで境界つくって執事がアイテムをとるってことにして
執事が受け取ったメッセージでなにをとるか判断するって感じでやれば?
でアイテムには性質の振る舞いを規定したスーパーインターフェースと
分類を示すタイプ属性やコンスト定数とかもたせとけばええんちゃう?
執事が伝票もっててそこに必要な情報を記入するみたいな感じ
窓口の構造さえしっかりしとけば
末端の実装は極端な話種類が少ないうちは
マップとかでざっくりと管理しててもいいしね
- 161 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 08:36:32.858 ID:6mQufTaZ0.net
- >>160
あああああなんとなくわかったここでインターフェース使えばいいのか!棚にも袋にも実装させてそれで指定すればいいのか!!
- 162 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 08:38:06.150 ID:6mQufTaZ0.net
- やばっ楽しくなってきた
- 163 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 08:42:53.188 ID:XJrU1eHm0.net
- >>161
より具体化する下層での分類はConst定数で判断するほうがええ場合もあるで
分類テーブルに分類IDをキーに対応したクラスの参照や関数ポインタをもたせることで
キーから必要なリフレクションを一発でできることができるようになるし
クラスの爆発的な増加を抑えることができる
- 164 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 08:47:21.204 ID:6mQufTaZ0.net
- >>163
こんなものがあるんですね、、、アイテムのIDとか変わらない物はこんなのつかった方がいいのかなぁ
- 165 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 08:49:59.001 ID:6mQufTaZ0.net
- ああああはじめてインターフェースすばらしいとおもった、、、今まで型でしか判断出来てなかったけど機能で判断できるようになるのすばらしいな
- 166 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 09:04:08 ID:6mQufTaZ0.net
- あああそうなってくるとリストの型が問題になってくるのか、、、、、
- 167 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 09:05:04 ID:XJrU1eHm0.net
- >>164
オブジェクトにもその情報を示す実行時情報とか仮想関数テーブルとか
属性情報を保有していてVMはそれで動的な型やコールする仮想関数を判断しとるからね
インスタンスにもID振って管理しとるしさ
一意を定めるアイテムIDと種類を示す分類IDがあったとしたら
分類IDと袋のテーブルを作ってそっから袋を決定するって実装方法もあるかのう。
インターフェース定義してたら多態コールバックと同様に
袋のattach→do→detachといったようにメソッドを順に呼び出すこともできるし
もちろん一意のIDから対応するオブジェクトをトリガすることもできる
上層ではインターフェースの実行時型情報による多態を利用したほうがいいこと多いが
下層になると実行時型情報による選択分岐はデメリットが目立ってきたりするのでご注意
- 168 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 09:05:22 ID:6mQufTaZ0.net
- Listの型をインターフェースにしてしまえば問題ないんだけどなぁ
- 169 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 09:12:11 ID:6mQufTaZ0.net
- あああああなんかわかってきたあああああ二つのメンバを持つリストを管理するくらすだよって曖昧につくってそこからインベントリクラスにすればよかったのか
- 170 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 09:12:42 ID:6mQufTaZ0.net
- 抽象的ってなんだよって思ってたけどやっとわかってきた
- 171 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 09:15:29 ID:XJrU1eHm0.net
- >>168
まぁListを継承してインターフェースをインプリメントするか
Listをメンバにもつクラスを作成してそのメンバにアクセスするメンバ関数実装し(コンポジション)
インターフェースをインプリメントするかやね
個人的には契約単位外のライブラリの継承はなるべく避けたい派なのでワシなら後者にする
理由はベンダの気分次第で(略
- 172 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 09:21:44 ID:6mQufTaZ0.net
- >>171
もともとメンバにアクセスするクラスを作ってたので後者でいこうとおもいま!!
- 173 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 09:23:33 ID:6mQufTaZ0.net
- やば、、、、継承とインターフェースの意味がやっとわかってきたわ、、、、、、、、
- 174 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 09:23:46.586 ID:6mQufTaZ0.net
- すごい!!楽しい!!!!
- 175 :転がりマン ◆KCMJNs5qa6 :2020/02/15(土) 10:23:40 ID:bItSl10j0.net
- おはよう寝ずにやってるのかw
理解が進んだ瞬間たのしいよな
- 176 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 10:29:15 ID:R/Otiqam0.net
- >>175
おまえがあと1分遅くレスしたらスレはすでに落ちてたな
- 177 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 10:36:51 ID:mVuSJ/q20.net
- お風呂はいってきたよ!!
- 178 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 10:37:43 ID:mVuSJ/q20.net
- >>175
寝ずにやってしまったよ、、、、でもおかげでインターフェースの大切さとか抽象的な大切さが分かった気がする!!
- 179 :以下、?ちゃんねるからVIPがお送りします:2020/02/15(土) 10:57:53 ID:mVuSJ/q20.net
- 昼間からふろはいってお酒のんで気分は最高だね!!
総レス数 179
46 KB
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★