Объектно-ориентированное программирование на С#. Андрианова А.А - 125 стр.

UptoLike

125
// Базовые типы закрытые.
class D : C<string, int>, I1<string> {}
// Базовые типы конструируемые.
class E<T> : C<int, T>, I1<T> {}
class F : I1<T> {} // Ошибка! Тип T не определен.
class G<T> : C<string, int> {} // Базовый тип закрытый
7.3. Обобщенные интерфейсы
Обобщенный интерфейс задает абстрактное поведение (абстрактные
методы), которое может быть использовано при различных типах
параметров. Например, следующий обобщенный интерфейс задает все
операции сравнения объектов обобщенного типа T:
// интерфейс, определяющий методы сравнения двух элементов
interface IMyComparer<T>
{
bool Greater(T ob1, T ob2);
bool Less(T ob1, T ob2);
bool LessOrEqual(T ob1, T ob2);
bool GreaterOrEqual(T ob1, T ob2);
bool Equal(T ob1, T ob2);
bool NotEqual(T ob1, T ob2);
}
Наследовать этот интерфейс могут как открытые (обобщенные) классы,
так и закрытые (конкретные) классы. Во втором случае интерфейс
IMyComparer используется для конкретного типа данных.
Создадим на основе этого интерфейса обобщенный класс, в котором
определяются все методы сравнения.
// обобщенный класс, предназначенный для сравнения элементов
// раскрывает обобщенный интерфейс IMyComparer
class MyComparer<T> : IMyComparer<T> where T : IComparable
{
// переопределяются различные методы сравнения
// двух элементов, определенные интерфейсом IMyComparer
public bool Greater(T ob1, T ob2)
{
return ob1.CompareTo(ob2)>0;
}
   // Базовые типы закрытые.
   class D : C, I1 {}
   // Базовые типы конструируемые.
   class E : C, I1 {}
   class F : I1 {}          // Ошибка! Тип T не определен.
   class G : C {}      // Базовый тип закрытый



                             7.3. Обобщенные интерфейсы

     Обобщенный интерфейс задает абстрактное поведение (абстрактные
методы), которое может быть использовано при различных типах
параметров. Например, следующий обобщенный интерфейс задает все
операции сравнения объектов обобщенного типа T:

  // интерфейс, определяющий методы сравнения двух элементов
  interface IMyComparer
  {
     bool Greater(T ob1, T ob2);
     bool Less(T ob1, T ob2);
     bool LessOrEqual(T ob1, T ob2);
     bool GreaterOrEqual(T ob1, T ob2);
     bool Equal(T ob1, T ob2);
     bool NotEqual(T ob1, T ob2);
  }

     Наследовать этот интерфейс могут как открытые (обобщенные) классы,
так и закрытые (конкретные) классы. Во втором случае интерфейс
IMyComparer используется для конкретного типа данных.
     Создадим на основе этого интерфейса обобщенный класс, в котором
определяются все методы сравнения.
   // обобщенный класс, предназначенный для сравнения элементов
   // раскрывает обобщенный интерфейс IMyComparer
   class MyComparer : IMyComparer where T : IComparable
   {
      // переопределяются различные методы сравнения
      // двух элементов, определенные интерфейсом IMyComparer
      public bool Greater(T ob1, T ob2)
      {
         return ob1.CompareTo(ob2)>0;
      }


                                                                    125