• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Java:クラスをたくさん使ったプログラミング?)

Java:オブジェクト指向を取り入れたプログラミングの勉強方法

lv4uの回答

  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.2

>>クラスが5個以上になると正直もう嫌だってなります。。実用レベルにはまだまだ至っていません。 本当の意味でオブジェクト指向を理解できていないのかもしれません。 質問者さんは、いくらか本末転倒で理解されている気がします。オブジェクト思考は、構造化プログラミングや複合設計という以前からの設計手法の限界を超えるためのプログラミング手法だと私は思っています。 つまりは、解決したい問題があり、それをプログラムによって解決する場合、シンプルな問題であれば、構造化プログラミングや複合設計だけで十分であれば、オブジェクト指向なんて不用だと思います。 たとえば、「プロンプトを出して、数字を入れてもらう。最後に”e”を入れたら、それまでの合計値を表示する」なんてプログラムの場合、「プログラムをオブジェクト指向で作成する」なんて言われたら初心者は混乱するばかりではないでしょうか?また、プログラム自体も長く、無駄に複雑化すると思えます。 私はC++でオブジェクト指向を勉強しましたけど、その経験からすると、 ・シンプルなプログラムは、オブジェクト指向など考えないで作ると簡単に作れるし、コードもシンプルとなり、わかりやすい。 ・プログラムがある複雑なレベルを超えた場合、オブジェクト指向を取り入れて、”きちんと設計して作成する”と、複雑な問題でも、わりあいシンプルに作成できる。構造化プログラミングや複合設計などの、「ちょっと古い(?)」と思われる設計手法の知識無しでは、オブジェクト指向の設計は満足にできない。 ・ただし、オブジェクト指向で開発し、メンテを続けると、クラスの数が増えて、関係が複雑化してメンテ不能になるレベルがある。 という印象を持っています。 質問者さんの場合、構造化プログラミング、複合設計、そして、そういう知識をベースにして、No.1さんの回答にあるようなデザインパターンの学習をすればいいと思います。 >>どうすればそういった、オブジェクト指向をとりいれたプログラムが書けるようになるのでしょうか? いろんなプログラムを見る、数をこなすことでしょうか? 「メタプログラミングRuby」という書籍には、オブジェクト指向の先?にあるメタプログラミングが紹介されています。そこには、 本を読むだけでは、経験は手に入らない。多くの価値を手に入れるためには、熟練プログラマの仕事を見るといい。・・・ という一文が書かれています。なので、「これは凄い!どうなっているんだろう?」と感じたプログラムのソースコードを読んで勉強するしかないのでは?と思います。 私は、データベースのCソースコードを読んで、いろいろなC言語テクニックを学びましたし、汎用機の言語であるPL/Iでは、ちょっと不思議な機能を持った他社が作ったプログラムのソースを調べて、PL/Iを勉強しました。 当然ながら、「この機能は凄い!」って思えるJavaプログラムのコードは長いと思いますけど、それを頑張って読みこなすことで、オブジェクト指向をとりいれたプログラムが書けるようになると思います。

Rolily
質問者

お礼

お礼が遅くなり申し訳ありません。 やはり熟練された方のプログラムソースを読むことが大切なのですね。 ・シンプルなプログラムは、オブジェクト指向など考えないで作ると簡単に作れるし、 コードもシンプルとなり、わかりやすい。 ・プログラムがある複雑なレベルを超えた場合、オブジェクト指向を取り入れて、”きちんと設計して作成する”と、複雑な問題でも、わりあいシンプルに作成できる。構造化プログラミングや複合設計などの、「ちょっと古い(?)」と思われる設計手法の知識無しでは、オブジェクト指向の設計は満足にできない。 ・ただし、オブジェクト指向で開発し、メンテを続けると、クラスの数が増えて、関係が複雑化してメンテ不能になるレベルがある。 確かにおっしゃるとおりですね。 簡単なサンプルで、無理にオブジェクト指向を取り入れようとして混乱してしまっているのかも・・ なんでもかんでもオブジェクト指向で!というわけではないのですね。 (実際何かのシステムのプログラムとなると複雑で結果オブジェクト指向となるのかもしれませんが) ありがとうございました。

関連するQ&A

  • Java初心者です。クラスライブラリについて

    Java初心者です。 オブジェクト指向やクラス・インスタンスの意味が少しずつ分かってきたような状態です。 実際にコーディングしてみて理解していこうと思うのですが、 例えば、「~~~みたいなことをしたい」と思ってプログラミングする際に、javaclassライブラリを検索して使い方を調べていくといった地道な作業をしていくのでしょうか。 また、そのクラスライブラリを使う際は、import ライブラリの入っているクラス名みたいなことを必ずつけるといった解釈で合ってますでしょうか。 初心者なので質問が的外れでしたらすみません。。。

    • ベストアンサー
    • Java
  • クラスを使ったプログラムの例題

    オブジェクト指向の勉強中です。 クラスを使っているプログラム例題が欲しいです。 実用的で分かりやすいのをください。

  • オブジェクト指向の教え方

    新入社員にJavaを教えているところなのですが、オブジェクト指向プログラミングをどのように教えていいか困っています。 全員がC言語研修を受講済みで、さらにJava言語も、継承やオーバーロード、例外まで一通り教えて、一応理解しています。 そこで、次のレベルとして、C言語風のプログラミング(「プログラム=関数の集まり」の考え方)から、オブジェクト指向(「プログラム=オブジェクトの集まり」の考え方)に意識改革させたいところです。 問題領域をオブジェクトの集まりとしてとらえ、そこからクラスを抽出していく、という説明がよくありますが、 「何をオブジェクトにするのか」「どのようにクラスを抽出したらいいのか」の部分を詳しく教えたいのですが、どのように説明したらいいでしょうか。また、参考になるWebサイトなどありませんでしょうか? 自分が普段作るときは、ほぼ「勘」でクラス設計していますので、それでは教えられなくて困っています。よろしくお願いします。

    • ベストアンサー
    • Java
  • JAVA初心者(プログラミング初心者)

    現在、転職を考えていますがオブジェクト指向の勉強をするにあたって まず、何から始めればいいでしょうか? 先日面接時にオブジェクト指向の勉強をした方がいいと言われましたので。 プログラミングは全くの初心者です。

    • ベストアンサー
    • Java
  • C++とJava

    オブジェクト指向を採用しているC++とJava。オブジェクト指向プログラミングに関連している部分で、二つの言語の大まかな違いは何でしょうか。

  • JAVAのクラスの考え方は・・?

    JAVAの勉強をしていている学生です。 常々思っていたのですが、クラスの考え方がしっくりきてませんヽ(~-~ よく参考書などで書かれていることで 「クラスは設計図のようなもの、オブジェクトはそこから作成した実体」 「鋳型がクラスでどんどん作れるのがインスタンス」 といった話が疑問でならないのです。 というのも・・クラスの設計って、自分自身をフィールドに宣言したりできますよね。。 でそこから生成して、また自分自身のフィールドに生成して・・とか。 インターフェースを実装したクラスで、、、内部クラスを持ったクラスで、、、ジェネリッククラス、、。 となってくると、最初の考え方では、論理的に無理?私の脳内では変換しきれないです(´;ω;) 多分前提となる考え方が間違っていたり、私の想像力が乏しいだけだと思います。 どなたか、「クラスってこう考えればオブジェクト指向が見えてくる」と表現している本やサイトなどご存じないでしょうか。 一朝一夕で理解しようとは思っていませんので、きちんと参考にして理解しようと頑張ります! 「私的には・・」や「あなたが勘違いしている箇所は・・」といったご意見もぜひお聞きしたいです! クラスかオブジェクト指向かどっちかというより、クラスありきでJAVAのオブジェクト指向が本当に理解できると考えています。参考書やWEBを探してみた限りではやっぱり理解できないです(´;ω;) ちなみにC言語を中学生で始め、プログラミングに触れました。

  • オブジェクト指向プログラミングについて

    VisualBasicを対象にしたオブジェクト指向プログラミングに関する参考書、Webサイトなどはないでしょうか。 現在、クラスモジュールなどを多用しオブジェクト指向プログラミングを実践しているつもりですが、あまり勉強したわけではないのでいまいちよくわからないです。 (オブジェクト指向プログラミングのメリットとデメリットなど)

  • オブジェクト指向プログラミング学習向けのサンプルプログラム

    「これは参考になるよ」というような、 オブジェクト指向プログラミング学習向けのサンプルプログラムを教えていただけませんか? 言語はDelphiです。 Delphiに限らず、他言語(Java、C#、C++あたり)でも結構です (移植しますので、出来ればCUI、GUIが少ないものが理想です) よろしくお願いいたします。 Delphiにてオブジェクト指向プログラミングを学んでいます。 書籍等で、基本的なことは学びました。 理解度およびスキルを上げるために、実際にプログラミングしたいと思います。 (入門書を利用してや、 自分で考えながらのテスト的なプログラミングには限界を感じてまして^^;)

  • javaどうやって学びました?

    最近javaの勉強始めました。しかしはやくも第三章「オブジェクト指向」でつまずいています。やっぱ、プログラムは難しいですね。 皆さんはいったいどうゆう勉強をされてプログラムできるようになったんですか。参考になる本とかありましたら、推薦してください。 尚、私がjavaの勉強を始めたのは、ms-dosのバッチファイルを学んで、えらく気に入って、もっと複雑な操作ができたら、と思ってはじめました。

    • ベストアンサー
    • Java
  • オブジェクト指向で作るプログラミング

    オブジェクト指向プログラミングで作るものってどんなものですか??(たとえば、、、ゲームとか、エクセルとかですか??) あと・・・Cを勉強してから、javaにいく人がいますが、Cとjavaは似ているのですか??