作成日 2011/1/22 最終更新日 2011/1/22
問題2.10(問題タイトル:オブジェクトへの参照)
オブジェクト指向設計についての問題(中級レベル)です。
問題タイトル:オブジェクトへの参照
重要度:★★★★★(非常に重要)
難易度:★★★☆☆(普通)
問題タイトル:オブジェクトへの参照
重要度:★★★★★(非常に重要)
難易度:★★★☆☆(普通)
問題:以下の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"
問題文終わり
注意:これ以上、下にスクロールすると解答・解説が見えちゃいます。
解答:c
解説:
設計の問題であるにもかかわらず、プログラミングを出題した理由ですが・・・。
プログラミングを理解していなければ設計できない(机上デバッグできないものは設計できない)です。
ということで、今回、このような問題を出題しました。
ちなみに、今回はVBAのプログラムを出しませんでしたが、あえてそうしてます。
(なぜって、ここら辺の動きは言語に依存しないから。それにオブジェクト指向関係の書籍はC++,Javaでサンプルソースが書かれていることが多く、「VBAしか出来ません・読めません」は困るんです)
メソッドの引数にオブジェクト型を指定したときに、何が渡されるのかを理解しているかを問う問題です。
で、答えは、オブジェクトへの参照が値渡しで渡されるです。
a.さすがにこれを選ぶ人はいないでしょう。
b.メソッドに渡されるのがオブジェクトへの実体の値渡し(実体がコピーされて渡される)ならこれだと思う。
c.正解。メソッドに渡されるのはオブジェクトへの参照の値渡し(参照(ポインタ)がコピーされて渡される)のでこれが正解。
d.メソッドに渡されるのがオブジェクトへの参照の参照渡し(参照(ポインタ)の参照がコピーされて渡される)ならこれだと思う。
このページを作成する際に参考にしたページや、もっと勉強したい人向けの資料です。
このページの利用によって発生した、いかなる損害について、このホームページの作成者は責任を負いません。
このページの間違いや嘘を見つけた方、このページに書いて欲しい情報がある方は
メール をお願いします。
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. の米国およびその他の国における商標または登録商標です。
その他、社名および商品名、システム名称などは、一般に各社の商標または登録商標です。
このホームページの作成者はこれらの会社とはいっさい関係がありません。