2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

c言語的にjavaを教えて

1 :デフォルトの名無しさん:2018/05/08(火) 22:54:32.36 ID:CKiuQAUI.net
仕事でc言語をつめ込まれた直後にjavaやらされて混乱しとるんじゃが、オブジェクト指向とモジュール構造の差異を教えてほしい

いろいろ調べて自分なりの結論として

・オブジェクトとは、操作に対する「一連の手続き」である
e.g.
操作[電源ボタンを押す]→オブジェクト[PC]→起動[画面がつく]

・モジュールとは「機能or部品の最小単位」である( ≒ 関数)
e.g.
引数[電源ボタンを押す]→main[下位モジュール呼び出し]→(モジュールa[PC内の電源を起動]→モジュールb[プラグから電力を給電]→モジュールc... 以下略...モジュールz[ディスプレイに信号送信])→起動[画面がつく]

つまりモジュールは部品に過ぎないから複数個作って繋げて「一連の手続き」にする必要があるけど、オブジェクトは「一連の手続き」単位だからそれ単体で目的が達成ができる
オブジェクトの中身、処理部分でモジュールが使われていて、スーパークラスとサブクラスみたいな親と子の関係性

こういう認識で合ってる?

8 :デフォルトの名無しさん:2018/05/10(木) 19:25:10.37 ID:4Q48RAux.net
オブジェクト指向には色々な要素があるけど、まず構造体と同じようにデータをある単位に分割して、そのデータを操作できる関数をメソッドに限るってのが基本と思っていい

Javaなら後は手続き型と何ら変わりなくて
・オブジェクト(データの塊)を作る
・メソッドを順番に呼び出して欲しいオブジェクトを作る
・適宜出力
これだけ

9 :デフォルトの名無しさん:2018/05/10(木) 21:10:01.25 ID:TJlxQGib.net
>>8
丁寧にありがとう

今日教科書一通り読み終わって、>>8を見て認識が結構変わった

c言語的に言うなら、モジュールは寧ろクラスに構造が近くて、関数はメソッド
ここだけ見ればやってることはさほど変わりないんだね

じゃあ何が違うのかと言えばただ1点、オブジェクトを作るか否か。
で、オブジェクトをc言語的に表現すると「構造体と関数を目的に応じてまとめたもの」。

こんな感じで合ってるかな

10 :デフォルトの名無しさん:2018/05/10(木) 21:46:33.09 ID:TJlxQGib.net
ここまで考えてみて、「でもオブジェクトの挙動って全部クラスに書いてあるんだから、一々インスタンス化せんでも全部クラスでやりゃ良くない?」ってとこに戻ってしまった
オブジェクトを作る利点って何があるのかな・・・

11 :デフォルトの名無しさん:2018/05/11(金) 07:32:08.15 ID:kdHneLaR.net
そう思うならインスタンスを作らず延々クラスを書き続ければ良い
new禁止な

12 :デフォルトの名無しさん:2018/05/11(金) 08:56:48.68 ID:tjPjQfiQ.net
>>10
敵Aと敵BのHPは同じクラスフィールドで管理するより別個のインスタンスフィールドで管理した方が楽でしょ?
Aさんの残高とBさんの残高は別個のインスタンスに分けた方が処理を書くとき混乱しにくいでしょ?

13 :デフォルトの名無しさん:2018/05/11(金) 13:02:07.88 ID:kdHneLaR.net
クラスはCで言うところの構造体を拡張したもの
中身の変数やインスタンスがメンバー 関数がメソッド

インスタンスは他人が書いたAPIライブラリーから使用したいクラスを選んで
実体化したもの 基本実体化しないと利用できません残念

クラス メンバー メソッド が解ってCの知識があればあとはコードかけるよ
オブジェクトは完成品かしら自分はあんまり使わない言葉だから適当

14 :デフォルトの名無しさん:2018/05/11(金) 13:48:41.46 ID:tjPjQfiQ.net
>>13
メソッドはあくまでメンバ関数では?(メソッドもメンバであるという意)
あえて対称的な用語を用いるならフィールドとメソッドでしょう

インスタンスを他所のライブラリ中クラスの実体化に限ってるのはシンプルに意味不明なんだけど何か理由があるの?

15 :デフォルトの名無しさん:2018/05/11(金) 14:01:37.76 ID:kdHneLaR.net
ごちゃごちゃ言うなC的にシンプルに説明してる

16 :デフォルトの名無しさん:2018/05/11(金) 14:14:25.48 ID:tjPjQfiQ.net
>>15
>>13 の前半みたいなのはシンプルに説明してるんじゃなくて間違ってるって言うんだよ

後半についてはまぁ理解はできんが納得はできる

17 :デフォルトの名無しさん:2018/05/11(金) 14:27:50.54 ID:kdHneLaR.net
うるせえなじゃあお前が説明しろ
ルールは同じ文字数で言葉遊びはすんな
出来なきゃ黙ってろ

18 :デフォルトの名無しさん:2018/05/11(金) 14:42:53.95 ID:kdHneLaR.net
俺が間違ってたか
大雑把にメンバー変数メンバーメソッドがクラスの中身な

19 :デフォルトの名無しさん:2018/05/11(金) 18:39:30.35 ID:i/s7a+bH.net
やっぱり、ホリエモンのそっくりさんの社長が出て来る漫画に出てくる
最近の子はオブジェクト指向から入るからうんたらかんたら

っていう悪口が間違っていることがよくわかる

はじめからJavaを学んでオブジェクト指向から入った方が良い

20 :デフォルトの名無しさん:2018/05/11(金) 18:43:45.10 ID:ISO4iwOk.net
そんな本職のプログラマが書いたわけでもないネタ漫画を
真に受けたらアカンと思うよ

21 :デフォルトの名無しさん:2018/05/11(金) 22:18:36.14 ID:zN/yjFOx.net
>>12
あーなるほど

上の例で言えば、例えばインスタンス化せずにEnemyHPクラスで全てのHPを管理しようとした場合「敵AのHPを計算・出力したあと敵BのHPを計算・出力する」って順々の処理は出来るけど、
範囲攻撃して敵AとBのHPを同時に計算しなきゃならない時とか、敵Aを攻撃したあと敵Bを攻撃すると敵AのHPが上書きされちゃうから、一戦闘でエンカウントしうる敵の分、それぞれの状態を保存するようなメソッドなり変数なりなんなりが別途必要になったりする。
でもオブジェクトを適時作る機能 =インスタンス化があれば基本計算・出力機能だけで完結できるってことよね?

22 :デフォルトの名無しさん:2018/05/11(金) 22:46:01.84 ID:zN/yjFOx.net
いやこの場合出力するってのは余計か

メモリ上にデータを展開して都度そのデータを再利用したり加工したい場合、インスタンス化があるとソースコードが随分スマートになるってところが最大のメリットと理解したのじゃが

23 :デフォルトの名無しさん:2018/05/11(金) 22:49:14.90 ID:kdHneLaR.net
パラメータのintの多次元配列作ってをごちゃごちゃいじるのより
キャラ一体分のクラスを作ってそれを必要数複製した方が記述がスマートになるよってこと

24 :デフォルトの名無しさん:2018/05/11(金) 23:01:59.32 ID:/LKYW3YY.net
C言語が理解できるなら、Xのソースを読んでみよう。
その後、高橋真奈著やさしいJavaを読もう。
あら不思議、スラスラ読めます。
おわり。

25 :デフォルトの名無しさん:2018/05/12(土) 00:04:42.76 ID:qaTekKU3.net
Javaとオブジェクト言語を理解するにはRPGで例えると
いちばんしっくり来るのはほんまやな

スッキリJavaが人気本になるわけやで

26 :デフォルトの名無しさん:2018/05/12(土) 00:11:01.28 ID:+tHIUeTw.net
Javaは意図的な分割が行える

27 :デフォルトの名無しさん:2018/05/12(土) 08:27:18.10 ID:FziDFmpA.net
>>23
c言語的なアプローチなら敵状態パラメータをヘッダファイルに構造体として全部書いちゃって、呼出側は その構造体をデータ型としたEnemyAとかEnemyB変数に入れるみたいなやり方であれば、呼出側の負担は殆ど変わらないんじゃないかなって思ったんだけど、
>>13で言ってるようにオブジェクトは構造体を拡張したもの = メソッドまで含んでるってとこが肝なのかな?

28 :デフォルトの名無しさん:2018/05/12(土) 08:34:41.87 ID:FziDFmpA.net
>>24
>>25

https://www.amazon.co.jp/dp/4797388269

https://www.amazon.co.jp/gp/aw/d/B07822SN14

これか、買ってみる!

29 :デフォルトの名無しさん:2018/05/12(土) 09:32:11.25 ID:0A/PAli+.net
>>27
その通り
例えばint HPが構造体の要素なら加減乗除何でもできてしまうわけだけどクラスのprivateフィールドだと例えば
enemyA.damage(Power attacked)と
enemyA.heal()とに操作を制限できるんだよね
だから変な操作をしてしまえない

30 :デフォルトの名無しさん:2018/05/12(土) 19:34:10.74 ID:qaTekKU3.net
ゲームに登場するクラスがEnemyだけだったら
そこまでオブジェクト指向のありがたみは感じないけど

EnemyはそもそもHPやMPみたいなint型のプリミティブな変数だけじゃなくて
SkillとかItemみたいなオブジェクトもフィールドとして当然持つことになるだろうし
そのSkillやItemにもEffectというオブジェクトがフィールドにあるかもしれない
って考えはじめると、手続き型よりコードを書くのが楽にn感じるようになる

31 :デフォルトの名無しさん:2018/05/13(日) 08:49:36.07 ID:FE+GfUzy.net
>>28
やさしいJavaなつかしいな!
おれは初版でお世話になった。何年前だろ。。おれも歳とったなぁ(´・ω・`)

32 :デフォルトの名無しさん:2018/05/13(日) 13:02:55.43 ID:rS373Qjo.net
>>29
ふむふむ、効果は判った、いわゆるそれがカプセル化ってやつだよね
自分にも、他人にも構造体に対し使える操作を固定化させることで、プログラミングする際のミスを減らせるってことかな

33 :デフォルトの名無しさん:2018/05/21(月) 01:41:35.37 ID:j3ztAmor.net
>>1
レス読んでないから解決済みかもだが
× オブジェクトとは、操作に対する「一連の手続き」である
○ オブジェクトとは「物」。属性(プロパティ)と操作(メソッド)から成る
で、 切り口が違う。例えば女をイカせたい場合、Cだと op=onna("AV女優"); ikaseru(op, KUNNI); に対し、Javaだと、op=new Onna("AV女優"); op.ikaseru(KUNNI); となるのだが、ニュアンスの違いわかるかな?操作から入るのではなく、物から入る

そうすると、ソフトが複雑にならないって良さがあるんだけど、これも経験をつまないピンとこないと思う



× モジュールとは「機能or部品の最小単位」である( ≒ 関数)
○ モジュールとは「機能or部品をある程度まとまった単位でまとめた単位』である( ≒ フォルダ)


Javaの場合、パッケージと呼ぶ

34 :デフォルトの名無しさん:2018/05/21(月) 05:28:33.16 ID:wpeO3iTw.net
>>33
レス読もうな
説明とかするならな

35 :デフォルトの名無しさん:2018/05/21(月) 23:15:24.83 ID:7HbOeApe.net
どうでもいいけどなんでこういうふうにわざわざ下ネタを例にとる奴が定期的にわくんだろうな>>33

36 :デフォルトの名無しさん:2018/05/23(水) 19:08:29.19 ID:Au5e7VGg.net
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

MHMJT

37 :デフォルトの名無しさん:2018/06/20(水) 16:05:37.57 ID:LR1LYzpB.net
>>1
レス読んでないけどC言語はそれまでのプログラム言語が
プログラマが処理先に自由にgotoしてよかったので
処理が飛びまくって後からの解析がシャレにならなくなっていたのに対して
「関数」として「数値入れると答えが出る」単位でプログラムしましょうという発想

C++などはその関数をクラスという単位にしてパーツの付け替え加工で
使い回せるようにしよう!という発想

Javaはちょっと違う系統のオブジェクト指向から思想を取り込んでるから
「クラス」に「命令を与えると答えが出る」単位にしようという発想
なんだかわからない数値を毎回後から来たプログラマーが
「この数値なんだろう?」って追わなくても
人間にわかる命令で「これをやる」って命令が送られると
プログラムがやはり人間にわかる名前のつけられたデータを取ってきて
自分で命令された処理をやっているというコードが理想。

38 :デフォルトの名無しさん:2018/06/20(水) 21:08:03.93 ID:FK42nbh4.net
>>37
30レスくらい読めバカタレ

39 :デフォルトの名無しさん:2018/07/05(木) 01:59:31.57 ID:RfoszcD2.net
W08

40 :デフォルトの名無しさん:2018/08/22(水) 14:15:01.74 ID:Opme7aq9.net
C++の本でも読めばすぐわかるけどな

41 :デフォルトの名無しさん:2020/01/01(水) 15:25:32.54 ID:mtZC/qIi.net
メソッドなんて要らん
関数使わせろ

42 :デフォルトの名無しさん:2020/06/22(月) 14:55:49.77 ID:khT4bacP.net
Cのほうがjavaより簡単明朗。推奨されないメソッドの洪水は、見ていて気分が悪くなるし。
でもWebバックエンドならJava一択になるのかな。最初に覚えるなら絶対Cがおすすめ。
そのあとC++そしてjavaが最高の流れ。そこまでいけば、どんな言語もちゃらい・はずだが
・・

43 :デフォルトの名無しさん:2020/06/22(月) 17:02:20.03 ID:5VJoOXgM.net
あんまり関係ないけど、うちシャンプー、メリット。

44 :デフォルトの名無しさん:2020/06/22(月) 18:49:08.79 ID:6gQqm8wo.net
既に解決してる単発スレでなに言ってんの
ちゃんインシャンにきまってるわ

45 :デフォルトの名無しさん:2020/06/23(火) 01:20:34 ID:ie2ZK16d.net
リンスインシャンプーはハゲるぞ

46 :デフォルトの名無しさん:2020/06/23(火) 16:04:37.34 ID:atXMAnwf.net
Javaやるとハゲると昔から言われていたな・・

47 :デフォルトの名無しさん:2021/07/04(日) 11:11:02.24 ID:FCGWZtZb.net
終わってるスレだが、オブジェクト指向の「考え方」を
知らずに、巨大クラス作るとそれは「グローバル変数と
それを操る関数たち」っていう、最悪の状態になるんだよな。

48 :デフォルトの名無しさん:2021/07/04(日) 12:05:50.02 ID:pili1Lz/.net
>>47
OpenGL用のC++ライブラリですね判ります

49 :Mb:2021/07/31(土) 17:10:51.16 ID:HS2AjqTr.net
>>47
C だと変数領域を「共有」しているので、誰かがアドレスポインタを
間違えて使うと、酷い目に遭う。
Java だとローカルな変数をオブジェクトが「抱えて」いて、
それをメソッドを使ってどうこうしよう、という形になる。
ただ、それだとグローバル変数を経由しようとしたときに
ややこしい話になるので、シングルトン実装したオブジェクトに
問合せをするとかいったことになる。
ぶっちゃけ C が解ってるんなら Java は難しくない。
ただ。おれみたいな年寄りからすると、可変長のメモリ領域の
扱いが便利すぎて、「ボケるのが早くなりそうだ (-_-!)」という
不安がある。

50 :デフォルトの名無しさん:2021/08/01(日) 00:26:28.25 ID:jvrFygM5.net
>>47
所謂、神クラスのことかな。

一つのクラスに何でも詰め込みすぎて、実質、そのグラス内で定義されているメンバ変数がグローバル変数と化している状態って奴でしょ。
責務もハッキリしてないからテストもできない最悪の状態(再利用性・可読性が死んでる)になってることは容易に想像できる。

51 :Mb:2021/08/01(日) 01:10:48.84 ID:poI7LMFp.net
>>50
それって、C のモジュール化の時点で失敗しているので、
このスレの主旨である Java (あるいは OO)とは
何の関係もないように思う。
いや、言いたいことはわかるんだけど、
その手のとばっちりを喰った経験が多々あって、
トラウマに引っかかるので ……

52 :デフォルトの名無しさん:2022/12/23(金) 19:45:15.05 ID:k2wkvDO7.net
全部JNIで書けばおk

53 :デフォルトの名無しさん:2023/03/12(日) 19:27:59.16 ID:TJAhkM7Hw
クソ航空機飛は゛しまくって温室効果カ゛スに騒音にコ口ナにとまき散らして気候変動させて災害連発させて国土に国力にと破壊して大勢殺害して
─部の賄賂癒着業者と私腹を肥やし続ける公務員って、徴兵した兵士を何萬人も死なせたインパ−ル作戰の頃から何ひとつ変わってないよな
当時.曰本人は誤りを修正する道徳的勇氣か゛ないから負けたんた゛とか英國人に言われていたようた゛が,
金刷りまくって國民から実質的に巻き上げた金を大企業に配りまくって,ひとりて゛1兆圓もの資産を持つ圧倒的格差と優越的地位の濫用社会
にしてイノベ‐ションの源泉零細企業まで根絶やしにして國民を不幸に陥れていなか゛ら.てめえの頭の悪さを認めない黒田東彦なんて
まさにその通りだか゛,より的確な理解は、他人の権利を強奪して私腹を肥やすというのか゛日本人の根幹を形成する國民性た゛ということよ
その氷山の―角が賄賂汚職まみれの東京五輪なわけだが,薄汚い日本人に公権力なんて持たせれば俺も俺もと税金を盜取し尽くすのは必然
公務員は撲滅すべき國民の敵て゛あり、こいつらを─匹残らす゛討ち倒すことなくしてお前らの生活は苦しくなる一方だという現実を理解しよう!

創価学會員は,何百萬人も殺傷して損害を与えて私腹を肥やし続けて逮捕者まで出てる世界最惡の殺人腐敗組織公明党を
池田センセ━が□をきけて容認するとか本氣で思ってるとしたら侮辱にもほどがあるぞ!
hТΤPs://i、imgur.cоm/hnli1ga.jpeg

54 :デフォルトの名無しさん:2023/08/31(木) 00:28:28.58 ID:MziQqlNWm
統一教会との繋がりが発覚した公明党高木陽介って生理的にイラッとくるよな、顔が厶カつくのか、喋り方か、頭の悪さか゛滲み出る論理性の
なさを自信満々に喋り倒すあたりか.何が,少子化対策は給付対象外の人には関係のない話ではなく、年金やらにも影響する問題だヴォケ
いまだに公務員優遇年金は存続してるし消えた年金だのグリーンピアだの俺も俺もと食い荒らして誰も賠償してない問題はどうなったんだよ
「年金なんていらない。払わない」の中条きよしか゛参議院議員を続けてる意味を理解しろや.いつの間にやら税だのとほざいて強制加入だの
NHКみたいな送りつけ詐欺やって、俺も俺もと特殊詐欺を流行らせて,歴史的ハ゛カの黒田東彦は金刷りまくって1兆円もの圧倒的資産格差
形成させて、もはや労働者階級か゛子を産む行為自体を遺棄罪に等しくして,都心まで数珠つなき゛でクソ航空機飛は゛して温室効果ガスに騒音に
コ囗ナにとまき散らして人殺して私権侵害して私腹を肥やす強盜殺人の首魁斉藤鉄夫ら世界最悪の殺人腐敗組織公明党国土破壊省によって、
俺も俺もと強盗殺人を流行らせたりと、本当公明党は他人の権利を強奪して私腹を肥やすためた゛けに政治やってる史上最悪の外道集団だよな
(羽田)tТps://www.call4.jp/info.рhp?tУpe〓items&id=I0000062 , ttps://haneda-Project.jimdofree.com/
〔成田)ttps://n-souonhigaisosyoudan.amebaownd.com/
(テロ組織〕ТtРs://i.imgur.Сom/hnli1ga.jΡеg

55 :デフォルトの名無しさん:2023/09/22(金) 14:01:04.27 ID:js4fs0bK.net
人を信じよ、しかしその百倍も自らを信じよ

56 :デフォルトの名無しさん:2023/10/13(金) 22:47:43.33 ID:HEQod4fb.net
c言語の関数をclass内のmethodに置き換えるだけじゃね
?OOの基本はjava のチュートリアルだっけ原文に書いていた 気合いだ〜

57 :デフォルトの名無しさん:2023/10/19(木) 09:33:38.28 ID:rcYEOPS6.net
C++的にJavaじゃなくて
C的にJavaってのがミソか

20 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :

read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★