- PR -

インタフェースと抽象クラスの混合は問題ない?

投稿者投稿内容
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-06-11 08:00
引用:

まいるどきゃっとさんの書き込み (2006-06-11 05:29) より:
ぱっと思いつきでは、

1. わざわざ抽象クラスにする理由がないから。
2. abstractにする必要があるメソッドがないから。
3. 変な制限を開発者にかけたくないから。

とか。


はて・・・?なぜ逆は思いつかないのかが不思議。
とてもアンフェアだと思うが?たとえ思いつきだったとしてもね。

関係ないけど、囚人氏。お疲れさんですw(面白かったですわ。伝わってないかもねw)

[ メッセージ編集済み 編集者: ぶさいくろう 編集日時 2006-06-11 08:06 ]
まいるどきゃっと
大ベテラン
会議室デビュー日: 2004/08/12
投稿数: 135
お住まい・勤務地: 群馬
投稿日時: 2006-06-11 08:10
引用:

ぶさいくろうさんの書き込み (2006-06-11 08:00) より:

はて・・・?なぜ逆は思いつかないのかが不思議。
とてもアンフェアだと思うが?たとえ思いつきだったとしてもね。



ごめんなさい、何のことだかさっぱり分からないので詳細希望〜

# といっても、今日から引っ越しで1週間ぐらいほとんどアクセスできなくなるので返事は保証できませんがm(_ _)m

[ メッセージ編集済み 編集者: まいるどきゃっと 編集日時 2006-06-11 08:15 ]
dotnetmemo
常連さん
会議室デビュー日: 2006/04/29
投稿数: 24
投稿日時: 2006-06-11 08:41
いまさらですが、MSDNにも記述があるみたいですね。

抽象クラスとインターフェイスに関する推奨事項
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/Vbcon/html/vbconAbstractClassesVersusInterfaces.asp

個人的にも、インタフェースは特定機能をあらわすものいわゆる契約(DBC)で、抽象クラスは実装上のテクニックとして使い分けています。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-06-11 09:39
引用:

まいるどきゃっとさんの書き込み (2006-06-11 08:10) より:
ごめんなさい、何のことだかさっぱり分からないので詳細希望〜


逆をやればいいだけなんですが?
abstructクラスにしたい場合の視点がないでしょ?

>1. わざわざ抽象クラスにする理由がないから。
>2. abstractにする必要があるメソッドがないから。
>3. 変な制限を開発者にかけたくないから。

こういう一方からの考え方は不公平で無意味でしょ。
(その後の書き込みは良かったんだけど。と擁護しておく。)
lalupin4
大ベテラン
会議室デビュー日: 2004/07/26
投稿数: 163
投稿日時: 2006-06-11 13:10
 Martin Fowler氏が囚人さんぽいこといってます。参考になるかな:
「ImplicitInterfaceImplementation」
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?cmd=view&p=ImplicitInterfaceImplementation&key=%B0%C5%CC%DB
http://martinfowler.com/bliki/ImplicitInterfaceImplementation.html


引用:

囚人さんの書き込み (2006-06-10 23:33) より:
何度も言いますが、abstract と interface を比較して、interface の方が良い、というのは意味がないのです。

 はい。ありません。
私はそれぞれの抽象度の相対的な高低について述べたのであって、絶対的な善悪について述べたのではありません。

lalupin4
大ベテラン
会議室デビュー日: 2004/07/26
投稿数: 163
投稿日時: 2006-06-11 18:17
 こっちも発見:
「InterfaceImplementationPair」
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?InterfaceImplementationPair
まいるどきゃっと
大ベテラン
会議室デビュー日: 2004/08/12
投稿数: 135
お住まい・勤務地: 群馬
投稿日時: 2006-06-12 03:40
引用:

ぶさいくろうさんの書き込み (2006-06-11 09:39) より:

逆をやればいいだけなんですが?
abstructクラスにしたい場合の視点がないでしょ?

>1. わざわざ抽象クラスにする理由がないから。
>2. abstractにする必要があるメソッドがないから。
>3. 変な制限を開発者にかけたくないから。

こういう一方からの考え方は不公平で無意味でしょ。



あー、なるほど。了解です。

おっしゃるとおり、抽象クラスにしたい場合の視点を考えてないんです。そのとき頭に浮かんだことを何も考えなしで列挙してみただけの非常にいいかげんなものです。
「ぱっと思いつきで」「単なる思い付きで、何の考察もしてません」というのは、そのためのヒキョーな逃げ文句です。

現時点でもまともに考察してませんので、Objectを抽象クラスにすることに漠然とした違和感はありますが、それがどうしてなのか全く分かっていません

引用:

(その後の書き込みは良かったんだけど。と擁護しておく。)



ありがとうございます。

[ メッセージ編集済み 編集者: まいるどきゃっと 編集日時 2006-06-12 03:41 ]
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2006-06-12 19:30
#ここ↓だけ反応。
引用:

demanottoさんの書き込み (2006-06-11 00:31) より:
コンセント=Interface


ほぼ同じなんですが私の場合、ものがインターフェイスなだけに、人に説明する際に以下のような喩えを用います。

コード:
Interface USB20 : Inherits USB11
Interface IEEE1394

Class NewPersonalComputer : Inherits PersonalComputer : Implements USB20, IEEE1394
Class NewDigitalCamera : Inherits DigitalCamera : Implements USB20, IEEE1394
Class NewPrinter : Inherits Printer : Implements USB20, IEEE1394

Function Connect(usb As USB11) As Boolean
Function Connect(ilink As IEEE1394) As Boolean


みたいな。

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