• ベストアンサー

Javaに苦戦中!オブジェクト思考?リファレンスガイドって?

ただ今Javaについて参考書等で勉強中なのですが、基本的なことは大体わかったのですがどうもオブジェクト思考な開発まで行くと、 「何でこんなややこしいことするの?」とか 「何だこのクラスは?メソッドは?」とゆうことが増えてきてちんぷんかんぷんになってます。 参考書には「Java API リファレンスガイドを参照してください。」とあるのですが、これはネットで見れますか?マイクロソフトの英語のサイトしかないんですかね? ちなみに、仕事で使っておられる方々はクラスだとか、メソッドだとかその引数(コンストラクタ)とか覚えてるんですか?そのつど調べながら開発してるんですか? 教えてください!つまずいてます!!

  • Java
  • 回答数9
  • ありがとう数13

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

  • ベストアンサー
  • kazsharp
  • ベストアンサー率37% (16/43)
回答No.8

「JavaAPIリファレンスガイド」はマイクロソフトは関係ないです。なぜ誰も指摘しないのか。。。 1.4なら http://java.sun.com/j2se/1.4.2/docs/api/index.html 5.0なら http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/index.html で参照できます。 仕事で使うなら毎回Sunのサイトにアクセスするんじゃなしにダウンロードして参照します。 ダウンロードページは 1.4 http://java.sun.com/j2se/1.4.2/ja/download.html 5.0 http://java.sun.com/j2se/1.5.0/ja/download.html から そして他の回答者の方もおっしゃられてますが「よく使うものは覚えておく」ことです。 ただ「何がよく使うものかがわからない」というならJavaWorld(月刊の雑誌)に「API学習塾」という連載があるので購読して読むようにすればどうでしょう。 今発売中のJavaWorldを買えば連載第1回から読めますよ。(本屋に急げっ!) ちなみに今月の23日くらいに次の号が出ます。 最初のうちは誰でも「何が何だかさっぱりわからん」ものです。でも3ヶ月も勉強すれば「何でこんなことがわからんかったんやろ?」ってなります。 がんばってください。

anan23
質問者

お礼

リファレンスDLしました。 とても参考になりそうです。 ってゆうかこれはかならずいりますね! ありがとうございました。

その他の回答 (8)

  • PecoPlus
  • ベストアンサー率76% (144/188)
回答No.9

 こんにちは、C++を経験されているのなら、この書籍をお薦めします。 「Java 謎+落とし穴 徹底解明」 前橋和弥 著 技術評論社  Javaの肝になる部分がよくわかりますし、楽しく読めます。 「オブジェクト指向なんてのは、たったこれだけのことだったのか」って言う気になれます。 >「何でこんなややこしいことするの?」  この気持ちはよくわかります。  私も最初はそう思いました。  特にIO系の所では、 「なんで、たかだかテキストファイルの文字列を読むのに、こんな複雑な呪文を唱えなくてはいけないんだ!」  と思ってました。  仕組みがわかってみると、この絶妙な設計をした人を尊敬しちゃいます。  とにかく、ジャンジャン、プログラムを組めば、自然といろいろ覚えてしまいます。  それで覚えられない物は、覚える必要はなく、必要なときにリファレンスガイドを読めばよいことです。  逆に言うと、プログラムを組まない限り、覚えられません。  がんばってください。

  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.7

初心者の方はよく考え違いをするのですが、考え方が逆なのですよ。 「JAVAを使ってオブジェクト指向で作る」 のではなくて、 「オブジェクト指向をJAVAで実現する」 のです。 つまり、JAVA言語というのはオブジェクト指向での考え方を現実化するための言語であるわけです。 ということは、オブジェクト指向がわかっていなければ、本当の意味でJAVAを扱うことはできません。 ちらっと見ただけですが、良さそうな本があったので紹介しておきます。 クラスを覚えているかということに関しては、他のかたもおっしゃっているように、 よく使うものは覚えていて、そうでないものはその都度参照しています。 従って、ドキュメントが無ければコードは書けませんね。

参考URL:
http://www.amazon.co.jp/exec/obidos/ASIN/477412222X/qid%3D1113810812/249-8730635-2771532
anan23
質問者

お礼

参考の本は現在手元にあります。 つい先日本屋でみつけまして今熟読中です。 ありがとうございます。

  • siina-k
  • ベストアンサー率82% (14/17)
回答No.6

anan23さんは何かプログラム言語は習得済みなんでしょうか?オブジェクト指向の無いプログラムとあるプログラム(JAVAやC++)を比べるとオブジェクト指向のあるプログラムの方がわかりやすいと思われます。(まぁ、一概にそうとは言い切れませんが) プログラムを製造して終了ならいいのですが、この先改修や保守をしていく上で見やすいのはオブジェクト指向のほうですね。(仕事上、COBOLのプログラムをJAVAに変更したためCOBOLと見比べることが多いから実感しただけなんですが。) たぶん、初めてオブジェクト指向を勉強すると戸惑うのがそこだと思うんですが、そこを乗り越えるとほとんどJAVAを理解できるかと思います。 また、API仕様書のことなんですが、確かに、ほとんど覚えてしまっている方もいらっしゃいますが、かなり稀ですね。 クラスのメソッドの使い方を完璧に覚えるよりも、『このクラスのこのメソッドはこういう時に使える!』というのを覚えておくといいと思います。前の方が書いてあるように、JAVAをやる人は大体自分のPCにAPI仕様書をDLして持っているのであとはその使い方(引数等)を調べれば良いだけですからね。 まぁ、例を挙げると abcdefgの2番目の文字から4番目の文字を抽出したいとしますね。でも、どうやるんだろう?なんのクラスの何のメソッドを使えばいいんだろう?って悩むと思うんですが、そのときsubstringってのが確かそんなことができたかな?って知っていれば、それをAPI仕様書で調べれば使い方とかは乗ってますからね~。 長文駄文失礼致しました。

anan23
質問者

お礼

C++も多少は経験あるんですが、、、。 やはりちゃんと理解できてなかったみたいです。 再質問なんですが、Javaを使いこなせたら、C++も大体理解できるものですかね? オブジェクト思考という点ではほぼ同じかと。

  • TAKATON
  • ベストアンサー率62% (17/27)
回答No.5

>わかったのですがどうもオブジェクト思考な開発まで行くと、「何でこんなややこしいことするの?」 Java(に限らず、オブジェクト指向言語での)での開発経験が浅いうちは、「何でこんなややこしいことするの?」と考えてしまうのは当然でしょうね。私も最初はそうでした。 しかし、Javaでの開発経験をある程度積んでゆくと、(当然、その間はオブジェクト指向とは程遠いソースコードを量産するわけですが。)プログラムの構造的な面で様々な問題点に気づくようになります(ある複雑な処理をもう少しスリムなものにならないかとか)。 そのような場合に、デザインパターンについて調べてみると、「何でこんなややこしいことするの?」という考えが、「なるほど、このような方法があるのか」に変わるかもしれませんね(実際、私がそうでした)。

anan23
質問者

お礼

私も最初はそうでした。 って聞くとなんだか安心しました。 いきなりではやはり難しいみたいですね。 こつこつがんばります。 ありがとうございます。

  • hyde19
  • ベストアンサー率29% (196/661)
回答No.4

オブジェクト指向の場合は、自分でオブジェクトをプログラムで作らなくていいので、オブジェクトの属性(プロパティ)を変更するので作業としては簡便ですね。 クラスは、仕事を1つのプログラムにまとめるので、これも1つのオブジェクトになるのかな。 私も専門的にはやってませんが、プログラミングは色々と長くやってます。 リファレンスガイドはやはり必須ですね。全ての関数を文法を含めて覚えているなんて到底出来ません。 リファレンスは関連する関数を探し出したり、文法の確認や実例の確認に使っています。使用する言語毎にリファレンスを用意して作業しています。 最初はその都度調べながらやるものだと思いますよ。最初にリファレンスを頭にたたき込んでからやる人なんていないかと。 初めて言語をやった時は、とにかく他人の作ったプログラムを打ち込んで、先人の知恵から経験を積みました。 今は、それらの経験がありますから、必要な機能にどんな関数があるか想像できるようになりました。そこでリファレンスを見て使い方を確認するのです。 それでも初めて触る言語の場合、実例をいくつかやって練習をし、基本的な組み立て方を覚えて、それから自分の作りたい物を考えています。

anan23
質問者

お礼

なるほど。 とりあえず丸写しでも手を動かしてみます。 そのうち自然に身につけばよし!ですね。 ありがとうございます。

  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.3

参考にするコードを一行一行手入力していっては コンパイルしてデバッグする。 この作業を何回も繰り返し コード自体も暗記できる 位やって 続けられるのであればいずれ身に付くと 思います。 私はあまり向いていないせいか DOS窓を開くだけで 身震いします。

anan23
質問者

お礼

笑。 こつこつやってみます。 ありがとうございます。

回答No.2

>ちなみに、仕事で使っておられる方々はクラスだとか、メソッドだとかその引数(コンストラクタ)とか覚えてるんですか?そのつど調べながら開発してるんですか? 基本的なものや、よく使うものはそのうち自然と覚えますよ。 あとは日本語のjavadocをDLして、ローカルにおいて、IEのお気に入りに入れてます。 オブジェクト指向については奥が深いというか、 一朝一夕で身につくものじゃないと思うので、 ゆっくりでいいからちゃんと一歩ずつ理解していくのがいいと思います。 という自分もまだまだですが。

anan23
質問者

お礼

そうですね。 半月でマスターするつもりでしたが無理かな? 少しずつでも着実に進めていくようにします。 ありがとうございます。

回答No.1

日本語はここをみてください。 >「何でこんなややこしいことするの?」とか やってるうちに分かってきますが、 勉強するならば結城先生のデザインパターンの本でもご参考ください。

参考URL:
http://java.sun.com/j2se/1.4/ja/docs/ja/api/index.html
anan23
質問者

お礼

ありがとうございます。 わかりやすいリファレンスですね。 参考にさせていただきます。

関連するQ&A

  • Javascriptでオブジェクト思考は可能でしょうか?

    Javascriptでオブジェクト思考は可能でしょうか? クラスを作成して、変数を隠ぺいして、コンストラクタ・メソッドとか 継承などできるのでしょうか? 簡単なサンプルがあれば助かります。

  • モジュールの概念・リファレンスとオブジェクト

    {  package TEST;  new { bless {}; }  method {} } 最も簡単な(何もしない)クラスを作ってみたのですが、 $obj = new TEST; とした場合、この戻り値は『自分がどのパッケージに属しているか知っているリファレンス』である、と理解しました。 ここで考えたのですが、パッケージ外で $obj->method(); とした場合は『クラスのメソッド』を呼べると思うのですが 『自分がどのパッケージに属しているか知っているリファレンス』=要するにリファレンス に対してアロー演算子をつけると、クラスオブジェクトを表すようになるという概念が理解できません。 $obj->method(); は リファレンス->関数 という事になり、意味がわかりません。 挙動はわかるのですが、内部的にどのように処理しているのかをご存知の方、もしくはそれに関して言及している資料などご存知の方が居ましたら教えていただけないでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • APIリファレンス

    こんにちは。java初心者のokwebsamaです。 今回ここで質問というか相談というか・・・・ javaのAPIリファレンスのサイト↓ http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/index.html よりわかりやすくクラスを説明してあるサイトどなたか知りませんか? 内容が難しくて書いてある意味がよくわかりません! 書籍などでもあったら教えて下さいm(--)m

    • ベストアンサー
    • Java
  • JavaのFileWriterについて

    はじめまして。 以下のようなプログラムで、new FileWriter("test1.txt")の【test1.txt】が最終的にどの親クラスのコンストラクタ(メソッド?)に渡されて処理されるのかがわかりません。 new演算子で FileWriterオブジェクトを作成した際に、importした親クラスのFileWriterクラスにあるコンストラクタが呼び出されるのだろうとは思っています。 そこで、JavaのAPIのサイトにて、クラス FileWriterの説明(http://docs.oracle.com/javase/jp/6/api/)を読みましたが、コンストラクタが複数紹介されており、下記のプログラムに当てはまるものがどれか分かりませんでした。 また、クラス FileWriterの説明ページのコンストラクタの概要にあるpublic FileWriter(File file)というコンストラクタの場合、引数リストのFileにもリンクがあり、Fileのリンク先のページであるクラス Fileの説明(http://docs.oracle.com/javase/jp/6/api/)を読みましたが、結局test1.txtがどのクラスのコンストラクタ(メソッド?)でどのように処理されているのかが分かりません。 どうかご教示いただきたく、よろしくお願い致します。 import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; public class Sample7 { public static void main(String[] args){ PrintWriter pw = null; try{ pw = new PrintWriter (new BufferedWriter(new FileWriter("test1.txt"))); pw.println("Hello!"); pw.println("GoodBye"); System.out.println("ファイルに書き込みました。"); }catch(IOException e){ System.out.println("入出力エラーです。"); }finally{ if(pw != null){ pw.close(); } } } }

    • ベストアンサー
    • Java
  • APIリファレンスはどこにありますか

    初歩的な質問で申し訳ないのですがjavascriptで提供されている すべてのメソッドの説明がかかれたリファレンスのようなもの(言語仕様書?) はどこからダウンロードすればいいのでしょうか。 javaでいうと下記サイトのようなものはないのでしょうか。 http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/index.html

  • JavaのAPIについて

    Java Speech APIというのを使ってみたいのですが、どのバージョンのJ2SEをダウンロードしてみても入っていません。APIは自分で追加できるのでしょうか。また、どのようにするのでしょうか。 ●リファレンス http://java.sun.com/reference/api/index.html ●Java Speech API http://java.sun.com/products/java-media/speech/ ●パッケージ http://java.sun.com/products/java-media/speech/forDevelopers/jsapi-doc/index.html

    • ベストアンサー
    • Java
  • オブジェクト生成時のセオリーについて

    オブジェクト指向を採用しているプログラミング言語において、ほとんどの場合、オブジェクト生成時に使用されるコンストラクタは返り値を持てません。 また、コンストラクタにて例外を投げるといったことは推奨されていないケースが多いです。 そんな中で、コンストラクタに何らかの引数を渡してインスタンスを生成するクラスの場合、不十分な引数を渡すことで使用できない状態となるインスタンスが生成されることがあります。 こういったことを踏まえて、渡される引数が適しているものであることを確認する役割というのは使用されるクラス自身が担うのか、クラスを生成する外部の処理(ファクトリー的なクラス・メソッド)が担うのか、どちらが一般的なセオリーなんでしょうか? 無論、不十分なインスタンスが誤って使用されないようにメソッドにエラー処理をかけ、「使用できない状態のオブジェクトである」ことを通知するのは当然なのでしょう。 ただ、最近知り合いから「クラスはできるだけ不変な状態を保つよう設計した方がいい。そのほうが使いやすく、再利用時のバグが減る」という話を聞いて状態を持たないクラスの設計というのを考えこんでしまい、悩んでいます。 わかりにくい質問かもしれませんが、回答よろしくお願いします。

  •  superについて教えて下さい

     superについて教えて下さい  JAVAの初心者です、宜しくお願いします。  「super」についてよくわかりません。 ある本には、「親クラスのコンストラクタを呼び出す」、またある本には、「親クラスのオブジェクトを呼 び出す」、と書かれていました。  ・コンストラクタとオブジェクトとは同じ意味なのでしょうか。  ・また、ある本には、「コンストラクタの継承はされない」とかかれていますが、どのように違うのでしょうか。  ・JAVAのApIには、次のように書かれています。   「paint     public void paint(Graphics g)コンテナをペイントします。このコンテナの子コンポーネントで    あるすべての軽量コンポーネントへペイント要求を転送します。このメソッドが再実装される場合、軽量    コンポーネントが正しく描画されるように super.paint(g) を呼び出さなければなりません。    (以下略)」   super.paint(g)と各意味は、親クラスのメソッドを呼びだすことで、親クラスのメソッドを呼びだす時に  も、superが必要ということでしょうか。  コンストラクタ自体についてよく理解出来ていないのですが  ・そもそもクラス(オブジェクトの生成)にとってどのような役割、意味があるのでしょうか。   オブジェクトの生成すると、デフォルトで自動的に引数なしのコンストラクタが作成されると書かれています  が、  ・作成されること自体にどのような意味があるのでしょうか。  変数の初期化とかをコンストラクタ内で設定するのは意味があるとは思うのですが、、、、

    • ベストアンサー
    • Java
  • Java コード教えてください。

    【Java】以下のコードを教えてください。 夕食のメニューを表示するプログラムの作成を行う。 以下の仕様を満たし、実行例のように 動作するSupperMenu.java、Supper.javaを作成しなさい。 [SupperMenu.java]  String型のフィールドmaindish (主食)(初期値は設定しない)、sidedish(副菜・スープ)(初期値は設定しない)を持つ。 いずれもクラス外からはアクセスできない。 2つのコンストラクタを持つ。 引数を持たないコンストラクタは、コンストラクタを実行した際にSupperMenuクラス のフィールドmaindishとsidedishにそれぞれ”ムニエル”と”スープ”を代入する。 クラス 外からアクセスできる。  String 型の仮引数 md と sd を持つコンストラクタは、コンストラクタを実行した際に SupperMenuクラスのフィールドmaindishとsidedishにそれぞれmdとsdの文字列を 代入する。 クラス外からアクセスできる。  引数も戻り値も持たないメソッドshowMenu()を持つ。 maindishとsidedishの情報を用いて 夕食のメニューの表示を行う。 クラス外からアクセスできる。 [Supper.java]  以下の内容を記述する。 1 class Supper{ 2 public static void main( String [] args ){ 3 SupperMenu sm1 = new SupperMenu(); 4 SupperMenu sm2 = new SupperMenu("ステーキ", "サラダ"); 5 sm1.showMenu(); 6 sm2.showMenu(); 7 } 8 }

  • javascriptからjavaを呼び出したい

    javascriptの勉強中です。 javascriptでajaxを用いてjavaのメソッドにアクセスし、結果をjavascriptに返す、という実装をしたいのですが上手く行きません。 流れとしては以下のようなものを想定しています。 js /project/WebContent/js/testJS.js(画面の値を引数としてtestJavaクラスのtestMethodメソッドを呼び出す) ↓ java /project/src/java/jp/co/application/util/testJava.java(受け取った引数の値をtestDAOクラスのtestDAOMethodメソッドに渡す) ↓ java /project/src/java/jp/co/application/dao/testDAO.java(受け取った値を用いてDBにアクセスし、結果をjsに返す) まず技術的に、同じプロジェクト内のjavaメソッドをjs上で呼び出し、結果を受け取るということは可能なのでしょうか。 ご教示お願いします。

専門家に質問してみよう