- PR -

型(String等)の継承について

投稿者投稿内容
げんたろう
会議室デビュー日: 2006/09/13
投稿数: 4
投稿日時: 2007-04-19 11:35
現在、それぞれの項目に対する処理を型として作成しようと思っております。
たとえばString型にValidationメソッドを作りその項目の時はその型を使うイメージです。
で、やりたいのはString型を継承した独自の型を作成し、
既存のStringのメソッドはそのまま使う又はオーバーライドして使うなどをしたいです。
ですが、型の継承はゆるされていないみたいでどう実現させれば良いか分かりません。
何か参考になる事があればお教え下さい。お願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-04-19 12:04
引用:

げんたろうさんの書き込み (2007-04-19 11:35) より:
現在、それぞれの項目に対する処理を型として作成しようと思っております。
たとえばString型にValidationメソッドを作りその項目の時はその型を使うイメージです。
で、やりたいのはString型を継承した独自の型を作成し、
既存のStringのメソッドはそのまま使う又はオーバーライドして使うなどをしたいです。
ですが、型の継承はゆるされていないみたいでどう実現させれば良いか分かりません。
何か参考になる事があればお教え下さい。お願いします。

項目ごとではなく、意味のある項目のまとまりごとにまとめてください。
_________________
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-04-19 12:04
引用:

げんたろうさんの書き込み (2007-04-19 11:35) より:
現在、それぞれの項目に対する処理を型として作成しようと思っております。
たとえばString型にValidationメソッドを作りその項目の時はその型を使うイメージです。
で、やりたいのはString型を継承した独自の型を作成し、
既存のStringのメソッドはそのまま使う又はオーバーライドして使うなどをしたいです。
ですが、型の継承はゆるされていないみたいでどう実現させれば良いか分かりません。
何か参考になる事があればお教え下さい。お願いします。

項目ごとではなく、意味のある項目のまとまりごとにまとめてください。
_________________
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-04-19 12:08
ラッパーを作れば良いのでしょうけど、作る価値はあまりないと思います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2007-04-19 12:15
引用:

げんたろうさんの書き込み (2007-04-19 11:35) より:
ですが、型の継承はゆるされていないみたいでどう実現させれば良いか分かりません。


どうしてもやるとしたらですが、文字列を管理するクラスを自分で新たに作ってしまう手もあります。普通は String を集約(コンポジション)やラップ(wrap)するクラスを作ることになります。

引用:

げんたろうさんの書き込み (2007-04-19 11:35) より:
何か参考になる事があればお教え下さい。お願いします。


クラス自体に、ある機能を追加するために、うかつに「継承」を使うことは好ましくありません。
古くから、「継承よりコンポジション」(を選べ、使え、...)という言葉があります。なお、場合によってはコンポジションすら要らない可能性もあります。
また、「Validationメソッド」をどう使うのかにもよります。もし String クラスを継承できたら、こういうコードになる、という例を提示されると良いかもしれません。

--
unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86}
とっちゃん
大ベテラン
会議室デビュー日: 2005/07/19
投稿数: 203
投稿日時: 2007-04-19 12:22
オブジェクト「に」Validate「させる」のではなく、オブジェクト「を」Validate「して」ください。

機能(Function, メソッド、関数などなど)を用意する前には言語にかかわりなく、
「いつ」「誰が」「どこで」「何を」「どのように」「どんな手段で」「行う」べきなのか?
をまず考えましょう。
#オブジェクト指向の話ではありません。一般的な実装時の設計の話です。

_________________
// とっちゃん(高萩 俊行)@わんくま同盟
// とっちゃん’Blog
// MS-MVP for Developer Tools - Visual C++
// WindowsInstallerの話題はhttp://www.freeml.com/msiまで
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-04-19 13:10
あえて反対に OOP 的 (マルチプル インスタンス的) な話をすると、

引用:

げんたろうさんの書き込み (2007-04-19 11:35) より:

現在、それぞれの項目に対する処理を型として作成しようと思っております。


にある "それぞれの項目" がデータ クラスなど集約された形で持っているとすれば、
"オブジェクト (インスタンス) に、Validate させる" で良いのですけど、

引用:

たとえばString型にValidationメソッドを作りその項目の時はその型を使うイメージです。


String のインスタンスを検証するとなると...
というより、String のインスタンスに限った "検証" が思いつきません。

# 今や 「正規表現」 なんかもありますし...

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2007-04-19 14:59
引用:

String のインスタンスを検証するとなると...
というより、String のインスタンスに限った "検証" が思いつきません。


「XXXXコード」のように業務の単項目ごとに派生型を作ろうとしてるという予想はできますが。

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