@IT情報マネジメント会議室は、2009年4月15日に新システムに移行しました。
新たに書き込みを行う場合には、新しい会議室をご利用ください。
新たに書き込みを行う場合には、新しい会議室をご利用ください。
- @IT情報マネジメント 会議室 Indexリンク
- IT戦略
- 仕事の改善
- アーキテクチャ
- プロジェクト管理
- ITインフラ
- Webマーケティング
- BPMプロフェッショナル
- 業務アプリ
- - PR -
プロパティについて
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-08-09 00:49
msoです。
夜に書き込む時間がでてきたので、ちょっと以前から感じていた疑問を書き込みたいと 思います。 個人的には至極簡単な内容なので、誰でも答えていただけると感じています。 #つまりそれができない私はかなりのこまったちゃんです。 <前置き> えー、ここ数年誰かにプログラムを教えてもらうことはなく、すでにできあがっている プログラムをみて勉強をするか、10でできる○○という本で勉強をしている現状です。 んで、OOPを勉強していたときにはnewってなんだよ?!とか叫びつつ、 よくわからないまま放置しつつ、わかった気になったまま現在に至っています。 </前置き> VB.NET、C#、Javaで仕事をやってきたのですが、プロパティとか、アクセサの意味がよくわかりません。 プロパティを使って、複数の値をを一個ずつオブジェクトに渡す必要性が理解できないでいます。 たとえば、C#だとすると
とやるのであれば、
とやった方が、コードしてすっきりするのではないでしょうか? ちなみにカプセル化という言葉は知っていますが、 しっかりと理解はしていないかもしれません。 本当に初歩的な質問ではありますが、私を理解させていただける方がいたら 助言よろしくお願いします。 | ||||||||||||||||||||||||
|
投稿日時: 2005-08-09 02:21
私はこんな説明をよくします。
プロパティ:オブジェクトの状態を教えてもらう、変更してもらう メソッド:オブジェクトに仕事をしてもらう 言語で使用できるライブラリから簡単なクラスを選んで プロパティとメソッドをじっくり眺めてみるとわかりやすいかもしれません。 例えば、.NET の string はプロパティとして Length を提供します。 メソッドとしては、Split() や Substring()、Replace() などがありますね。 保持している状態(データ)の情報を取得したり設定する場合はプロパティ、 状態に応じた振る舞いを提供する場合はメソッドとなります。 したがって、msoさんの例にある
の aaa, bbb がオブジェクトの状態(保持すべきデータ)ではなく、 単にメソッドで必要となるデータでしかないのであれば、基本的には
と書くべきです。 メソッドに必要となるデータをいろんなオブジェクトから集める必要がある場合は プロパティにしておいて、hogeのインスタンスを飛ばしてしまうのもありですが。 | ||||||||||||||||||||||||
|
投稿日時: 2005-08-09 09:58
こんにちは、じゃんぬ です。
情報が多くてかつ、必須な情報があるのであれば、 そのクラスに対して、インラインなクラスを定義して、 そこにデータクラスを定義して渡したりしています。 (保証されますから) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||||||||||
|
投稿日時: 2005-08-09 11:30
こんにちわ、餅宮です。
プロパティやアクセサは、オブジェクトの属性を取得するものであると思っています。 ですので、基本的には値を設定するのはおかしいと思っています。 値を設定するのは、インスタンス生成時に渡す情報量が多くなり、 認識しにくい場合のみ使用する。というのが私の考えです。 プロパティ:オブジェクトの属性を取得する。 メソッド:オブジェクトの振る舞い。 | ||||||||||||||||||||||||
|
投稿日時: 2005-08-09 11:53
どもです、がるです。
んっと。かなり個人的見解込みの意見で恐縮なのですが。 とりあえずまず
ですが、実は自分はあまりこういうふうな実装を しないです。 自分の場合、ちぃと手間ではあるのですが
とやるです。 ちなみにデータ取得はget_XXですね。 微妙な差異ではあるのですが、データは常に 「メソッドを経由して」ってのが一つ目のポイント でし。 よく「アクセサなんていらない」って話も 出るのですが。 アクセサを経由したほうが、色々な意味で「変更に 強い」ものが出来上がります。 限りなく手前味噌で恐縮なのですが、よかったら http://jibun.atmarkit.co.jp/scenter/bbs/viewtopic.php?topic=8881&forum=21 あたりをご覧頂くと、そのあたりがダラダラと(笑)書いて あります。 んで。 引数にするかアクセサにするかについては、個人的には ほげたさんとほぼ同意見で、
引数でよいと思うです。 ただ、引数が複数あると順番を間違えることがあるので、 数が多いときはアクセサ作っちゃうこともありますが(笑 で、たとえ「1つのメソッドでしか使わない」と しても「とりあえずクラス自体に紐付いている情報」 なら、アクセッサ経由で扱うようにしています。 こんなところでしょうか? どうでしょう? | ||||||||||||||||||||||||
|
投稿日時: 2005-08-09 12:01
リンク先を見て解りましたが、C#の上の構文を直接アクセスしているような感じに受け取ってしまったのでは無いですか? スレ主はプロパティについて話されているので、多分、
という実装を想定されているのだと思います。 というわけで、プロパティが構文に無い言語でいうgetter/setterと一緒です。 以下の文章については同意見です。
| ||||||||||||||||||||||||
|
投稿日時: 2005-08-09 12:06
こんにちわ、餅宮です。
また、先ほど書き忘れたのですが、以下に関しては私も同意。
#NAL-6295さんと被った部分を削除 [ メッセージ編集済み 編集者: 餅宮餅喜 編集日時 2005-08-09 12:14 ] | ||||||||||||||||||||||||
|
投稿日時: 2005-08-09 12:22
がるです。
ををすっかり失念(苦笑 そういえば、C#だとそういう実装が出来るですねぇ。 '.'を見た瞬間、ついC++として想定してしまいました(苦笑 ご指摘ありがとうございます。 以上、訂正発言でした m(_ _)m |
1|2|3
次のページへ»