• ベストアンサー

Javaの理論的な専門書

Javaの理論的な専門書を探しています おすすめあれば教えてください オブジェクトとは? など哲学的な内容です

  • Java
  • 回答数8
  • ありがとう数6

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

  • ベストアンサー
回答No.2

クラスの継承はザックリと言うと系統樹のような感じです(添付画像の名前が付いてる所がクラスに対応すると言う感じです)。 添付画像は下記ページから引用。 哺乳類 https://ja.wikipedia.org/wiki/%E5%93%BA%E4%B9%B3%E9%A1%9E

town52google
質問者

お礼

ありがとうございます

その他の回答 (7)

回答No.8

ちなみに知らない間にサーバー・サイドJavaも大きく様変わりしてしまったようです。 現状では特に必要ないかもしれませんが、(どのように様変わりしたか)大まかにでも知っておいた方が良いでしょう。 (昔々)サーバー・サイドJavaには、「JSP(JavaServer Page)」、Servletについては「Java Servlet」、サーバー・サイドJava Beanについては「EJB(Enterprise JavaBeans)」の3系統が有りました。 サーバー・サイドJavaの進化形としてJSF(JavaServer Faces)フレームワークが登場しました。 「JSP(JavaServer Page)」の代替として「Facelets(XHTML)」が、「Java Servlet」の代替として「Faces Servlet」(+「faces-config.xml」)が、サーバー・サイドJava Beanについては(「Managed Bean」が追加され)「EJB(Enterprise JavaBeans)」、「Managed Bean」となりました。 ちなみに「Facelets(XHTML)」は「JSP(JavaServer Page)」とは違いJava言語系ではなく、XHTML系になります。 「Faces Servlet」は完成されたコントローラであり、ザックリと言うと「faces-config.xml」に「ページ遷移ルール」言語を記述することにより、「Faces Servlet」は それを解釈してページを遷移するようです(プログラマーはFacesServletを記述する必要は無いようです、と言うかプログラマーはFacesServletを記述してはならないようです)。 ただし、「ManagedBeanは次のJSFバージョンで無くなる予定」だそうで、代替として(ManagedBeanが統合された?)「CDI(Contexts and Dependency Injection)/EJB(Enterprise Java Beans)」になるようです(意味合いとしては「EJB(Enterprise JavaBeans)」と「CDI(Contexts and Dependency Injection)/EJB(Enterprise Java Beans)」は同じものですので、代替として(ManagedBeanが統合された?)「EJB(Enterprise Java Beans)」になると思われます)。

回答No.7

ちなみに知らない間に「Thread」は非推奨になっているようです。 Java EE 7で並列処理がケタ違いに速くなる! 使いこなしのポイントは?──Java Day Tokyo 2013レポート https://blogs.oracle.com/wlc/java-ee-7-java-day-tokyo-2013 >Java EE 7では、「Concurrency Utilities for Java EE」の導入により、マルチコア・プロセッサの能力を余すことなく引き出し、並列処理を格段に速く行えるようになる。 ↑このJava EE(Enterprise Edition)はサーバー側の開発環境の話です。 >2004年にJava SE 5でConcurrency Utilitiesを導入。 ↑このJava SE(Standard Edition)はクライアント(一般の個人のPC)側の開発環境の話です。 >2011年にリリースされたJava SE 7ではFork/Joinに対応。さらに、2014年にリリース予定のJava SE 8ではラムダ式をサポートし、これまで以上に並列処理が簡単に記述できるようになるという。 >「スレッド処理に関して、いまだにJavaの登場当初からのnew Thread(r).start(); などと書いているプログラムを多く見かけるが、もうこのような実装はやめたほうがよい」とアドバイスした。 >そこで現在、スレッドを直接生成する方法に代わって推奨されているのが、Java SE 5 から導入されたConcurrency Utilitiesである。Concurrency Utilitiesは並列処理の実装を簡素化するために導入されたAPIで、これを利用することによってスレッドのライフサイクル管理が簡単になるほか、スケーラビリティやパフォーマンスが大幅に向上するのだという。 >このデモでは、シングルスレッドやマルチスレッドのプログラムが256個のうち一部のプロセッサしか利用できないのに対して、Concurrency Utilitiesを使った場合は256個のプロセッサの負荷がほぼ同時に限界まで達し、瞬時に処理を終えることが確認できた。 >「Javaはパフォーマンスが悪いという声を聞くことがあるが、それは間違い。パフォーマンスが悪いのは、いまだに古いやり方でプログラムを書いているからにすぎない。Concurrency Utilitiesでマルチコア・プロセッサの能力をフルに使い切れば、Javaは驚異的なパフォーマンスを発揮する」

回答No.6

Java 5(jdk 1.5)以降では(「プリミティブ型、オブジェクト型」の自動変換)「オートボクシング、アンボクシング」が導入されました。 「オートボクシング、アンボクシング」以外はオブジェクト指向プログラミングとは関係ありませんが、知っておいて損はないでしょう。

town52google
質問者

お礼

ありがとうございます

回答No.5

「オブジェクト指向」とか簡単にできちゃう人は自分基準でモノを話すので参考にならないでしょう、そう言う人は「難しい事を考えずに普通にプログラム組めば良いんだよ」とか言っちゃたりします。 オブジェクト指向プログラミング言語は、ざっくりと言うと再利用によってプログラマーのヒューマン・エラー(バグ)を低減させるのがセールス・ポイント(再利用とはソースの一元化も含まれる、ソースの一元化を徹底させる事でデバッグを低減させる事ができるが、大きなプロジェクトだと難しいかもしれない)。 昔のJavaなどではObject型に何でもかんでもブチ込んでしまうような場面も多々ありましたが、Java 5(jdk 1.5)以降ではGenerics(ジェネリクス)「総称型」がサーポートされ、安全性と再利用性が両立しました。 Generics(ジェネリクス)「総称型」のサーポートにより本当の意味での「ヒューマン・エラー(によるバグ)を低減させる」と言う理念が実現できたと言って良いでしょう(つまり、それ以前では その理念が実現できていなかった)。 ★(1).クラス(設計図)からインスタンス(実体)を量産できる。 例えば、自動車の設計図(クラス)が有れば、実物(インスタンス)の自動車を (10台でも、20台でも)いくらで製造できると言う感じ。 ★(2).クラスを継承し機能を拡張できる。 この場合、当然ゼロから作るのではなく継承元のクラスを活用する事ができるので、その分 労力の削減でき、手間が少なくなるので その分 プログラマーのヒューマン・エラー(バグ)も多少 低減できます。 ★(3).ラップ(分かりやすく例えるとプラグイン)によるオブジェクトの再利用。 様々なオブジェクトを乗せ変えて活用させる事ができます(実際の PC で分かりやすく例えるなら、NVIDIAのグラフィック・ボードがさせるとか、AMDのグラフィック・ボードがさせるとか、その他のメーカのグラフィック・ボードがさせるとか、そんな感じで機能を拡張できる)。 ★(4).オブジェクト志向プログラミングのデメリットは肥大化です。 つまり、上記のように再利用できないモノはオブジェクト化のメリットがなく、デメリットだけだと言って良い程です。 ※注意点としては、オブジェクト指向プログラミングではクラスの継承ばかりがクロズアップされますが、クラスの継承では対応できない場合もあると言う認識が必要です。 その場合は、ラップ(分かりやすく例えるとプラグイン)を考慮してみて下さい。

town52google
質問者

お礼

ありがとうございます

回答No.4

質問者さんはJavaのオブジェクト指向について、というよりもオブジェクト指向とは何ぞや、という所に疑問を持たれていると思います。 そういった視点で、おすすめの書籍をご紹介します。 ・いちばんやさしいオブジェクト指向の本[第二版] ・わかりやすいJava オブジェクト指向編

town52google
質問者

お礼

ありがとうございます

回答No.3

>回答No.2 amanojaku1 クラスは設計図です、クラスからインスタンス(実体)を いくらでも生成できます。 例えば、自動車の設計図(クラス)が有れば、実物(インスタンス)の自動車を (10台でも、20台でも)いくらで製造できると言う感じです。

town52google
質問者

お礼

ありがとうございます 本でおすすめあれば教えてください

  • maiko0333
  • ベストアンサー率19% (840/4403)
回答No.1

オブジェクト志向が知りたければ 「オブジェクト入門」なる本があります。 javaもオブジェクト思考ではあるけれど 言語の考え方も入っていますから。

town52google
質問者

お礼

ありがとうございます

関連するQ&A

  • ホログラフィック理論みたいな理論

     ホログラフィック理論に似た理論を教えてください。  哲学でも物理学でも化学でも何でもいいです。  因みに、ここで尋ねているのは『出来るか出来ないか』ではなく、ロマンが有るか無いかです。つまり『子供に聞かせる話』でわくわくさせる事が出来るような理論を探しています。    よろしくお願いします!

  • JAVAの専門用語についての疑問です

    初歩Perl使いですが、JAVAをしないといけなくなったのでJAVAを勉強しています。 JAVAをやり始めて一週間くらいですが、疑問点というか漠然と?が浮かんだので質問します。 クラス メソッド インスタンス アクティビティ オーバーライド など様々な言葉が出てきますが、クラスやメソッドなど、JAVAに詳しい人数人に聞いても 「ガチッ」とした言葉が帰ってきません。サイトをたくさんみても、なんとゆーか漠然とした哲学っぽい事が書いてあって、自分の中で シャキーン! と理解ができなくてこまっています。 「おそらく こんな感じなんだろーなー」と漠然と分かる感じですが、JAVAの概念?のようなものが脳にほのかに漂う感じでソース組んでて精神的に非常に気持ち悪いです。 JAVAとは そういうものなんでしょうか? 1から10まで、しかっと把握するぜ!このプログラムは俺が動かしてるんだぜ! という考えはやめたほうがいいのでしょうか? JAVA使いの人を見ると漠然と漂う感じで組んであるみたいで、なんだか心がイーッとなってしまうのです、どなたかお助けください。

    • ベストアンサー
    • Java
  • やさしいJavaで理論演算子をやったのですが、写真

    やさしいJavaで理論演算子をやったのですが、写真の通りに入力した際に ifの (res == "y" ~ ) の部分と else ifの (res == "n" ~ ) の部分がエラーになり 「非互換オペランド型charとString」 となり、実効出来ないです。 カッコの中がエラーとなってます。 なにか分かりませんか?よろしくお願いします

    • ベストアンサー
    • PHP
  • java パッケージについて

          [test](ルート)        |    ーーーーーーーーーーーーーーーーーーー    |         |          |         Test.java   DirTestA.java        [testt]                       |                             [testtt]                       |                     DirTestB.java パッケージについてわからないので質問します。 上の図のようにファイルを格納しています。 DirTestA.javaでDirTestB.javaのオブジェクトを作成するのは DirTestB.javaをimportすれば可能ですが 逆にDirTestB.javaでDirTestA.javaのオブジェクトを作成ができません。DirTestA.javaでpackage Test;と定義して DirTestB.javaでimport Test.DirTestA;とインポートしても ./TestT/TestTT/DirTestB.java:2: パッケージ Test は存在しません。 とエラーが出ます。 どうすればオブジェクトを作成できますか?

  • Javaのオブジェクトのソート方法について

    Javaに関する質問です。 配列を用いてオブジェクトをつくり、そのフィールドの内容を用いて配列のオブジェクトをソートしたいのですが、どのようにプログラミングをすればよいのでしょうか? 方法をご存知の方がおりましたら、解答よろしくお願いします。

    • ベストアンサー
    • Java
  • 専門学校等でjavaの勉強をされた方

    自分の会社(ソフト会社)で社員教育の一環として、 専門学校等でjavaの学習をさせようとしています。 自分はそれについて調査をしているのですが、 色々な意見を聞こうと思いました。 そこで専門学校等でjavaの勉強をされた方に質問致します。 1:費用、期間はどれくらいかかりましたか?   また教育訓練給付金を使った場合、どれだけ割引されるのでしょうか? 2:お勧め、またはお勧めしない学校はありますか?   ちなみに場所は東京です。 3:java未経験の人間(一応ソフト会社なので、全員Cや   COBOLは知っていますが)が学習してjavaの業務に就けた、   もしくは業務をこなせるくらいまではなりましたか? 4:受講者は4~5人くらいですが、団体割引や   法人割引などはあるのでしょうか? 分かる範囲で結構ですので、ご存知の方が いらしたら書き込み願います。

  • 宇宙理論、オメガポイントについて教えてください。

    宇宙に関する哲学理論で「オメガポイント」と言うのがあるそうです。 ウイキペディアは見たのですがよく分かりません。 詳しい方、教えてください。

  • Javaの構文について

    よろしくお願いします。 以下のようなJavaのプログラムがあるのですが、 Object str = new Object[]{"test"}; 右辺のnew Object[]{"test"}は、何をやっているのでしょうか? どなたかご教授願います。

    • ベストアンサー
    • Java
  • おすすめのjavaの本を教えて下さい。

    僕はIT系の専門学校に通っているのですが最近学校でjavaを始めて自分でも勉強しようと思うのですがjavaの本がありすぎてどれを選べば良いかがわかりません。 僕のjavaの実力はまだ全然ないのですができればプログラミング演習などついてるおすすめのjavaの本を教えていただけないでしょうか。 回答よろしくお願いします。

    • ベストアンサー
    • Java
  • 相対性理論とは?

    相対性理論、てあるじゃないですか。 あれって平たく言うと(?) 『あなたとあたしの時間の流れる早さは違うもの』ってことですかね?亀と人間では歩く速度が違うように例えば同じ年齢、性別、背格好などの条件下で同じ作業をするとして(適応能力などもほぼ同条件として)早い、遅いが出てくるのは個々の流れている速度が違っているからということでしょうか? それを=相対性理論と聞いたのですが間違いでしょうか? ”光”が関係しなければ相対性理論とは言えないんでしょうか? 出来れば物理的観点より哲学的な視野でお答えいただければ幸いです。