オブジェクト指向意味不明すぎてワロタ

1: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 15:48:37.694 ID:8xQG42zDp
現実世界と同じようにプログラムを書いていくみたいなこと書いてあったけど
なんだよそれ
抽象的すぎて意味がわからん

2: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 15:51:07.418 ID:8xQG42zDp
わかる人いる?オブジェクト指向

3: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 15:51:44.849 ID:SMjbE0zd0
実際は機能というかパーツごとに書いてくだけになる

4: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 15:52:39.407 ID:fdQqnWZOa
JavaとC++は似て非なるものなり

6: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 15:56:32.593 ID:8xQG42zDp

>>3
そのパーツとかをどうやって決めるかっていうのがオブジェクト指向なんでしょ?
そこからよくわからん

>>4
javaやってるよ

5: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 15:55:59.461 ID:SAtCWSlr0
クラスにスライムの能力と行動パターンを書いて
インスタンス化でマップにスライムを出す

8: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 15:57:17.865 ID:8xQG42zDp
>>5
インスタンス化がよくわからん
それをするとなんでプログラム書きやすくなるの?

10: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:03:49.606 ID:SAtCWSlr0
>>8
だからマップにスライム出すって言ってるやん
スライムってクラス作って変数でHP=4、攻撃=3って入れたとして
この時点ではスライム出した時にどんなパラメーターになるか書いてるだけやろ
その後スライム3匹出現させるとしたらこのクラスのインスタンスをを3つ作ることになる

11: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:07:39.262 ID:8xQG42zDp
>>10
どうやってスライムを出すの?

14: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:12:43.803 ID:SAtCWSlr0
>>10
それがインスタンス化って言ってるやろ
クラスがSlimeだったら Slime slimeA = new Slime(); でSlimeAって名前のスライムが出る

15: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:13:10.203 ID:SAtCWSlr0
>>11
安価間違えた

17: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:15:21.979 ID:8xQG42zDp

>>12-13
よくわかんないよね…

>>14
普通にクラス呼び出すのと何が違うの?

18: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:18:38.425 ID:SAtCWSlr0
>>17
普通に呼び出すってなんやねん
普通に呼び出すのがインスタンス化だぞ

21: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:21:52.053 ID:8xQG42zDp
>>18
要はクラス呼び出すってだけのこと?
ただそれだけなの?

7: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 15:56:58.460 ID:CzyWiPfE0
まだオブジェクト指向やってんのかよ
古いぞ

9: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 15:57:32.686 ID:8xQG42zDp
>>7
今は何?

12: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:10:44.334 ID:97tl4SgnM
俺も普通の関数とか構造体との違いがよくわからん

13: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:12:22.238 ID:/lXWomSj0

class Slime {
HP:4
ATTACK:3
COLOR:BLUE

constructor(color:color){
this.COLOR = color;
}
}

Array<Slime> Slimes = new Array<Slime>();
Slime BlueSlime = new Slime(blue); //赤いスライムを作る インスタンス化?
Slime RedSlime = new Slime(red); //青いスライムを作る インスタンス化?

オブジェクト指向全然わかってない初心者の俺はスライムの説明をみてもこういう風にしか思えなかった
こんな言語があるかは知らん

16: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:14:07.658 ID:SMjbE0zd0
実際のモノ(=オブジェクト)に則したインスタンスを生成するからオブジェクト指向なんよな スライムの例みたいなわかりやすいのだったらいいけど実際は機能を一覧化階層化しただけのクラスを作ることになるクソ

19: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:19:07.489 ID:6o5T3EYD0
インスタンスはいっぱい作れるんだよ

22: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:28:19.390 ID:5yvpY4hT0
正直俺もよく分からん
関数と変数をひとまとめにしてクラスだかインスタンスだかとして扱うと都合が良い、とかいう話らしいけど

23: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:30:49.584 ID:97tl4SgnM
関数は複数同時に呼び出せないけどクラスならできるとか?

24: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:32:24.423 ID:RAYOpy7l0

スライム変数(クラス)の中にHP、ATなどの複数の変数持てるってことだよ

スライムっていうのはゲームの中に何体もいるわけだろ
スライムクラスないと
スライム1HPとスライム1AT…スライム2HPとスライム2ATって四つも変数作らないといけない

スライムクラス作ればスライムを生成したい度にスライムクラスをnewすればいいだけになる

27: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:33:52.178 ID:8xQG42zDp
>>24
スライムクラスを作るのと何が違うの?

32: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:39:01.042 ID:RAYOpy7l0
>>27
クラスの作る意味をわかって無さそうだったからクラスを作るメリットを書いたつもりだが
別にクラス作らずに変数だけで全部やってもいいぞ
ただとんでもないクソコードになる

25: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:33:01.162 ID:EEiCPwgGa
言語によって用語の意味が違ってくることがあるのでなんとも言えないが
クラスはただの設計図であって実体はない仮想的な情報で、コンパイラがコンパイル時にのみ使用して、実行バイナリには残らないデータ
設計図の通りに製造した物がインスタンスですよ。これはメモリに実際に居座る、存在する、実体を持つ

26: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:33:16.958 ID:YgiZ/6El0

複数の変数束ねたものをクラスってかんじなの?

クラスのなかに生徒が沢山いるみたいな

29: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:36:22.175 ID:RAYOpy7l0

>>26
例えが違う
そのクラスって1組、2組とかそういうクラスの事言ってるでしょ?

人クラスっていうのがあって
人クラスは年齢、性別、名前という変数をもってる

生徒クラスと教員クラスはその人クラスを継承すればわざわざ教員クラスや生徒クラスで年齢とか性別を定義しなくても使えるようになる

31: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:38:22.054 ID:YgiZ/6El0
>>29
なんとなくわかった!あーなるほど
複数の生徒クラスをまとめるでっかい組クラスみたいなのはないの?

35: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:41:16.215 ID:RAYOpy7l0

>>31
それはオブジェクト指向ではない
1組、2組とかのクラスは人という概念とは全く関係ないから

もしまとめるなら生徒クラスの中に組という変数持たせてそこに1組だとか2組だとかをいれる

37: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:43:21.857 ID:YgiZ/6El0
>>35
3行目で頭ぱんくした
>>36
理解できた!

41: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:51:45.973 ID:RAYOpy7l0

>>37
まず上位のクラスを作るにはそれを抽象化できるかどうか考える必要がある

人(年齢、性別、名前)

生徒(学年、組)←1組とかでまとめたいなら1組の生徒をまとめたリスト(配列)をつくればよいだけ

学級委員(雑務内容)



教員

学年主任

43: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:55:08.212 ID:YgiZ/6El0

>>41
なんとなくわかった
一般的な脳内の考えだと組織なんて逆に思考するけど

抽象化しないといけないから
一番削ぎ落とした人間ってクラスが最上位にくるってことか
普通の思考と違って逆に考えないといけないからこんがらがる

48: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 17:04:05.394 ID:RAYOpy7l0

>>43
自分が学生だとして
自分と他の人に共通する部分ってなんだろうって

まず生徒同士でちがうことっていったらパラメーターくらいだよな(つまり年齢とか名前、組)
違いがパラメーターだけだったらそれは同じくらいクラス

でも生徒と教員は違うよな

じゃあなにが違うか

生徒は学ぶ、教員は教える

やることが違うからクラスを分けよう

だけど年齢とか性別とかパラメーターは同じ部分があるからその上に人クラス作って共通化しようっていう思考

49: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 17:15:25.180 ID:YgiZ/6El0
>>48
抽象化の意味がすっきりした

28: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:35:36.510 ID:mTz+CcQJa
似た部分はまとめて使い回して個々の特徴は各々でつけてくれってかんじ

30: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:37:53.940 ID:8xQG42zDp
>>28
それくらいなら当たり前にするんじゃないの?
ただこれだけでオブジェクト指向なの?

33: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:39:15.964 ID:EEiCPwgGa
C++におけるオブジェクト指向の要件は三つ
・カプセル化
・多態性
・継承

34: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:40:09.623 ID:YgiZ/6El0

ってことは
モンスタークラスってのがって
パラメーターにHP,MP,攻撃力,防御力って変数が含まれてる

こいつを継承して
スライムクラスとか
スライムベスクラスが作れるってことか

36: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:41:58.309 ID:RAYOpy7l0
>>34
そう

38: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:44:24.413 ID:EEiCPwgGa
カプセル化とはライブラリを使う素人が大事なデータ弄って壊さないようにプロテクトをかける機能
継承は洗練された抽象部を基に、差分だけ付け足すことで機能強化版が作れる機能
ポリモーフィズムは、継承の系譜を辿って、文脈によって適切な先祖子孫の位置を特定してそいつになりすまして動く機能

39: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:46:23.019 ID:YgiZ/6El0

軟体動物クラスっての作って
継承してタコクラスつくって差分に足8本
継承して以下クラスは差分に足10本

ポリモーフィズムは難しくてわからない

40: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:46:48.724 ID:EEiCPwgGa
以上3点を満たすのが(C++での)オブジェクト指向です
他の言語になると満たすべき要件が変わってくる可能性があります

42: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:51:48.280 ID:PhlvknIQ0

ガンプラで例えると

クラス=金型
インスタンス=いわゆるガンプラ
”いわゆるガンプラ”を作るときの材料=インスタンス化する際のパラメータ

で合ってる?

44: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 16:57:32.911 ID:RAYOpy7l0

>>42
あってそうな気がする
金型クラスが手、足、体、頭ってもってて
じゃあそれ使って組み立てよう

じゃあ金型クラスをインスタンス化する

手にはこのパーツを使って、足はこのパーツ…
ってことかな

51: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 17:17:04.405 ID:hRkKCLJY0
あれ?なんか頭こんがらがって来たんだけど親クラスは子クラスのメソッド使えないんだよな?
でも子クラスは親クラスのメソッド使えるんだよな?
でもでも変数の型指定は親クラスにしといたほうが便利なんよな?

52: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 17:23:50.843 ID:EEiCPwgGa

抽象とは
多くの物事に共通して登場する部分を抜き出す事です

決して小難しくややこしいことを言うという意味ではありません

47: 以下、5ちゃんねるからVIPがお送りします 2020/05/08(金) 17:03:59.168 ID:p65U1O2p0
実際に実装すると動かないwwwww

引用元

管理人からひと言

設計がむつかしい

スポンサーリンク
スポンサーリンク
スポンサーリンク

シェアする

フォローする

スポンサーリンク
スポンサーリンク