どうも、脱サラ理学療法士のぼんぼりです。
Java学習にいそしんでいますが、頻繁に躓いている状況です。
ググってみても「ストライク!」みたいな記事にはいまだ出会えず…いや、たぶんじっくり調べたら出てくるんでしょうけど、僕には見つけられないんですよね。
ていうか、僕の理解度が圧倒的についていけていないということが原因かもしれません。
ということで、現状の理解度をアウトプットして整理しておきます。
メソッドやクラスって何なの?
Java学習を始めて、ずっと疑問だったのが「public void〜」とかいう謎の宣言です。
とりあえず文字列をシスアウトするだけで精一杯だった頃は、この宣言はただデフォルトでそこにあるだけということで強引に理解しようとしていました。
でも、少し勉強したらこの宣言こそがJavaの真骨頂ということがわかったのです。
というのも、Javaってのがオブジェクト指向言語と呼ばれるのが、このメソッドやクラスを用いて様々なプログラムを作っていくスタイルだからなんですね。
たしかそんなニュアンスです。
いろんな部品を使い倒すのがJavaっていう言語の特徴だと理解しているんですが、その根幹を担っているのがメソッドとかクラスなんですね。
どんなふうに使えるか
ざっくり、クラスは「ある目的物のまとまり」みたいなもんで、そのクラスの中身を占めている「目的を達成するための仕事とか役割」がメソッドといえます。
明確な定義は調べたらいくらでも出てくるので、興味のある人はググってみましょう。
僕の理解では、クラスはプログラムの外枠を構成して、メソッドでいろんな役割を取り付けていくイメージを持っています。
引数のイメージ
僕がつまづいているのがココ。
引数と値と変数の扱いで混乱してしまうんですよ。
引数っていうの「();」で囲まれている中の値ですね。
たとえばメインメソッドに「number(1,2);」っていうのがあれば、この()の中にある数字をnumberメソッドに引っ張って、計算したり代入したりするんですね。
で、このnumberメソッドが
「number(int n, int m){」って宣言されていたら、そのメソッド内で扱う変数はnとmになります。
で、そいつらには最初にメインメソッドで宣言した数字が入っているということです。
それをnumberメソッド内で出力すれば引数を「渡す」ミッション達成となります。
「戻す」と「渡す」がごっちゃごちゃ
先程のメソッド内の数字は実引数でして、こやつがメソッドに引っ張られていじくり倒されるという仕組みです。
これをJavaプログラミングでは「渡す」と表現されますが、もう1つ似た表現に「戻す」というものがあります。
慣れると簡単なことなのかもしれませんが、この渡すと戻すがいまいち理解できていませんでした。
どうやら、戻すってのはサブメソッド内の処理をメインメソッド内に戻して、メインメソッドで出力するってことらしいですよ。
サブから戻すから「戻り値」で、この戻り値を指定するためには「return」文を使います。
これは、メソッド内の処理を終了させるとともに、その処理をリンク先に戻すっていう役割を持っているんです。
この文があれば「あ、なんかメインに戻しよるな」という理解でいいと思います。
急にfor文とかif文とかを使い出すと焦る
ただ、メソッドごとの処理でいろんな構文を使うとなると混乱します。
たとえば、if文を使ったメソッドを作るとかですね。
条件が通ればif{ }内の処理を行って、戻すならreturnを使うって感じです。
もうここまでくると、いろいろ値や変数を使ってしまうんですが、どうやら同じ変数はそれを宣言したメソッド内でしか使えないとのこと。このルールが僕の頭をさらに追い込んでくるんですよね。
もう全部同じ変数使い倒してやろうかって試しましたが、それをするとおびただしい数のエラーがでて消耗しました。
当たり前ですが、きちんとルールは守りましょうね。
プログラミングでは、苦し紛れにめちゃくちゃなコードを作っても、めちゃくちゃなエラーが出てコンピュータからお叱りを受けるだけです。
なので、根性で乗り切るとか精神論が通用しません。
「ていうか、ちゃんと調べてよね」っていうコンピュータからのメッセージでしょうかね。
まとめ:簡単なコードから身につけるべし
おおまかに、メソッドやクラスってのは「Java内のネットワークを作っている」と理解できますね。
ただ、それを実際に使いこなすってところではやや混乱してしまいます。
特に、値や変数、引数と戻り値の行方や宣言のタイミングとかですね。
ほんと、いつどんな変数を宣言したらいいのかわからなくなります。
なので、簡単なコードから地道に理解をつなげていくしかないんでしょうね。
ということで、もっかいわかるまでググってみます。


コメント