c言語的にjavaを教えて (55レス)
c言語的にjavaを教えて http://mevius.5ch.net/test/read.cgi/tech/1525787672/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
1: デフォルトの名無しさん [sage] 2018/05/08(火) 22:54:32.36 ID:CKiuQAUI 仕事でc言語をつめ込まれた直後にjavaやらされて混乱しとるんじゃが、オブジェクト指向とモジュール構造の差異を教えてほしい いろいろ調べて自分なりの結論として ・オブジェクトとは、操作に対する「一連の手続き」である e.g. 操作[電源ボタンを押す]→オブジェクト[PC]→起動[画面がつく] ・モジュールとは「機能or部品の最小単位」である( ≒ 関数) e.g. 引数[電源ボタンを押す]→main[下位モジュール呼び出し]→(モジュールa[PC内の電源を起動]→モジュールb[プラグから電力を給電]→モジュールc... 以下略...モジュールz[ディスプレイに信号送信])→起動[画面がつく] つまりモジュールは部品に過ぎないから複数個作って繋げて「一連の手続き」にする必要があるけど、オブジェクトは「一連の手続き」単位だからそれ単体で目的が達成ができる オブジェクトの中身、処理部分でモジュールが使われていて、スーパークラスとサブクラスみたいな親と子の関係性 こういう認識で合ってる? http://mevius.5ch.net/test/read.cgi/tech/1525787672/1
2: デフォルトの名無しさん [sage] 2018/05/08(火) 23:08:05.12 ID:fJWr41VM すまんが3行で http://mevius.5ch.net/test/read.cgi/tech/1525787672/2
3: デフォルトの名無しさん [] 2018/05/08(火) 23:38:30.49 ID:CKiuQAUI オブジェクト指向と モジュール構造って なにがちがうん http://mevius.5ch.net/test/read.cgi/tech/1525787672/3
4: デフォルトの名無しさん [] 2018/05/09(水) 00:31:03.56 >>1 細かなイディオムに気を取られるな CとJavaなんて本質的に何ら違いはない http://mevius.5ch.net/test/read.cgi/tech/1525787672/4
5: デフォルトの名無しさん [sage] 2018/05/09(水) 07:25:01.14 ID:1fXIfimd その程度のことも自力で理解できないなら向いてないから辞職しなよ http://mevius.5ch.net/test/read.cgi/tech/1525787672/5
6: デフォルトの名無しさん [] 2018/05/09(水) 12:17:55.13 ID:rGrv3OR8 >>4 まあ実際のとこ判らんくても実務ではなんとかなるかもしれんけどjava bronze試験通らんとあかんのよ どうせ試験までやるならきっちり理解して先進みたいなーと http://mevius.5ch.net/test/read.cgi/tech/1525787672/6
7: デフォルトの名無しさん [sage] 2018/05/10(木) 14:33:47.81 ID:Hy3BGaBt わからないからふんわりした批判しかできない良い例だね http://mevius.5ch.net/test/read.cgi/tech/1525787672/7
8: デフォルトの名無しさん [sage] 2018/05/10(木) 19:25:10.37 ID:4Q48RAux オブジェクト指向には色々な要素があるけど、まず構造体と同じようにデータをある単位に分割して、そのデータを操作できる関数をメソッドに限るってのが基本と思っていい Javaなら後は手続き型と何ら変わりなくて ・オブジェクト(データの塊)を作る ・メソッドを順番に呼び出して欲しいオブジェクトを作る ・適宜出力 これだけ http://mevius.5ch.net/test/read.cgi/tech/1525787672/8
9: デフォルトの名無しさん [] 2018/05/10(木) 21:10:01.25 ID:TJlxQGib >>8 丁寧にありがとう 今日教科書一通り読み終わって、>>8を見て認識が結構変わった c言語的に言うなら、モジュールは寧ろクラスに構造が近くて、関数はメソッド ここだけ見ればやってることはさほど変わりないんだね じゃあ何が違うのかと言えばただ1点、オブジェクトを作るか否か。 で、オブジェクトをc言語的に表現すると「構造体と関数を目的に応じてまとめたもの」。 こんな感じで合ってるかな http://mevius.5ch.net/test/read.cgi/tech/1525787672/9
10: デフォルトの名無しさん [] 2018/05/10(木) 21:46:33.09 ID:TJlxQGib ここまで考えてみて、「でもオブジェクトの挙動って全部クラスに書いてあるんだから、一々インスタンス化せんでも全部クラスでやりゃ良くない?」ってとこに戻ってしまった オブジェクトを作る利点って何があるのかな・・・ http://mevius.5ch.net/test/read.cgi/tech/1525787672/10
11: デフォルトの名無しさん [sage] 2018/05/11(金) 07:32:08.15 ID:kdHneLaR そう思うならインスタンスを作らず延々クラスを書き続ければ良い new禁止な http://mevius.5ch.net/test/read.cgi/tech/1525787672/11
12: デフォルトの名無しさん [sage] 2018/05/11(金) 08:56:48.68 ID:tjPjQfiQ >>10 敵Aと敵BのHPは同じクラスフィールドで管理するより別個のインスタンスフィールドで管理した方が楽でしょ? Aさんの残高とBさんの残高は別個のインスタンスに分けた方が処理を書くとき混乱しにくいでしょ? http://mevius.5ch.net/test/read.cgi/tech/1525787672/12
13: デフォルトの名無しさん [sage] 2018/05/11(金) 13:02:07.88 ID:kdHneLaR クラスはCで言うところの構造体を拡張したもの 中身の変数やインスタンスがメンバー 関数がメソッド インスタンスは他人が書いたAPIライブラリーから使用したいクラスを選んで 実体化したもの 基本実体化しないと利用できません残念 クラス メンバー メソッド が解ってCの知識があればあとはコードかけるよ オブジェクトは完成品かしら自分はあんまり使わない言葉だから適当 http://mevius.5ch.net/test/read.cgi/tech/1525787672/13
14: デフォルトの名無しさん [sage] 2018/05/11(金) 13:48:41.46 ID:tjPjQfiQ >>13 メソッドはあくまでメンバ関数では?(メソッドもメンバであるという意) あえて対称的な用語を用いるならフィールドとメソッドでしょう インスタンスを他所のライブラリ中クラスの実体化に限ってるのはシンプルに意味不明なんだけど何か理由があるの? http://mevius.5ch.net/test/read.cgi/tech/1525787672/14
15: デフォルトの名無しさん [sage] 2018/05/11(金) 14:01:37.76 ID:kdHneLaR ごちゃごちゃ言うなC的にシンプルに説明してる http://mevius.5ch.net/test/read.cgi/tech/1525787672/15
16: デフォルトの名無しさん [sage] 2018/05/11(金) 14:14:25.48 ID:tjPjQfiQ >>15 >>13 の前半みたいなのはシンプルに説明してるんじゃなくて間違ってるって言うんだよ 後半についてはまぁ理解はできんが納得はできる http://mevius.5ch.net/test/read.cgi/tech/1525787672/16
17: デフォルトの名無しさん [sage] 2018/05/11(金) 14:27:50.54 ID:kdHneLaR うるせえなじゃあお前が説明しろ ルールは同じ文字数で言葉遊びはすんな 出来なきゃ黙ってろ http://mevius.5ch.net/test/read.cgi/tech/1525787672/17
18: デフォルトの名無しさん [] 2018/05/11(金) 14:42:53.95 ID:kdHneLaR 俺が間違ってたか 大雑把にメンバー変数メンバーメソッドがクラスの中身な http://mevius.5ch.net/test/read.cgi/tech/1525787672/18
19: デフォルトの名無しさん [] 2018/05/11(金) 18:39:30.35 ID:i/s7a+bH やっぱり、ホリエモンのそっくりさんの社長が出て来る漫画に出てくる 最近の子はオブジェクト指向から入るからうんたらかんたら っていう悪口が間違っていることがよくわかる はじめからJavaを学んでオブジェクト指向から入った方が良い http://mevius.5ch.net/test/read.cgi/tech/1525787672/19
20: デフォルトの名無しさん [sage] 2018/05/11(金) 18:43:45.10 ID:ISO4iwOk そんな本職のプログラマが書いたわけでもないネタ漫画を 真に受けたらアカンと思うよ http://mevius.5ch.net/test/read.cgi/tech/1525787672/20
21: デフォルトの名無しさん [] 2018/05/11(金) 22:18:36.14 ID:zN/yjFOx >>12 あーなるほど 上の例で言えば、例えばインスタンス化せずにEnemyHPクラスで全てのHPを管理しようとした場合「敵AのHPを計算・出力したあと敵BのHPを計算・出力する」って順々の処理は出来るけど、 範囲攻撃して敵AとBのHPを同時に計算しなきゃならない時とか、敵Aを攻撃したあと敵Bを攻撃すると敵AのHPが上書きされちゃうから、一戦闘でエンカウントしうる敵の分、それぞれの状態を保存するようなメソッドなり変数なりなんなりが別途必要になったりする。 でもオブジェクトを適時作る機能 =インスタンス化があれば基本計算・出力機能だけで完結できるってことよね? http://mevius.5ch.net/test/read.cgi/tech/1525787672/21
22: デフォルトの名無しさん [] 2018/05/11(金) 22:46:01.84 ID:zN/yjFOx いやこの場合出力するってのは余計か メモリ上にデータを展開して都度そのデータを再利用したり加工したい場合、インスタンス化があるとソースコードが随分スマートになるってところが最大のメリットと理解したのじゃが http://mevius.5ch.net/test/read.cgi/tech/1525787672/22
23: デフォルトの名無しさん [sage] 2018/05/11(金) 22:49:14.90 ID:kdHneLaR パラメータのintの多次元配列作ってをごちゃごちゃいじるのより キャラ一体分のクラスを作ってそれを必要数複製した方が記述がスマートになるよってこと http://mevius.5ch.net/test/read.cgi/tech/1525787672/23
24: デフォルトの名無しさん [] 2018/05/11(金) 23:01:59.32 ID:/LKYW3YY C言語が理解できるなら、Xのソースを読んでみよう。 その後、高橋真奈著やさしいJavaを読もう。 あら不思議、スラスラ読めます。 おわり。 http://mevius.5ch.net/test/read.cgi/tech/1525787672/24
25: デフォルトの名無しさん [sage] 2018/05/12(土) 00:04:42.76 ID:qaTekKU3 Javaとオブジェクト言語を理解するにはRPGで例えると いちばんしっくり来るのはほんまやな スッキリJavaが人気本になるわけやで http://mevius.5ch.net/test/read.cgi/tech/1525787672/25
26: デフォルトの名無しさん [sage] 2018/05/12(土) 00:11:01.28 ID:+tHIUeTw Javaは意図的な分割が行える http://mevius.5ch.net/test/read.cgi/tech/1525787672/26
27: デフォルトの名無しさん [] 2018/05/12(土) 08:27:18.10 ID:FziDFmpA >>23 c言語的なアプローチなら敵状態パラメータをヘッダファイルに構造体として全部書いちゃって、呼出側は その構造体をデータ型としたEnemyAとかEnemyB変数に入れるみたいなやり方であれば、呼出側の負担は殆ど変わらないんじゃないかなって思ったんだけど、 >>13で言ってるようにオブジェクトは構造体を拡張したもの = メソッドまで含んでるってとこが肝なのかな? http://mevius.5ch.net/test/read.cgi/tech/1525787672/27
28: デフォルトの名無しさん [] 2018/05/12(土) 08:34:41.87 ID:FziDFmpA >>24 >>25 https://www.amazon.co.jp/dp/4797388269 https://www.amazon.co.jp/gp/aw/d/B07822SN14 これか、買ってみる! http://mevius.5ch.net/test/read.cgi/tech/1525787672/28
29: デフォルトの名無しさん [sage] 2018/05/12(土) 09:32:11.25 ID:0A/PAli+ >>27 その通り 例えばint HPが構造体の要素なら加減乗除何でもできてしまうわけだけどクラスのprivateフィールドだと例えば enemyA.damage(Power attacked)と enemyA.heal()とに操作を制限できるんだよね だから変な操作をしてしまえない http://mevius.5ch.net/test/read.cgi/tech/1525787672/29
30: デフォルトの名無しさん [sage] 2018/05/12(土) 19:34:10.74 ID:qaTekKU3 ゲームに登場するクラスがEnemyだけだったら そこまでオブジェクト指向のありがたみは感じないけど EnemyはそもそもHPやMPみたいなint型のプリミティブな変数だけじゃなくて SkillとかItemみたいなオブジェクトもフィールドとして当然持つことになるだろうし そのSkillやItemにもEffectというオブジェクトがフィールドにあるかもしれない って考えはじめると、手続き型よりコードを書くのが楽にn感じるようになる http://mevius.5ch.net/test/read.cgi/tech/1525787672/30
31: デフォルトの名無しさん [sage] 2018/05/13(日) 08:49:36.07 ID:FE+GfUzy >>28 やさしいJavaなつかしいな! おれは初版でお世話になった。何年前だろ。。おれも歳とったなぁ(´・ω・`) http://mevius.5ch.net/test/read.cgi/tech/1525787672/31
32: デフォルトの名無しさん [] 2018/05/13(日) 13:02:55.43 ID:rS373Qjo >>29 ふむふむ、効果は判った、いわゆるそれがカプセル化ってやつだよね 自分にも、他人にも構造体に対し使える操作を固定化させることで、プログラミングする際のミスを減らせるってことかな http://mevius.5ch.net/test/read.cgi/tech/1525787672/32
33: デフォルトの名無しさん [] 2018/05/21(月) 01:41:35.37 ID:j3ztAmor >>1 レス読んでないから解決済みかもだが × オブジェクトとは、操作に対する「一連の手続き」である ○ オブジェクトとは「物」。属性(プロパティ)と操作(メソッド)から成る で、 切り口が違う。例えば女をイカせたい場合、Cだと op=onna("AV女優"); ikaseru(op, KUNNI); に対し、Javaだと、op=new Onna("AV女優"); op.ikaseru(KUNNI); となるのだが、ニュアンスの違いわかるかな?操作から入るのではなく、物から入る そうすると、ソフトが複雑にならないって良さがあるんだけど、これも経験をつまないピンとこないと思う で × モジュールとは「機能or部品の最小単位」である( ≒ 関数) ○ モジュールとは「機能or部品をある程度まとまった単位でまとめた単位』である( ≒ フォルダ) で Javaの場合、パッケージと呼ぶ http://mevius.5ch.net/test/read.cgi/tech/1525787672/33
34: デフォルトの名無しさん [sage] 2018/05/21(月) 05:28:33.16 ID:wpeO3iTw >>33 レス読もうな 説明とかするならな http://mevius.5ch.net/test/read.cgi/tech/1525787672/34
35: デフォルトの名無しさん [sage] 2018/05/21(月) 23:15:24.83 ID:7HbOeApe どうでもいいけどなんでこういうふうにわざわざ下ネタを例にとる奴が定期的にわくんだろうな>>33 http://mevius.5ch.net/test/read.cgi/tech/1525787672/35
36: デフォルトの名無しさん [] 2018/05/23(水) 19:08:29.19 ID:Au5e7VGg 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方 役に立つかもしれません グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』 MHMJT http://mevius.5ch.net/test/read.cgi/tech/1525787672/36
37: デフォルトの名無しさん [sage] 2018/06/20(水) 16:05:37.57 ID:LR1LYzpB >>1 レス読んでないけどC言語はそれまでのプログラム言語が プログラマが処理先に自由にgotoしてよかったので 処理が飛びまくって後からの解析がシャレにならなくなっていたのに対して 「関数」として「数値入れると答えが出る」単位でプログラムしましょうという発想 C++などはその関数をクラスという単位にしてパーツの付け替え加工で 使い回せるようにしよう!という発想 Javaはちょっと違う系統のオブジェクト指向から思想を取り込んでるから 「クラス」に「命令を与えると答えが出る」単位にしようという発想 なんだかわからない数値を毎回後から来たプログラマーが 「この数値なんだろう?」って追わなくても 人間にわかる命令で「これをやる」って命令が送られると プログラムがやはり人間にわかる名前のつけられたデータを取ってきて 自分で命令された処理をやっているというコードが理想。 http://mevius.5ch.net/test/read.cgi/tech/1525787672/37
38: デフォルトの名無しさん [sage] 2018/06/20(水) 21:08:03.93 ID:FK42nbh4 >>37 30レスくらい読めバカタレ http://mevius.5ch.net/test/read.cgi/tech/1525787672/38
39: デフォルトの名無しさん [] 2018/07/05(木) 01:59:31.57 ID:RfoszcD2 W08 http://mevius.5ch.net/test/read.cgi/tech/1525787672/39
40: デフォルトの名無しさん [sage] 2018/08/22(水) 14:15:01.74 ID:Opme7aq9 C++の本でも読めばすぐわかるけどな http://mevius.5ch.net/test/read.cgi/tech/1525787672/40
41: デフォルトの名無しさん [sage] 2020/01/01(水) 15:25:32.54 ID:mtZC/qIi メソッドなんて要らん 関数使わせろ http://mevius.5ch.net/test/read.cgi/tech/1525787672/41
42: デフォルトの名無しさん [] 2020/06/22(月) 14:55:49.77 ID:khT4bacP Cのほうがjavaより簡単明朗。推奨されないメソッドの洪水は、見ていて気分が悪くなるし。 でもWebバックエンドならJava一択になるのかな。最初に覚えるなら絶対Cがおすすめ。 そのあとC++そしてjavaが最高の流れ。そこまでいけば、どんな言語もちゃらい・はずだが ・・ http://mevius.5ch.net/test/read.cgi/tech/1525787672/42
43: デフォルトの名無しさん [] 2020/06/22(月) 17:02:20.03 ID:5VJoOXgM あんまり関係ないけど、うちシャンプー、メリット。 http://mevius.5ch.net/test/read.cgi/tech/1525787672/43
44: デフォルトの名無しさん [] 2020/06/22(月) 18:49:08.79 ID:6gQqm8wo 既に解決してる単発スレでなに言ってんの ちゃんインシャンにきまってるわ http://mevius.5ch.net/test/read.cgi/tech/1525787672/44
45: デフォルトの名無しさん [sage] 2020/06/23(火) 01:20:34.08 ID:ie2ZK16d リンスインシャンプーはハゲるぞ http://mevius.5ch.net/test/read.cgi/tech/1525787672/45
46: デフォルトの名無しさん [] 2020/06/23(火) 16:04:37.34 ID:atXMAnwf Javaやるとハゲると昔から言われていたな・・ http://mevius.5ch.net/test/read.cgi/tech/1525787672/46
47: デフォルトの名無しさん [] 2021/07/04(日) 11:11:02.24 ID:FCGWZtZb 終わってるスレだが、オブジェクト指向の「考え方」を 知らずに、巨大クラス作るとそれは「グローバル変数と それを操る関数たち」っていう、最悪の状態になるんだよな。 http://mevius.5ch.net/test/read.cgi/tech/1525787672/47
48: デフォルトの名無しさん [] 2021/07/04(日) 12:05:50.02 ID:pili1Lz/ >>47 OpenGL用のC++ライブラリですね判ります http://mevius.5ch.net/test/read.cgi/tech/1525787672/48
49: Mb [] 2021/07/31(土) 17:10:51.16 ID:HS2AjqTr >>47 C だと変数領域を「共有」しているので、誰かがアドレスポインタを 間違えて使うと、酷い目に遭う。 Java だとローカルな変数をオブジェクトが「抱えて」いて、 それをメソッドを使ってどうこうしよう、という形になる。 ただ、それだとグローバル変数を経由しようとしたときに ややこしい話になるので、シングルトン実装したオブジェクトに 問合せをするとかいったことになる。 ぶっちゃけ C が解ってるんなら Java は難しくない。 ただ。おれみたいな年寄りからすると、可変長のメモリ領域の 扱いが便利すぎて、「ボケるのが早くなりそうだ (-_-!)」という 不安がある。 http://mevius.5ch.net/test/read.cgi/tech/1525787672/49
50: デフォルトの名無しさん [sage] 2021/08/01(日) 00:26:28.25 ID:jvrFygM5 >>47 所謂、神クラスのことかな。 一つのクラスに何でも詰め込みすぎて、実質、そのグラス内で定義されているメンバ変数がグローバル変数と化している状態って奴でしょ。 責務もハッキリしてないからテストもできない最悪の状態(再利用性・可読性が死んでる)になってることは容易に想像できる。 http://mevius.5ch.net/test/read.cgi/tech/1525787672/50
51: Mb [] 2021/08/01(日) 01:10:48.84 ID:poI7LMFp >>50 それって、C のモジュール化の時点で失敗しているので、 このスレの主旨である Java (あるいは OO)とは 何の関係もないように思う。 いや、言いたいことはわかるんだけど、 その手のとばっちりを喰った経験が多々あって、 トラウマに引っかかるので …… http://mevius.5ch.net/test/read.cgi/tech/1525787672/51
52: デフォルトの名無しさん [sage] 2022/12/23(金) 19:45:15.05 ID:k2wkvDO7 全部JNIで書けばおk http://mevius.5ch.net/test/read.cgi/tech/1525787672/52
53: デフォルトの名無しさん [sage] 2023/09/22(金) 14:01:04.27 ID:js4fs0bK 人を信じよ、しかしその百倍も自らを信じよ http://mevius.5ch.net/test/read.cgi/tech/1525787672/53
54: デフォルトの名無しさん [sage] 2023/10/13(金) 22:47:43.33 ID:HEQod4fb c言語の関数をclass内のmethodに置き換えるだけじゃね ?OOの基本はjava のチュートリアルだっけ原文に書いていた 気合いだ〜 http://mevius.5ch.net/test/read.cgi/tech/1525787672/54
55: デフォルトの名無しさん [] 2023/10/19(木) 09:33:38.28 ID:rcYEOPS6 C++的にJavaじゃなくて C的にJavaってのがミソか http://mevius.5ch.net/test/read.cgi/tech/1525787672/55
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.019s