c言語的にjavaを教えて
Javaとオブジェクト言語を理解するにはRPGで例えると
いちばんしっくり来るのはほんまやな
スッキリJavaが人気本になるわけやで >>23
c言語的なアプローチなら敵状態パラメータをヘッダファイルに構造体として全部書いちゃって、呼出側は その構造体をデータ型としたEnemyAとかEnemyB変数に入れるみたいなやり方であれば、呼出側の負担は殆ど変わらないんじゃないかなって思ったんだけど、
>>13で言ってるようにオブジェクトは構造体を拡張したもの = メソッドまで含んでるってとこが肝なのかな? >>27
その通り
例えばint HPが構造体の要素なら加減乗除何でもできてしまうわけだけどクラスのprivateフィールドだと例えば
enemyA.damage(Power attacked)と
enemyA.heal()とに操作を制限できるんだよね
だから変な操作をしてしまえない ゲームに登場するクラスがEnemyだけだったら
そこまでオブジェクト指向のありがたみは感じないけど
EnemyはそもそもHPやMPみたいなint型のプリミティブな変数だけじゃなくて
SkillとかItemみたいなオブジェクトもフィールドとして当然持つことになるだろうし
そのSkillやItemにもEffectというオブジェクトがフィールドにあるかもしれない
って考えはじめると、手続き型よりコードを書くのが楽にn感じるようになる >>28
やさしいJavaなつかしいな!
おれは初版でお世話になった。何年前だろ。。おれも歳とったなぁ(´・ω・`) >>29
ふむふむ、効果は判った、いわゆるそれがカプセル化ってやつだよね
自分にも、他人にも構造体に対し使える操作を固定化させることで、プログラミングする際のミスを減らせるってことかな >>1
レス読んでないから解決済みかもだが
× オブジェクトとは、操作に対する「一連の手続き」である
○ オブジェクトとは「物」。属性(プロパティ)と操作(メソッド)から成る
で、 切り口が違う。例えば女をイカせたい場合、Cだと op=onna("AV女優"); ikaseru(op, KUNNI); に対し、Javaだと、op=new Onna("AV女優"); op.ikaseru(KUNNI); となるのだが、ニュアンスの違いわかるかな?操作から入るのではなく、物から入る
そうすると、ソフトが複雑にならないって良さがあるんだけど、これも経験をつまないピンとこないと思う
で
× モジュールとは「機能or部品の最小単位」である( ≒ 関数)
○ モジュールとは「機能or部品をある程度まとまった単位でまとめた単位』である( ≒ フォルダ)
で
Javaの場合、パッケージと呼ぶ どうでもいいけどなんでこういうふうにわざわざ下ネタを例にとる奴が定期的にわくんだろうな>>33 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
MHMJT >>1
レス読んでないけどC言語はそれまでのプログラム言語が
プログラマが処理先に自由にgotoしてよかったので
処理が飛びまくって後からの解析がシャレにならなくなっていたのに対して
「関数」として「数値入れると答えが出る」単位でプログラムしましょうという発想
C++などはその関数をクラスという単位にしてパーツの付け替え加工で
使い回せるようにしよう!という発想
Javaはちょっと違う系統のオブジェクト指向から思想を取り込んでるから
「クラス」に「命令を与えると答えが出る」単位にしようという発想
なんだかわからない数値を毎回後から来たプログラマーが
「この数値なんだろう?」って追わなくても
人間にわかる命令で「これをやる」って命令が送られると
プログラムがやはり人間にわかる名前のつけられたデータを取ってきて
自分で命令された処理をやっているというコードが理想。 Cのほうがjavaより簡単明朗。推奨されないメソッドの洪水は、見ていて気分が悪くなるし。
でもWebバックエンドならJava一択になるのかな。最初に覚えるなら絶対Cがおすすめ。
そのあとC++そしてjavaが最高の流れ。そこまでいけば、どんな言語もちゃらい・はずだが
・・ 既に解決してる単発スレでなに言ってんの
ちゃんインシャンにきまってるわ 終わってるスレだが、オブジェクト指向の「考え方」を
知らずに、巨大クラス作るとそれは「グローバル変数と
それを操る関数たち」っていう、最悪の状態になるんだよな。 >>47
OpenGL用のC++ライブラリですね判ります >>47
C だと変数領域を「共有」しているので、誰かがアドレスポインタを
間違えて使うと、酷い目に遭う。
Java だとローカルな変数をオブジェクトが「抱えて」いて、
それをメソッドを使ってどうこうしよう、という形になる。
ただ、それだとグローバル変数を経由しようとしたときに
ややこしい話になるので、シングルトン実装したオブジェクトに
問合せをするとかいったことになる。
ぶっちゃけ C が解ってるんなら Java は難しくない。
ただ。おれみたいな年寄りからすると、可変長のメモリ領域の
扱いが便利すぎて、「ボケるのが早くなりそうだ (-_-!)」という
不安がある。 >>47
所謂、神クラスのことかな。
一つのクラスに何でも詰め込みすぎて、実質、そのグラス内で定義されているメンバ変数がグローバル変数と化している状態って奴でしょ。
責務もハッキリしてないからテストもできない最悪の状態(再利用性・可読性が死んでる)になってることは容易に想像できる。 >>50
それって、C のモジュール化の時点で失敗しているので、
このスレの主旨である Java (あるいは OO)とは
何の関係もないように思う。
いや、言いたいことはわかるんだけど、
その手のとばっちりを喰った経験が多々あって、
トラウマに引っかかるので …… c言語の関数をclass内のmethodに置き換えるだけじゃね
?OOの基本はjava のチュートリアルだっけ原文に書いていた 気合いだ〜 C++的にJavaじゃなくて
C的にJavaってのがミソか