C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: get/setの必要性


(過去ログ 42 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■22501 / inTopicNo.1)  get/setの必要性
  
□投稿者/ ACT (1回)-(2008/07/24(Thu) 17:54:22)

分類:[討論] 

.NetやJavaで実装するときに、get/setを使って値を受け渡していますが、引数を使ってはいけないのでしょうか?

初心者で申し訳ございませんが、get/setを使っての受け渡しと引数を使っての受け渡しの違いなどを教えてもらえたらこれ幸いです。

引用返信 編集キー/
■22504 / inTopicNo.2)  Re[1]: get/setの必要性
□投稿者/ επιστημη (1180回)-(2008/07/24(Thu) 18:02:50)
επιστημη さんの Web サイト
> 引数を使ってはいけないのでしょうか?

そんなことありません、プロパティかメソッドかはお好みでどうぞ。

> get/setを使っての受け渡しと引数を使っての受け渡しの違い

実質的な違いはありません。

引用返信 編集キー/
■22505 / inTopicNo.3)  Re[2]: get/setの必要性
□投稿者/ じゅで (85回)-(2008/07/24(Thu) 18:19:32)
いちよう.NETであれば、ガイドラインがあります。

http://msdn.microsoft.com/ja-jp/library/ms229054(VS.80).aspx

興味があれば、読んでみてください。
引用返信 編集キー/
■22508 / inTopicNo.4)  Re[3]: get/setの必要性
□投稿者/ オガシン (26回)-(2008/07/24(Thu) 20:05:32)
Javaの場合はJavaBeansの仕様としてgetter/setterを使用するってあったような気がします。

オブジェクトのメンバは外部から直接操作させないべきであると思います。

//Javaです。
public class StaffInfo {
	//メンバ変数
	public String seibetu = "男";
	public String name = "オガシン";
}

これだとインスタンスした側から直接値を変更できます。
知らない間にオガシンは女になっているかもしれません!!!

下記のようにすれば、性別は変更不能(ReadOnly)になります。
public class StaffInfo {
	private String seibetu = "男";
	private String name = "オガシン";
	
	public String getSeibetu(){
		return seibetu;
	}
	
	public void setName(String name){
		this.name = name;
	}
	
	public String getName(){
		return name;
	}
}

このようにget/setをもちいることでカプセル化が可能ですので
使用するように!って文化になっていると思っています。

またVB.NETもJavaもエラー時はExceptionをスローするので
戻り値はリターンコード、処理結果は参照渡しされた引数にセットされます
のようなメソッドを作成すると、これまでどこで値がセットされたのか
追いにくくなると思います。

どこかに引数はメソッドの動作させるパラメータである。
って書いてあったような気がします。

引用返信 編集キー/
■22509 / inTopicNo.5)  Re[1]: get/setの必要性
□投稿者/ Jitta on the way (143回)-(2008/07/24(Thu) 20:48:54)
No22501 (ACT さん) に返信
> .NetやJavaで実装するときに、get/setを使って値を受け渡していますが、引数を使ってはいけないのでしょうか?
>
> 初心者で申し訳ございませんが、get/setを使っての受け渡しと引数を使っての受け渡しの違いなどを教えてもらえたらこれ幸いです。
>

んー?
get/set って、なに?
引数を使ってはいけない?なんで?



用語は正しく使えるようにしましょう。エスパーが多くて助かっているみたいだけれど。
引用返信 編集キー/
■22531 / inTopicNo.6)  Re[2]: get/setの必要性
□投稿者/ 凪瀬 (73回)-(2008/07/25(Fri) 10:31:15)
凪瀬 さんの Web サイト
オブジェクトのデータをいじる場合はget/setもしくはプロパティ。
メソッドにデータを渡す場合は引数。
引用返信 編集キー/
■22535 / inTopicNo.7)  Re[3]: get/setの必要性
□投稿者/ 囚人 (304回)-(2008/07/25(Fri) 12:37:35)
>用語は正しく使えるようにしましょう。エスパーが多くて助かっているみたいだけれど。

この程度だったらエスパーじゃなくてもわかると思いますけどね。
わからない人は、これに関する知識がないか、そもそも人の話を理解する気がないからじゃないかな。

>.NetやJavaで実装するときに、get/setを使って値を受け渡していますが、引数を使ってはいけないのでしょうか?

Java の場合は違いはないかもですが、.NET のプロパティとメソッドの違いは凪瀬さんの言ってるみたいな感じかな。

メソッドは「アクション」でプロパティは「属性(データ)」みたいな。
引用返信 編集キー/
■22536 / inTopicNo.8)  Re[4]: get/setの必要性
□投稿者/ ネタ好き未記入 (10回)-(2008/07/25(Fri) 13:33:16)
ACTさんへ返信
>.NetやJavaで実装するときに、get/setを使って値を受け渡していますが、引数を使ってはいけないのでしょうか?

そんな事ありません。インデクサ(C#)と引数を取るプロパティ(VB.NET)はインデックを取得しています。
要はデザインの問題だと思います。実装面を言えば、メソッドとプロパティはどっちも関数呼び出しです。オブジェクトデザインを実現するためにプロパティはあるのだと思います。
因みに、プロパティはオブジェクトの状態を表し、データの取得処理に時間が架からないものがいいです。そうしないと、何となくFoo.GetDataの命令文が数十分以上帰ってこなければ違和感を与えます。
使う人の気持ちになって設計するという心がけが鍵なのではないでしょうか?
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -