作成日 2011/1/22
最終更新日 2011/1/22

問題2.10(問題タイトル:オブジェクトへの参照)

オブジェクト指向設計についての問題(中級レベル)です。

問題タイトル:オブジェクトへの参照
重要度:★★★★★(非常に重要)
難易度:★★★☆☆(普通)


1.問題
2.解答・解説
3.参考文献


1.問題

問題タイトル:オブジェクトへの参照
重要度:★★★★★(非常に重要)
難易度:★★★☆☆(普通)

問題:以下のJavaのプログラムを実行したときに、コンソールに出力される文字列(System.out.printlnコール時のtele1.nameの値)をa〜dの中から1つ選べ。


プログラム(Java)
public class Class1 {

    public static void main(String[] args) {

        TelePhone tele1 = new TelePhone();

        tele1.name = "aaa";
        tele1.phone = "123";

        setData(tele1);

        System.out.println(tele1.name);
        return;
    }

    private static void setData(TelePhone tele) {
        tele.name = "bbb";
        tele.phone = "456";

        tele = new TelePhone();
        tele.name = "ccc";
        tele.phone = "789";
    }

}

class TelePhone {
    /** 名前 */
    public String name = "";

    /** 電話番号 */
    public String phone = "";
}

 a.空文字列
 b."aaa"
 c."bbb"
 d."ccc"

問題文終わり

このページのトップへ












注意:これ以上、下にスクロールすると解答・解説が見えちゃいます。

2.解答・解説

解答:c
解説:
 設計の問題であるにもかかわらず、プログラミングを出題した理由ですが・・・。
 プログラミングを理解していなければ設計できない(机上デバッグできないものは設計できない)です。
 ということで、今回、このような問題を出題しました。
 ちなみに、今回はVBAのプログラムを出しませんでしたが、あえてそうしてます。
(なぜって、ここら辺の動きは言語に依存しないから。それにオブジェクト指向関係の書籍はC++,Javaでサンプルソースが書かれていることが多く、「VBAしか出来ません・読めません」は困るんです)
 
 メソッドの引数にオブジェクト型を指定したときに、何が渡されるのかを理解しているかを問う問題です。
 で、答えは、オブジェクトへの参照が値渡しで渡されるです。
 
 a.さすがにこれを選ぶ人はいないでしょう。
 b.メソッドに渡されるのがオブジェクトへの実体の値渡し(実体がコピーされて渡される)ならこれだと思う。
 c.正解。メソッドに渡されるのはオブジェクトへの参照の値渡し(参照(ポインタ)がコピーされて渡される)のでこれが正解。
 d.メソッドに渡されるのがオブジェクトへの参照の参照渡し(参照(ポインタ)の参照がコピーされて渡される)ならこれだと思う。

このページのトップへ

3.参考文献

 このページを作成する際に参考にしたページや、もっと勉強したい人向けの資料です。

番号

リンク先の名称

リンク先の説明

リンクした日

1 参照型の代入操作、値渡しで関数の引数に渡した場合の動作 - だるまのエクセルVBA オブジェクト指向プログラミングをする際は、今扱っている変数が参照型なのかどうかを意識し、その変数の型はどのようなものか(どのようにメモリが確保され、値が保持されているのか)を理解しておく必要があります。 2011/1/22


Prev Up Next  Top
このページのトップへ


このページの利用によって発生した、いかなる損害について、このホームページの作成者は責任を負いません。
このページの間違いや嘘を見つけた方、このページに書いて欲しい情報がある方はメールをお願いします。

Microsoft 、Windows 、Visual Basic および Excel は米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
ここではExcel® をエクセル、Visual Basic® for Applications をVBAと表記する場合があります。
Mac 、Mac OS 、Mac OS X は米国Apple Computer,Inc.の登録商標または商標です。
Sun、Sun Microsystems、サンのロゴマーク、Java、及び、Sun/Solaris/Java に関連するすべての商標およびロゴマークは米国 Sun Microsystems, Inc. の米国およびその他の国における商標または登録商標です。
その他、社名および商品名、システム名称などは、一般に各社の商標または登録商標です。

このホームページの作成者はこれらの会社とはいっさい関係がありません。