teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

誤字修正

2017/01/22 09:48

投稿

Panzer_vor
Panzer_vor

スコア1636

answer CHANGED
@@ -41,5 +41,5 @@
41
41
  (例えばListクラスはIList、IReadOnlyListインターフェイスを実装してるからどちらのデータ型としても利用可能となります。)
42
42
 
43
43
  上記に書いてきたような事情もあって、
44
- インターフェイスを定義し、
44
+ インターフェイスを定義した後に
45
- 各抽象クラス、クラス必要な分を実装するという実装方法が王道となっています。
45
+ 各抽象クラス、クラスにて必要な分を実装するという方法が王道となっています。

1

追記・レイアウト修正

2017/01/22 09:47

投稿

Panzer_vor
Panzer_vor

スコア1636

answer CHANGED
@@ -1,12 +1,12 @@
1
1
  同じオブジェクト指向言語でも、
2
2
  C++みたいに多重継承を許す言語もあれば、
3
- C#、Javaみたいに多重継承を許さない言語が存在します。
3
+ C#、Javaみたいに**多重継承を許さない言語**が存在します。
4
4
 
5
5
  質問者様も抜粋してます、
6
6
  MSDNの「クラスまたはインターフェイスの選択」の説明が今回の肝で、
7
- コアな部分では何故インターフェースファーストの開発が行われるかの大きな理由となってきます。
7
+ **コアな部分では何故インターフェースファーストの開発が行われるか**の大きな理由となってきます。
8
8
 
9
- 仮に.NET Frameworkに**ICollection、IListが存在しない**と仮定してみましょう。
9
+ 仮に**.NET FrameworkにICollection、IListが存在しない**と仮定してみましょう。
10
10
 
11
11
  単純にICollectionやIListと構造がほぼ同じの**Collection、Listクラス**辺りから見ると、
12
12
  **「インターフェースとかなくても問題ないじゃん」**と思いがちです。
@@ -19,8 +19,11 @@
19
19
  Collectionクラスを継承して機能拡張したクラスにしなければなりません。
20
20
  更にこのクラス機能群をそのまま利用するクラスが必要・・・となると、
21
21
  **一瞬で継承の泥沼**にハマります。
22
+ (コアな部分ではこういったことが多々あるため、
22
- むしろこのような作りとなっている**各クラの継承階層を追う方しんど**ませんか?
23
+ インターフェイスがいと多分えらことになるでしょう。)
23
24
 
25
+ むしろこのような作りとなっている**各クラスの継承階層を追う方がしんどい・・・**と思いませんか?
26
+
24
27
  更に言うと上記は、
25
28
  オブジェクトの相互変換性が皆無となります。
26
29
  例えばCollectionとHogeCollectionをどちらもCollectionの機能範囲だけで操作したいという場合、
@@ -29,7 +32,7 @@
29
32
 
30
33
  ですがインターフェースを事前に用意されていると、
31
34
  **Collection、HogeCollectionどちらにもICollectionを実装**することで、
32
- どちらもICollectionとしてアクセス可能となります。
35
+ どちらもICollection型経由でのアクセス可能となります。
33
36
  これで呼び出し側をシンプルに出来ますね。
34
37
 
35
38
  おまけにこれは質問者様も把握しているかと思いますが、