- PR -

クラスの継承で特定のイベントを非公開にしたいんです

投稿者投稿内容
lalupin4
大ベテラン
会議室デビュー日: 2004/07/26
投稿数: 163
投稿日時: 2005-12-19 23:25
…とはいえ逆に「より少ない語彙で、より完全な記述を」:
http://www.atmarkit.co.jp/fdotnet/special/pdc2005_02/pdc2005_02_01.html

というのもどっかで聞いたことあるわけで…あ゛っNew Speak(新語法)じゃねーか:

Orwell, George
『1984』
1972年 早川書房 ISBN 4150400083
http://www.amazon.co.jp/exec/obidos/ASIN/4150400083/

 さあ!ソフトウェアと人類はどこへ向かっているのか!?:
(と、いうことで↓のひとよろしく〜)
ジブ
大ベテラン
会議室デビュー日: 2005/09/22
投稿数: 135
投稿日時: 2005-12-20 00:24
引用:

lalupin4さんの書き込み (2005-12-19 23:24) より:

 ソフトウェア・エンジニアリングが今後どっちの方向にコロがるかはわかりませんが
「コーギョーシュー・ソケツゴー」に抵触しそうな方向性を期待するのは
難しいんじゃあないでしょうか。




そういう議論とはあまり関係ないようにも思えます。疎結合だからといって無制限というわけではないでしょうから。

現実にコンパイルオプション改プロジェクトのプロパティとかでなんとかなる世界だと思っています。硬軟ご自由にと。

今回のケースだとprivateという単語であると多分支障がでるかもですが

というのが
private宣言されたshadowsなメソッドは、それはそれで言語的な意味合いを持っているからかなと思います。

これはスコープの問題ですが、継承元と継承先の同名のメンバのスコープはどちらが広いのでしょうか?

内包であれば自明ですが、継承の場合はどうなのでしょう?

現在の.Netでの継承の扱いは外包というイメージなのかなと思ったりします。

スコープの違う同名のメンバが許されるという選択をした時点で、この問題は発生するような気がします。

ということは、今回のようなニーズに答えるためにはPrivateとはまた違う意味合いの名前を考えることになるのではないかなとと思うわけです。

private shadows には現在はそれなりの動作(派生クラス内部からのアクセスにのみ応える)
があるわけで、これは多分変えられないだろうなと思います。

で、ニーズがなければわざわざ作るわけもないので、どうなんでしょうね。

そのうちできるようになってほしいなと思っています。
(個人的には、なくて困る話ではないので、気の長い話です)
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2005-12-20 00:35
おお〜!結構あるんですねぇ〜。
隠蔽したら分かり難くなるし、あまり使わないなぁと思ってたんですが、なるほど。
厳密な型指定のため、というのはいいですね。(手抜きの ArrayList もw)
属性の上書きは思いつかず。
ありがとうございます。
_________________
囚人のジレンマな日々
lalupin4
大ベテラン
会議室デビュー日: 2004/07/26
投稿数: 163
投稿日時: 2005-12-20 01:46
引用:

ジブさんの書き込み (2005-12-20 00:24) より:
今回のようなニーズに答えるためにはPrivateとはまた違う意味合いの名前を考えることになるのではないかなとと思うわけです。

private shadows には現在はそれなりの動作(派生クラス内部からのアクセスにのみ応える)
があるわけで、これは多分変えられないだろうなと思います。



 ムズい話になりそうだ。ゆっくりやらせて:
確かに「今回のニーズ」には新しいセマンティクスが必要になると思います
(Pつながりならpriorとかprimalとか)。

あとはもうセマンティクスがどうであるかより、言語をどう使うか、という
なんちゅうか認知的な指向/志向/嗜好が絡んで多様化してきしそうな気がします。

この点.NETではマルチ・ランゲージがサポートされているのでC#とVBでセマンティクスの違い
(たとえば「C#はより明示的に、VBはより直感的に」とか)
を与える、というのは可能だと思います。

 ただし、これを極限まで推し進めると多様化は分裂化に…
みたいなことを書こうと思ったけど眠いのでギブ・アップ。
俺は寝る!

 おやすみなさい。

スキルアップ/キャリアアップ(JOB@IT)