• ベストアンサー

Javaを始めたばかりなのですが、どうしたら向上できるでしょうか?

これからSEとして働いていく者です。 会社の研修でJavaを学んでいるのですが、難しいと感じています。 特に、クラス間をまたいで引数やメソッドを指定することが苦手です。 何を当てはめたらいいのかわからなくなります。 それから、「キャスト」というのもよくわかりません。 「String型」や「int型」ならわかるのですが、自分で型を考えねばならないときは、それ自体思いつかないことが多いです。 人に教えてもらえば「そういうことか」と理解できるのですが、自分で考えるとすぐ壁にぶつかってしまいます。 どのような勉強をすればこのようなことを克服し、レベルアップしていけるでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.3

 全ての人間は二種類に分けられます。SWINGする者とSWINGしない者です。  ・・・・ええと、すみません。さて、オブジェクト指向、キャスト、すなわちブツを概念として捉える力。それはどう磨いていけば良いのでしょうか。  私のお勧めは、Swing(javax.swing.*)を勉強する事です。Swing関連のクラス構造をじーっと眺めます。まず眺めます。どんなクラスがあるかを眺めます。それぞれのクラスがGUI(目に見えるモノ)を表しているのでイメージしやすいと思います。  次にそれぞれのクラスのメソッドをじーっと眺めます。JFrame(窓)はCloseやResizeと、窓が振舞うべき機能を備えています。テキストボックスはテキストボックスらしい機能を持っている事が分かります。これも、実際にブラウザなんかで普段使っている窓、ラベル、テキストボックスなので、「車を分解するとボディとエンジンとタイヤに・・・・」なんていわれるよりよっぽど分かりやすいと思いませんか? でも、まぁ、ここはクラスよりも時間がかかると思います。眺めましょう。  そしてやっと、自分で窓が動くJavaアプリケーションを作ってみます。最初はここで躓くでしょう。まずは誰かのソースをコピペで良いです。とにかく動かしてみましょう。次第に「ああ、ここでテキストボックスにこんな指令(=メソッド呼び出し)を与えたから今こいつは背景が青色になったんだな」と、「モノに」「命令する」すなわち「オブジェクト(インスタンス)に」「メッセージを送信する」という事が分かってくる事と思います。  最後に、Swingのイベントについてしっかり勉強しましょう。「ボタンを押したらこのメソッドが呼ばれたけど、これはなんで?」これが「分かれば」もうJava技術者としては一人前だと思います。  あ。それとあと、スレッド。マルチスレッドとスレッド間の同期の知識があればもう文句なし。後は~ん~、Streamとは何ぞや、ってとこかな。この二つはオブジェクト指向というよりかはプログラミング言語よりの話です。Streamファミリーについては継承の勉強にもなるでしょう。ついでにInputStreamとReader、OutputStreamとWriteの関係とそれぞれの存在意義が分かればもうあなたは周りから崇め奉られるくらいのJavaレベルになっているはずです。  Java Coreパッケージ(java.*)はわりと綺麗な(オブジェクト指向的に理にかなった)構造になっているため、眺めるだけでも(もちろん「なんでこう分かれてるんだろう」と考えながら)勉強になると思います。  大丈夫。ある時突然頭の中に電気が走って、全てが「分かる」ようになります。人間の頭は元々オブジェクト指向が分かるようにできているのですというか実は普段我々は大体物事をオブジェクト指向で考えているんです。むしろJava以前の言語におけるプログラムの捕らえ方「構造化手法」の方が人間にとっては厄介なものですよ。

y1y9y8y1a
質問者

お礼

ありがとうございます。 「Swing」という言葉は会社の研修にはまだ出てきていないです。 でも、重要なものなのですね。 勉強していきたいです。 >指向が分かるようにできているのですというか実は普段我々は大体物事をオブジェクト指向で考えている これはわかります。 オブジェクト指向の概念を聞いたとき、「普通じゃん…」と思いました。自分が使いこなせてるかは別ですが。

その他の回答 (3)

  • rdyiojey
  • ベストアンサー率33% (3/9)
回答No.4

現SE兼PGです。 入社1年前から研修をしてもまったく理解できなかったんですよね。 こんな能力でやっていけるかな・・・と思っていました。 入社してからは必死に業務をやって覚えましたね 出来ないと首ですし・・・ 数をこなせば覚えられますよ ソースをたくさん書いてください。 そして、実際に動かし改造することです。

y1y9y8y1a
質問者

お礼

ありがとうございます。 数をこなす、ですか。 たしかに、まだまだソースを読む量も、自分で手を動かす量も少ないと思います。 しっかり勉強していきたいです。

  • hamnyan
  • ベストアンサー率50% (1/2)
回答No.2

>それはまだオブジェクト指向の領域ではないのですか? まだ入り口だと思います。 コンパイルエラーが出るなら文法のレベルですね。 基礎的な文法をやってはいかがでしょうか?

y1y9y8y1a
質問者

お礼

ありがとうございます。 >基礎的な文法 そうですね。わかってるつもりでも、使えていないことが多いです。 まずはそこからですね。

  • hamnyan
  • ベストアンサー率50% (1/2)
回答No.1

外国語を習うのと同じで、まずはそういうものと覚えてみてください。 理屈はその後です。 それより、後のオブジェクト指向のほうがやっかいですよ。

y1y9y8y1a
質問者

お礼

回答、ありがとうございます。 えーと、クラスがいくつも出てきて、その間で引数やメソッドのやりとりをするのが苦手なのですが、それはまだオブジェクト指向の領域ではないのですか? 「そういうもの」だとは思いますが、さすがに引数やメソッドは自分で指定しなきゃならないじゃないですよね? 文法として「そうである」ことは分かっていても、実際にじゃあその文法の中になにをもってくればいいのかがわからないんです。 英語にたとえるなら、SVOCという文法があるのはわかるんです。 でも、V、O、Cそれぞれになにを当てはめれば求められたものが実現できるのかがわからないんです。 "I have a pen"が正しいのに、"I run a table"にしてしまうようなものだと思います(たぶん)。 おかげでコンパイルエラーだらけなのです。

関連するQ&A

専門家に質問してみよう