プログラミング(C#Java)ど素人がウゴウゴする

転職
スポンサーリンク
1: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:17:32.545 ID:bMUVbVRh0
クラスとかインスタンス深くわからん

引用元: ・プログラミング(C#Java)ど素人がウゴウゴする

91: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 00:24:23.926 ID:mwT+cFlv0
>>87
多分お前は今までは、全く意識せずに(①や②でなく)③ばかり使ってたわけだ
だから③に①の意味と②の意味の両方のケースあることを知らず、ゆえにstaticの効果が全く意味わからなかった
それを自覚した今なら何も難しい話じゃないだろ?

110: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 00:42:20.008 ID:sKrZpECZ0
>>109
そうそう
クラスとオブジェクトの関係は理解できただろ?

116: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 00:47:41.078 ID:PMODBHgr0
>>113
うんうんなるほど
ニュアンスとして指す範囲が変わりかねんのな

>>114
なるほど個々が持ってる処理だしそれぞれ出力も違うね

94: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 00:25:14.389 ID:sKrZpECZ0
>>87
それじゃ
http://hebi.5ch.net/test/read.cgi/news4vip/1540468566
で家族を表すクラスを作ろうという課題を出してるからやってみて
https://i.imgur.com/X4YfoE1.jpg
とかである程度までやっていたので参考に

できたら、インスタンスメソッドとクラスメソッドを追加して拡張する
そうすればインスタンスメソッドとクラスメソッドの使い方を具体的にイメージできるはず

3: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:18:34.437 ID:bMUVbVRh0
>>2
なんだそれって思ったけどjか

7: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:21:01.493 ID:bMUVbVRh0
>>6
セッターは違うわインスタンスに値を定めるやつだけでいいな

5: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:18:51.327 ID:xYh7AYX1M
かなり分かりやすい方の言語だと思うけどな

9: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:21:15.919 ID:vuu0PyZn0
コンストラクタちゃんな

12: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:22:29.607 ID:bMUVbVRh0
今納得がいかんのがstatic
定数的な使い方は愚かなんだろうな?とは思うけれど

18: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:25:05.912 ID:bMUVbVRh0
>>14
クラスは設計図、というけれどファイルそのものがクラスに思えてしまう
あれ?てかそもそも1ファイルの中でクラス複数宣言できるのか?、 ???

>>15
オブジェクト指向に理解が至ってないからまだスルーしてる

21: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:27:45.655 ID:UB0Ppn2X0
>>18
クラスとファイルは全然違う

結局はメモリ上のデータだということを
直感的に理解するまで悩むしかない

25: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:30:12.415 ID:UB0Ppn2X0
>>23
オブジェクト指向っていうのはこういう考え方
ってのと
プログラム言語はこういう仕組みで動く
ってのを
分けて理解する必要がある

31: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:37:10.197 ID:UB0Ppn2X0
>>28
プログラムってのはデータと処理の塊でしかないってのはCやってたなら理解してるだろ?
で、データも処理もメモリ上のデータでしかない
そのデータをどう配置すれば、人間がどう読み取りやすくなるかを考えたアプローチの1つでしかない

33: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:38:23.734 ID:bMUVbVRh0
>>31
なるほど
結局は人間が理解しやすいようにしてる仕組なだけなわけか

38: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:40:09.713 ID:bMUVbVRh0
>>36
あー
なるほどなるほど

19: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:25:22.889 ID:UB0Ppn2X0
>>14
クラスメソッド

20: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:27:43.932 ID:vuu0PyZn0
抽象メソッドが未だにわかんね
やること決まってねえけどオーバーライドして使ってね☆っておまえぶっ飛ばすぞコラ
ラムダ式ようにインターフェイスにメソッド一個なら分かりやすいが継承しまくってるインターフェイスとか抽象メソッド山ほど抱えてるインターフェイスは死ねわかりづらいんじゃ

22: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:27:58.843 ID:bMUVbVRh0
他ファイルにあるクラスの中の関数を呼ぶときには
そのファイル名.関数名(引数)
とかで呼ぶじゃん?
そんでそのファイル名とクラス名がほぼ一緒だからよくわかんないんだけど、1ファイル1クラスなのかな

24: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:30:06.906 ID:bMUVbVRh0
Cしかやったことなかったからまじで混乱する

26: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:30:34.879 ID:vuu0PyZn0
ファイルってパッケージのことか?
c#ってパッケージ.メソッド名なんてことできるん?
インポートはパッケージ.クラス名.メソッドだべ

29: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:33:46.989 ID:bMUVbVRh0
パソコン持って帰ってこればよかった……

34: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:38:59.680 ID:UB0Ppn2X0
>>30
データと処理のセットを生成するってイメージ
本当に「モノ」をイメージするとわかりやすい
実際には実装によるが、オートマトンが生み出される感じ

44: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:42:42.432 ID:bMUVbVRh0
>>42
はー
処理を持った物自体が再生されるのか
車作る工場みたいな

>>40
あーなんかそれ

47: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:45:42.251 ID:UB0Ppn2X0
>>43
スコープとは関係ない
インスタンスを作らなくてもクラスから直接呼べるから、つまり中のデータと関係がないけど、関係性の強い処理を一緒に書いてある

>>44
そう
プログラムってのは動くものだから、動かないものに例えるとイメージが合わなくなるのよ

32: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:37:27.912 ID:bMUVbVRh0
staticにしてなかったらそもそも呼べない、という認識だったけど
publicなクラスのpublicな関数が呼べないわけないもんな

39: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:40:38.905 ID:UB0Ppn2X0
>>32
設計図に付属してるツールがスタティック

35: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:39:01.973 ID:bMUVbVRh0
なんだっけ?あれもわかってない
コントローラなんちゃらなんちゃらみたいな設計法

46: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:44:06.402 ID:WnCmz0q10
>>35
モデル・ビュー・コントローラー?

ビュー(実際のデータをどう表示するか)を自由に挿げ替えやすいように、
ビューとモデル(意味論的な機能設計部)を分離して設計しておけば、
表示の仕方を変えた時にも楽だよ、っていう設計思想

48: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:46:17.846 ID:bMUVbVRh0
>>46
それだそれだ
結局、
管理者と描画担当とキャラ(処理する奴)で分けようぜ、くらいの認識しかしてない

51: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:48:21.154 ID:bMUVbVRh0
>>49
ほぇー
関数で分けまくるくせはあるからもしかしたらわかりやすいかも

54: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:48:52.654 ID:WnCmz0q10
>>48
まさしくそのためのもの
MVC・MVP・MVVMといろいろあるけど、いずれもモデルとビューは独立していて、どう繋ぐかが違うだけ

>>45
別にウェブだけとは限らないっしょ
仕組み上ビューが完全分離してるからわかりやすいってだけで

40: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:40:55.846 ID:vuu0PyZn0
MVCモデルみたいなの勉強したけどあれ以外だと何があるのか全く知らね

45: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:42:44.158 ID:UB0Ppn2X0
>>40
MVPとかMVVMとか?
ウェブの設計に関する考え方ね
適用範囲の広いのだとデザインパターンってのが大量にある

53: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:48:47.641 ID:A5yGnOBYM
staticなんか一旦無視でいいよ
そのうち困ることが出てきたらようやく使いどころ

何で参考書ってこんな早く登場するんだろうな
使う場所なんか限定的なのに

56: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:54:06.339 ID:WnCmz0q10
>>55
インスタンス化せずに呼ぼうとするからだよ

59: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:55:37.300 ID:bMUVbVRh0
>>56
あ、まってなるほど???

おれインスタンス化が一切わかってないんだわ

UnityでいうInstantiateがインスタンス化のことだと思ってたけど
scratch的なクローン生成なだけなのかな
インスタンス化、ということをするとpublicでも呼べるのか

61: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:58:34.205 ID:UB0Ppn2X0
>>59
まずパブリック、プライベートは外から呼べるかどうかの話な
staticかインスタンスメソッドかとは別の話

66: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 00:04:43.934 ID:Us2Zly5o0
>>64
俺はユニティのことは良くわからんが
便利なツール使って楽しむのもいいけど、時折それらがどう動いているのかしっかり振り返らないと成長の限界がくるよ

実際に例を出してあげれれば早いんだが
今からジム行くから自分で頑張ってくれ

63: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 00:00:49.593 ID:mwT+cFlv0
>>59
インスタンス化ってのはつまり、C#的に言うとクラスをnewすること
UnityのInstantiate()関数は、内部的にはnewして内容を別のオブジェクトと同じになるように設定する関数

65: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 00:03:29.083 ID:PMODBHgr0
>>63
クラスをnewしたら外から呼べるのか
でも誰に対して(どのインスタンスに対して)newしたのかわかんなくね?どのインスタンスのどの数値を呼ぶのかと思ってしまった
識別子的な変数を与えるのかなと思ったけどそんなおろかなわけないし

70: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 00:07:53.402 ID:mwT+cFlv0
>>65
変数に保存しておけ
内部から呼んでる非static関数も、実際にはUnityがnewして保存しているものにすぎない
内部からはstaticのない関数を呼び出せるように見えるのは、実際には「newされた自分自身」に対して呼んでいる

75: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 00:10:31.099 ID:PMODBHgr0
>>70
newしたら呼べるという認識で良いのか

>>71
あれだ
インスタンスがあって、
そいつに対してクラスをnewで値を割り当ててあげて、
そしたらその数値がpublicであれば呼べるのかな?
んーーーなんかごめん同じところでぐるぐる回ってる

77: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 00:12:11.019 ID:Us2Zly5o0
>>75
値はデータが持ってて
変数としてはプライベートにしていることが多いが、外部から必要に応じて見れたり変更できたりするようにメソッドが用意されている

なぜ変数を直接操作させないかというと
破壊的な操作ができてしまうから

96: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 00:26:34.283 ID:PMODBHgr0
>>89
あまってめっちゃわかった
そっかそういえばstaticってメモリを実行時に確保するもんね
でも普通はnewしてインスタンス作んなきゃ確保もクソもないから、publicだろうとなんだろうと参照も何も参照するメモリなくね?みたいた

90: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 00:23:57.020 ID:PMODBHgr0
>>84
>>86
ありがとうただいっこわからん(初歩がわかってない)
でもわかったかと
new Hoge().m_x = 10;
というのは、ホゲの中にある変数に対して10を与えますよ、
その後もう一回newしたら、
さっき10を与えたインスタンスとは関係ない新しいインスタンスで
その中にある変数を呼ぶから2になるよ、ってことかな

95: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 00:26:07.762 ID:mwT+cFlv0
>>90
俺がnonstatic_xをm_xってミスってるけど、そういうことだね
だからvar h = new Hoge(); のように変数に保存しておくのだ

57: 以下、5ちゃんねるからVIPがお送りします 2018/11/13(火) 23:54:51.475 ID:gmPe4h+T0
Unityやってるならstaticはシーン遷移するとき(たとえば1面クリアして2面に移行するとき)に必要なデータをシーン間で共有するために必要でしょ

80: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 00:15:52.896 ID:sKrZpECZ0
>>76
あれ別人か
お前とまったく同じことをラジオで流しながら質問している奴がいたもので

結局具体的なコードで考えないと理解できないよ
やる気があるなら10~30分くらいの演習課題を出すけど
分かってる奴なら5分でできると思うけどお前のレベルによっては30分になるかも

68: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 00:06:19.262 ID:kUbVfGDI0
いつも思うけど、プログラミングスレって必ずマウントとるやついるよな
実際、大して知識もないのに

69: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 00:07:11.104 ID:iaxnTNuw0
エンジン使わずにオブジェクト指向で何かした作ったことが無い状態でUnity始めるとこういう壁にぶちあたるわなそりゃ

78: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 00:13:03.570 ID:Us2Zly5o0
値はインスタンスがもってて、の間違い
つまり、newで値を割り当てたモノを1個作るって認識で合ってる

81: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 00:16:42.180 ID:Us2Zly5o0
>>79
まぁ要するに
インスタンスでしか呼べない関数と、インスタンスじゃなくても呼べる関数の違いだ

85: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 00:19:53.326 ID:TvdDzkGTM
>>79
だいたい合ってる

83: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 00:18:01.544 ID:Us2Zly5o0
ホゲとかピヨみたいな意味ない例出すと混乱させるぞ…

92: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 00:24:24.255 ID:TvdDzkGTM
オブジェクト指向は変な例えすると荒れるぞqiitaみたいに

97: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 00:26:44.545 ID:J4fnMAgJ0
サクラエディタ使ってるってことはSIerのおっさんだな

99: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 00:28:30.066 ID:TvdDzkGTM
Windows環境でタブインデントもSIっぽいな

102: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 00:31:42.555 ID:PMODBHgr0
>>100
Cはやってたから

106: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 00:36:56.216 ID:TvdDzkGTM
>>102
だから理解早いのか

出身言語違うとこうも思考プロセスが違うんだね
逆に俺はメモリはガベージコレクションが勝手に解放してくれんじゃないのって感じだわ

103: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 00:32:41.816 ID:J4fnMAgJ0
俺もゴミSIerだけど新人研修のときに講師がずっとメモリのスタック領域がとかヒープ領域ががどうとか言ってて意味わからんしうざかった

107: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 00:39:07.627 ID:PMODBHgr0
public class Person
{
string name ;
int age;
Person(string n,int a)
{
setNane(n);
setAge(a);
}
//引数足りんオーバーロードは一旦省略

setName(string s)
{
this.name=s;
}
setAge(int i)
{
this.name=I;
}

}

うんなぞりながらだけどこれで設定できるのはわかる(初期化してないけど)
ゲッターをちゃんと書いて
なんなら家族人数を表すものをstaticで作って
子供を作る関数とか作ったらええな

122: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 00:57:27.537 ID:sKrZpECZ0
>>119
そう
>>114を実際に確認しようって課題
それと処理の流れについて確認できる

125: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 00:59:35.507 ID:PMODBHgr0
>>122
すげーわかった

117: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 00:50:17.499 ID:sKrZpECZ0
>>115
今やってるのかも知れないけど

Person omae = new Person(“お前”, 35):
Person mama = new Person(“母上”, 55);
print お前の名前は omae.getName()

はPersonクラスを呼び出す処理を作ろうって課題な

124: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 00:58:23.159 ID:PMODBHgr0
>>121
そう!!!!それでしっくりきた
new Vector3することでVector3オブジェクトを保持させるんだな!!!なるほど!!!

new PersonすることでPersonオブジェクトを持たせる感じだな

130: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 01:12:39.687 ID:ngFfmkwU0
>>129
ふわっとした説明だとわからなかったので独学でアセンブラまで堕ちただけだ…… orz

131: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 01:14:30.556 ID:PMODBHgr0
>>130
アセンブラ……そういえばncでアセンブラもやったことあった

120: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 00:54:21.899 ID:/EiRZm2f0
C#を学ぶぐらいならJavaの方がマシってのだけは分かる

123: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 00:57:53.602 ID:ngFfmkwU0
>>120
どのみちどっちも使う羽目になるだろ、たぶん
個人的には特有のお作法が生まれやすいJavaのほうが苦手(ごめんね)、StringBuilder的な……

126: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 01:00:20.132 ID:PMODBHgr0
いやpersonの例だと階層的に違うか??

128: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 01:04:20.078 ID:ngFfmkwU0
引数をガツンとスタックに積んで、問答無用でコンストラクタ蹴って
引数を確保したメモリ領域内(インスタンス内)にセット

コンストラクタ(ないしイニシャライザとも)を蹴るのは言語系サイドで
良しなに裏でそれっぽいコードねじ込むだけ
デストラクタとかも一緒で、良しなに言語系が蹴るコード突っ込んでくれる

インスタンスの中でnewしたら、また別のメモリ領域になんらかのインスタンスができて
変数は先頭アドレス持ってるから
あとは先頭アドレスから何アドレス目に変数あるんじゃい・関数あるんじゃいがわかるので蹴れる

あたりをヒントとして書いておいたほうがいいんだろうか?
まあ仮想マシン・スクリプト言語・C++的な生アドレス的なので話は変わろうが、大枠のイメージはそんなもん

133: 以下、5ちゃんねるからVIPがお送りします 2018/11/14(水) 01:49:47.728 ID:yCUIhYqNM
ふぅ筋トレ終了

構造体に例えると、オブジェクト指向の旨みが伝わらないけどな
使う側が内部を知らなくてもいいところがミソだから

転職
スポンサーリンク
りょうたろうをフォローする
スポンサーリンク
プログラミングまとめ速報ちゃんねる

コメント

タイトルとURLをコピーしました