• ベストアンサー

オブジェクト志向の基礎的理解をする方法

kazsharpの回答

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

まず、オブジェクト「志向」でなく「指向」です。 そして、質問者さんにぜひ心がけてほしいのは「簡単に身につけようとしない」ことです。 巷には手軽にオブジェクト指向が身につけられそうなタイトルの本がたくさんありますが、本を1冊さっと読んだだけで身につくようなものではありません。 実際に設計やプログラミングを行う試行錯誤の過程で身についてくるものだと思います。 参考URLのサイトでは日本のオブジェクト指向第一人者と言ってもいいSRAの青木さんの本が丸々1冊分読むことができます。 (上のリンクの中の「Books and Papers」をクリックして表示されるページで2冊の本の画像があらわれますが、下の本の「Introduction to Object-Oriented System Analysis and Design」というのをクリックしてください。サイトは英語ですが本の中身は日本語です) この内容を読んでぜひ「本物」のオブジェクト指向を身につけてください。 個人的には雑誌「Java World」に過去連載されていた「オブジェクト指向プログラミングのツボ」という記事を勧めておきます。 手に入れられるならバックナンバーを購入して読んでみてはいかがでしょうか。

参考URL:
http://www.sra.co.jp/people/aoki/
akikagura
質問者

お礼

ありがとうございます。 早速ページは全て保存致しました。 発行元に乗っていた時期を問い合わせて、雑誌の方もアマゾンドットコムで購入を検討して見ます。

関連するQ&A

  • オブジェクトの関連について

    クラスAAAとクラスBBBをインスタンス化し、それぞれ、aとbのオブジェクトとします。 mainメソッドから、bのbmethメソッドを呼び出し、さらに、Amethメソッドを呼び出し また、mainからもaのAmethメソッドを呼び出し可能にする方法はありませんでしょうか? まだ、Java初心者なもので説明も不十分かと思いますがよろしくお願いします。 class AAA{ void Ameth() { System.out.println("Aメソッド"); } } class BBB{ public AAA a; void bmeth(){ a.Ameth(); } } public class test{ public static void main(String arg[]) { AAA a = new AAA(); BBB b = new BBB(); b.bmeth(); a.Ameth(); } }

  • 質問

    インスタンス化したboxクラスのtable()メソッドを呼び出し、引数にiを渡す 戻り値としてArrayListオブジェクトで受け取る というのはどのように表すのでしょうか?

  • クラスやメソッドが理解できません

    今javaを勉強中なのですが、クラスやメソッドで生きず待ってしまいました。 メソッドの定義は 戻り値の型 メソッド名(引数リスト) {  文;  ・・・ return 式;  } ですが、メソッドから返されえる値を戻り値といますよね?呼び出し元に値を返すってどういうことなのでしょうか? int getNum() { System.out.println("調べました") return num; } たとえば、上記のようなものですが。もしも、このメソッドを呼び出すと、”戻り値”が戻ってくるわけですが、これはgetNumという変数のなかに計算式が入っている?という考え方でいいのでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • Java
  • オブジェクトの問題です。 お願いします。

    処理内容: 以下の3つのクラスを作成し、実行し、以下の結果を得るプログラムを作成せよ。 実行例 佐藤さんの体重は、85キログラムです。 (1) 抽象クラスの作成 クラス名 People name: String型、perivate宣言 getText(): 戻り値の型は、String publicなabstractメソッド getName(): 戻り値の型は、String publicメソッド People(): namaeを設定するpublicなコンストラクタ (2) 抽象クラスの実装 クラス名 Taiju weight: int型 private宣言 体重を表す Taiju(): 名前と体重を設定するコンストラクタ getText(): 戻り値の型は、String 抽象メソッドをオーバーライドしたメソッド 「○○さんの体重は、◇kgです。」 という、文字列を返すメソッドとする。 (3) メインクラス クラス名 MainTaiju Taijuクラスのインスタンスを、”佐藤”、85 のコンストラクで作成。 あと、出力例のように出力。

  • privateのメソッドをリフレクションで呼び出す方法

    privateのメソッドをリフレクションで呼び出す方法 private のメソッドをリフレクションで呼び出す方法 privateのメソッドもリフレクションというもので呼び出せると聞きましたが、やり方がよく分かりません。 aaaやbbbクラスのインスタンスを生成したいのですが、privateやpackage privateのため、そのままだとインスタンスが生成できません。 forNameメソッドやnewInstanceメソッドでどうにかできないかと試してみたのですが、イリーガル例外が発生してしまいます。 何かよい方法がないでしょうか? aaa, bbbのクラスを継承してモックを作成する方法もあるのですが、今回はそういった方法ではなく、privateやpackage privateメソッド(特にコンストラクタ)を外部から呼び出す方法がよいです。 public aaa { private aaa() { } private func() { } } public bbb { aaa() { } private func() { } }

    • ベストアンサー
    • Java
  • オブジェクト指向で分からないことが。

    オブジェクト指向で分からないことが。 1.クラスAから、文字列引数を指定して、クラスBがインスタンス化されたオブジェクトを取得する。 (getInstance的メソッド)引数の文字列にマッピングされたオブジェクトを取得する感じ。 2.1.で取得したオブジェクトから、各オブジェクトを取得するメソッドを呼び出し、オブジェクトを取得する。(仮にクラスC) 3.2.で取得したクラスCのメソッドを呼び出す。 このとき、クラスCのメソッド内で、1.で利用された引数を利用したいです。 そもそもクラスCは、1.を経てしか取得されないものの為、再度1.の引数を渡したくありません。 内部的な値なので、スコープpublicのセッターを用意して、クラスA内からの書き換えが出来ては困ります。 こういう場合、どういうクラス設計を行えば良いのでしょうか?

    • ベストアンサー
    • Java
  • クラス、オブジェクト、インスタンス、メソッドについて。

    クラス、オブジェクト、インスタンス、メソッドに ついて教えていただけないでしょうか? 今現在の自分の認識では、乗り物を例にすると、 「乗り物」という大枠がクラス。それを、たとえば 飛行機なり電車なり船なり、より具体的にした ものがインスタンス=オブジェクト。 その具体化したものの挙動、動作(走るとか飛ぶとか) がメソッド、という理解です。 ただ、これだとオブジェクトとインスタンスを 同じものとして見てしまっているので、この2つの 違いを明確に説明しろと言われると困ってしまいます。 インスタンスとオブジェクトの違いを明確にした上で うまく伝えられる方法があれば、ご教授ください。

  • オブジェクト生成時のセオリーについて

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

  • javaのソースコードがわかりません

    初心者には難しすぎるのでおしえてください。 クラス名 Advance5 ※main()メソッドがあるクラス Sub5_StaticCheck 指示 Advance5 クラス main()メソッド Sub5_StaticCheck クラスのcallDisp()メソッドを呼び出す ※インスタンスを生成せずに実行 Sub5_StaticCheck クラス callDisp()メソッド 定義 修飾子 : public キーワード : static 戻り値の型 : void 引数 : なし 指示 disp()メソッドを実行する その際、BufferedReader クラスを使用してキーボードから文字列を1 つ入力し、入力した文字列を引数として1つ渡す disp()メソッド 定義 修飾子 : public 戻り値の型 : void 引数 : String 型の値を1つ 指示 引数で受け取った値を表示する

  • インスタンスとオブジェクト

    こんばんは。 変数について教えて下さい。 プログラム自体が初めてなので 「たのしい Ruby 第3版」を読んでいます。 ずっとインスタンスとオブジェクトの違いが曖昧なままです。 その本の「クラスとモジュール」という章にて クラスを定義する構文。 インスタンス変数とローカル変数の違いですが、 以下の説明で一部理解できずにつまずいています。 ―――――――――――― @ で始まる変数は インスタンス変数 といいます。 ローカル変数はメソッドごとに異なる変数として扱われますが、 インスタンス変数は同じインスタンス内であれば、 メソッド定義を超えてその値を参照したり、変更したりできます。 なお、初期化されていないインスタンス変数を参照すると nil が得られます。 インスタンス変数は、インスタンスごとに違う値を持つことができます。 またインスタンス変数は、 インスタンスがある間は値を保持しておいて 何度でも利用することができます。 一方、ローカル変数はメソッド呼び出しごとに新しく割り当てられるため、 メソッドから抜けると値を忘れてしまいます。 ―――――――――――― ここで分からないのは、 ・ローカル変数が "メソッドごと" に異なる変数として扱われる ・インスタンス変数は同じ "インスタンス内" であれば、 メソッド定義を超えてその値を参照したり、変更したりできます の部分です。 Webで検索してますが、 プログラミング経験ありを前提で書かれているような。 他の言語も知らないので分からない、そんなページが多いです。 人に聞くからには 自分でも頑張って理解できるように考えますので、 どうか回答よろしくお願いします。

    • ベストアンサー
    • Ruby