2016年5月31日火曜日

[C#] インタフェース( interface )

こんにちは。明月です。
今日はインタフェースについて勉強します。


今まで継承すると思えばクラスあるいは抽象クラスから引継いてもらってクラスを生成することでした。でもその形なら2つ以上の継承をできずに統一されたデータタイプに結ぶことができないですね。
各クラスは機能別で分けて処理するプロジェクトの案件がある場合、継承クラスをAType,BType,CType,DTypeを作成して実装します。




でも上の場合は一つずつ区分ができますが2つ以上に機能を結ぶのはできないですね。そのため、多重継承ができるものが必要でそれをインタフェース(interface)と言います。


インタフェース(interface)


インタフェース(Interface)は抽象体なので実装しているロジックがあることではなく、抽象メソッドだけあります。




上の例を見るとインタフェースを使われなくても、プログラム作成することができそうですね。ですから、インタフェースを使わなくても問題がなさそうだし、性能にも影響がなさそうですね。
そのいうとおりでインタフェースを知らなくてもプログラムを作成できます。でもプロジェクトをデザイン、すなわちコーディング設計をする時にはインタフェースがなければ実装が大変になります。


例えば、プロジェクトを構成する時にDBが2つがあると考えてみましょう。2つのデータベースで構成されているテーブル(データ構造)も全て違うことで、ユーザの場合は2つのデータを選ぶことではなく一つのデータベースから取得するみたいに構成して提供しましょうという課題があると考えましょう。




上の例を見ると全体構造は少し複雑になりましたが、ロジックを使うユーザ(Main関数)はデータベースを気にしずにデータだけ考えてロジックを実装ができます。
また、上の条件ならデータベースが2つではなくもっと追加になってもソース修正が要らずにインタフェースに合わせてDBListに追加することができます。


プロジェクトは一人で立ち上げることよりチームを組んで立ち上げる時が多いです。その時にモジュール実装するたびにモジュール間に機能影響があったり、エラーが発生するとプロジェクトを進めることが大変になると思います。
それでOOP開発はモジュールの結合分離することで勧めます。そのためにOOPを実装するためにはインタフェースが必要なことです。


プロジェクト構成方法、ソースを実装する方法には後でデザインパタンを勉強する時に詳しく勉強しましょう。

0 件のコメント