‫このビデオと次のビデオでは､ インターフェイスについて学びます｡ インターフェイスは､
‫オブジェクト指向プログラミングとクラスの機能を拡張するので､ 非常に重要です｡
‫では､ インターフェースとは何でしょうか｡
‫インターフェイスを実装するクラスは､ そのインターフェイスで定義されたすべてのオブジェクトの実装を提供することに同意する､
‫という契約だと考えてください｡
‫つまり､ インターフェースには契約条件､ メソッド､ プロパティが含まれますが､ それらをどのように実装するかは､ インターフェースを実装するクラス次第ということです｡
‫これらのインターフェイスのメソッドが私たちのクラスで実装されている限り､ インターフェイスは幸せなままです｡
‫そのため､ インターフェースは実装を含むことができません｡
‫それが大事なんです｡
‫そのため､ 他の鋭利なものと区別するために､ 一般にその名称の前にIEを付けている｡
‫インターフェースはinterfaceキーワードで作成します｡
‫では､ 実際にどうすればいいのかを見てみましょう｡
‫わかりました｡
‫というわけで､ Visual Studioに戻りました｡
‫そこで､ RC Sharpのクラスで最もよく使われる機能の1つが､ クラスのインスタンスとの比較です｡
‫これは､ イコールメソッドを使用して行われます｡
‫これは､ 両方のクラスへの参照が同じかどうかを比較するものです｡
‫しかし､ 我々はそれらを比較し､ 他のいくつかのフィールドに基づいて､ それらが等しいかどうかを確認したい｡
‫そこで､ I Equitableというインターフェースを実装することで実現します｡
‫この例では､ Ticketというクラスがあり､ duration（時間）という1つのプロパティを定義しています｡
‫では､ 早速このクラスを作成してみましょう｡
‫ここに新しいクラスがありますが､ 実はここに行くか､ ショートカットのコントロールKとCを使って､ このクラスをチケットと呼ぶことにしています｡
‫つまり､ このチケットは､ 私が言ったように､ 1つのプロパティとコンストラクタを持つだけです｡
‫では､ ここに入れてみましょう｡
‫つまり､ このプロパティはチケットと私たちの期間を保存するためにあるのです｡
‫そして､ ここにコンストラクタがあります｡
‫そして､ 今度はAIエクイタブルインターフェースを実装してみましょう｡
‫そこで､ 継承を使ったときと同じように､ コロンと､ 使いたいインターフェイスを使うのです｡
‫しかも､ たくさんあるのがわかりますね｡
‫そして､ 使いたいのはハイエクになる｡
‫次に､ どのような種類のオブジェクトを比較するかを定義する必要があります｡
‫そこで､ ここではチケット同士を比較してみたいと思います｡
‫そのため､ チケットというキーワードをつける必要があるのです｡
‫Visual Studioは､ 特定のメソッドを作成するために､ 値の型やクラスが実装する一般的なメソッドを定義すると言っているので､
‫あまり嬉しくないことにお気づきでしょう｡
‫しかし, ここで問題になるのは, ticket がインターフェースのメンバを実装していないことです． 私は, ticket が ticket に等しいと考えました．
‫このまま実装していけば､ 非常に簡単に解決できます｡
‫だから､ すべてのメンバーをうまく使って明示的に実装するか､ 手動でやるか､ どちらかでしたね｡
‫早速､ やってみましょう｡
‫つまり､ 基本的には､ 私が渡すチケット（他のチケット）が､ チケットと同じかどうかをチェックするブール値を返したいのです｡
‫それが､ このメソッドを呼び出すものです｡
‫だから､ チケット｡
‫このチケットから作成したものを､ 別のチケットと比較し､ 継続時間を比較します｡
‫つまり､ 期間が同じであれば､ 同じチケットであると判断するわけです｡
‫ここでは､ この時間単位と他の時間単位との比較を返すだけです｡
‫つまり､ 基本的には､ このチケットは時間単位で期間を持ち､ もう一方のチケットもチケットタイプであると言っているのです｡
‫そのため､ 時間単位で持続時間が設定されており､ 両者を比較しているのです｡
‫そして､ この比較､ 二重の等号は､ 基本的に真か偽を返すのでしょうか？
‫つまり､ これは左右のブール演算子なのです｡
‫つまり､ 自分に残されているものと､ 自分にふさわしいものを比較するのです｡
‫そして､ もしそれらが同じであれば､ trueを返します｡
‫それ以外の場合はfalseを返します｡
‫基本的にこのメソッドequalsはtrueを返すと言うことです｡
‫equals メソッドを呼び出したチケットが､ 比較するチケットと同じ時間単位を持つ場合､
‫true を返します｡
‫そうでない場合は､ false を返す｡
‫では､ 私たちのプログラムであるCSEに移動して､ 実際にこれを使用してみましょう｡
‫ここでは､ 2つのチケットを作成します｡ 1つはTW 1で､ 新しいチケットとし､ 期間は10時間とします｡
‫そして､ 実際にこれをコピーして､ 同じく10時間のチケット2を作成し､ 比較してみましょう｡
‫そこで､ ここでは､ 右のコントロールラインを使用して､ tw two dot equals を表示し､ tw one と比較するだけにしてみましょう｡
‫ここでは､ 基本的にチケット2とチケット1を比較し､ equalsメソッドを使用して比較しています｡
‫では､ 早速実行してみましょう｡
‫そして､ それが真実であると言うことが分かるでしょう｡
‫そしてそれは､ いわば通常のequalsメソッドを使って2つのオブジェクトを比較すると､
‫そうならないのです｡
‫そこで､ もしこれを実装しないのであれば､ ちょっとここで解消してしまいましょう｡
‫では､ これらをすべてコメントアウトして､ 両者を比較してみましょう｡
‫ほら､ まだメソッドがあるじゃないですか｡
‫イコールは一般に存在する方法なので､ このイコールはまだ有効です｡
‫なぜなら､ equalsはオブジェクト・クラスの内部にあるメソッドだからです｡
‫そして､ すべてのクラスはobjectを継承しているので､ objectクラスは常にこのequalsメソッドを持っています｡
‫しかし､ 今やっているのは､ I equitable インターフェイスを使って､ 独自の equals メソッドを実装することだ｡
‫いわば､ 独自の方法で比較できるように､ 特定のインターフェイスを使い､ 独自のコードを実装しているわけです｡
‫つまり､ 今､ 2つを比較すると､ 比較する対象が全く同じかどうかを比較しているのではなく､
‫我々の場合､ 時間と我々のものが同じであれば､ 我々のものにおける持続時間が同じであれば､ 真を返すということです｡
‫ですから､ もし時間と私たちのものが同じでない場合､ 例えば6だとすると､ 比較している2つのチケットの期間が同じではないので､
‫falseを返します｡
‫これは､ 存在する簡単なインターフェースを使った例ですが､ ご覧のように､ プロジェクトを作成するときに自動的に存在するインターフェースはたくさんあります｡
‫しかし､ 次のビデオでは､ 独自のインターフェイスを作成し､ それを使用する方法を紹介する予定です｡
‫それでは､ 会場でお会いしましょう｡