これからSEとして働いていく者です。
会社の研修でJavaを学んでいるのですが、難しいと感じています。
特に、クラス間をまたいで引数やメソッドを指定することが苦手です。
何を当てはめたらいいのかわからなくなります。
それから、「キャスト」というのもよくわかりません。
「String型」や「int型」ならわかるのですが、自分で型を考えねばならないときは、それ自体思いつかないことが多いです。
人に教えてもらえば「そういうことか」と理解できるのですが、自分で考えるとすぐ壁にぶつかってしまいます。
どのような勉強をすればこのようなことを克服し、レベルアップしていけるでしょうか?
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以前の言語におけるプログラムの捕らえ方「構造化手法」の方が人間にとっては厄介なものですよ。
ありがとうございます。
「Swing」という言葉は会社の研修にはまだ出てきていないです。
でも、重要なものなのですね。
勉強していきたいです。
>指向が分かるようにできているのですというか実は普段我々は大体物事をオブジェクト指向で考えている
これはわかります。
オブジェクト指向の概念を聞いたとき、「普通じゃん…」と思いました。自分が使いこなせてるかは別ですが。
No.4
- 回答日時:
現SE兼PGです。
入社1年前から研修をしてもまったく理解できなかったんですよね。
こんな能力でやっていけるかな・・・と思っていました。
入社してからは必死に業務をやって覚えましたね
出来ないと首ですし・・・
数をこなせば覚えられますよ
ソースをたくさん書いてください。
そして、実際に動かし改造することです。
ありがとうございます。
数をこなす、ですか。
たしかに、まだまだソースを読む量も、自分で手を動かす量も少ないと思います。
しっかり勉強していきたいです。
No.1
- 回答日時:
外国語を習うのと同じで、まずはそういうものと覚えてみてください。
理屈はその後です。
それより、後のオブジェクト指向のほうがやっかいですよ。
回答、ありがとうございます。
えーと、クラスがいくつも出てきて、その間で引数やメソッドのやりとりをするのが苦手なのですが、それはまだオブジェクト指向の領域ではないのですか?
「そういうもの」だとは思いますが、さすがに引数やメソッドは自分で指定しなきゃならないじゃないですよね?
文法として「そうである」ことは分かっていても、実際にじゃあその文法の中になにをもってくればいいのかがわからないんです。
英語にたとえるなら、SVOCという文法があるのはわかるんです。
でも、V、O、Cそれぞれになにを当てはめれば求められたものが実現できるのかがわからないんです。
"I have a pen"が正しいのに、"I run a table"にしてしまうようなものだと思います(たぶん)。
おかげでコンパイルエラーだらけなのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 大学受験 自己推薦書の添削や意見・アドバイスお願いします 2 2022/08/27 19:34
- 就職 先のことが不安すぎる(主に就職活動) 3 2023/06/27 09:37
- 転職 新卒3年目 異業種への転職について 5 2023/03/03 08:10
- 教育・学術・研究 仕事の方向性を変えたい。経営分析→数値解析 1 2023/06/18 16:51
- その他(就職・転職・働き方) 会社で働きながら他の活動にも参加する 3 2022/03/27 00:10
- その他(就職・転職・働き方) 会社で働きながら他の活動にも参加する 3 2022/03/27 00:07
- Java プログラミングのプの字も知りませんが、プログラミングを勉強したいです。とりあえず、学ぶものを決めない 3 2022/11/04 13:10
- その他(悩み相談・人生相談) 何歳になっても安定しない人生、暗闇を常に歩いていて、誰かに何とかして欲しいと思ってしまう 3 2023/02/06 09:50
- その他(悩み相談・人生相談) 陰キャな自分が嫌い 22歳高卒フリーター男です 18歳の頃大学受験に失敗しそのショックから軽いひきこ 2 2022/05/06 21:03
- Java 助けでください!!!!!!!!!!!! 4月から働き始めた新人SEです。 皆さんの体験談等を教えてい 7 2022/07/28 23:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
(vba)他のアプリケーションの右...
-
「ラッパークラス」の存在意義...
-
ASP.NETでの共通コードの書き方...
-
【継承】親のメソッドの実行
-
抽象クラスをJUNITでテストする...
-
【設計思想の質問】staticメソ...
-
interface,extend,implementの...
-
vb.net 自作プロパティの削除に...
-
c++でのヘッダーファイルの循環...
-
C++で参照カウンタを実装したい...
-
「継承されたメソッドの可視性...
-
Javaでは多重継承ができない、...
-
VB DLLプロジェクトについて
-
C# 「データが失なわれる可能性...
-
メソッドの引数にクラス名を渡す
-
c# この高速化の方法あり?
-
「IOException は対応する try ...
-
JTextFieldの入力制限
-
Java StringBuilderクラスについて
-
C#からDLLを呼びたいのですが・...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
interface,extend,implementの...
-
抽象クラスをJUNITでテストする...
-
「ラッパークラス」の存在意義...
-
(vba)他のアプリケーションの右...
-
ASP.NETでの共通コードの書き方...
-
VB DLLプロジェクトについて
-
C#からDLLを呼びたいのですが・...
-
c++でのヘッダーファイルの循環...
-
委譲って何ですか?
-
「継承されたメソッドの可視性...
-
【C#】クラスのコンストラクタ...
-
Javaでのジェネリクス型パラメ...
-
C# 「データが失なわれる可能性...
-
Excel vbaのプログラムでガンマ...
-
ファイルパスが取得出来ない(P...
-
オーバーライドとラッパーの違い
-
compareToにおける「自然順序付...
-
メソッドの引数にクラス名を渡す
-
vb.net 自作プロパティの削除に...
-
VBがオブジェクト指向言語でな...
おすすめ情報