Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSBasicCourse2ndedPodbelsky / CSBasicCourse2ndedPodbelsky.rtf
Скачиваний:
27
Добавлен:
22.03.2016
Размер:
11.9 Mб
Скачать

Interface iImage

{

Void display();

double Measure { get; }

double BaseSize { set; }

}

struct Cube : IImage, IComparable // куб

{

double rib; // ребро - базовый размер

public double Measure // максимальный линейный размер

{ get { return Math.Sqrt(3 * rib * rib); } }

public double BaseSize { set { rib = value; } }

public void display()

{

string form = "Размеры куба: ребро={0,7:f3}; размах={1,7:f3}";

Console.WriteLine(form, rib, Measure);

}

public int CompareTo(object obj)

{

if (Measure < ((IImage)obj).Measure) return +1;

if (Measure == ((IImage)obj).Measure) return 0;

else return -1;

}

}

struct Square : IImage, IComparable // квадрат

{

double side; // сторона - базовый размер

public double Measure // максимальный размер

{ get { return Math.Sqrt(2 * side * side); } }

public void display()

{

string form = "Размеры квадрата: сторона={0,7:f3}; размах={1,7:f3}";

Console.WriteLine(form, side, Measure);

}

public double BaseSize { set { side = value; } }

public int CompareTo(object obj)

{

if (Measure < ((IImage)obj).Measure) return +1;

if (Measure == ((IImage)obj).Measure) return 0;

else return -1;

}

}

class Program

{

static void Main()

{

Cube cube = new Cube();

cube.BaseSize = 5;

Square sq = new Square();

sq.BaseSize = 5;

Cube cube1 = new Cube();

cube1.BaseSize = 7;

IImage[] arIm = new IImage[] { cube, sq, cube1 };

Array.Sort(arIm);

foreach (IImage memb in arIm)

memb.display();

}

}

Результаты выполнения программы:

Размеры куба: ребро= 7,000; размах= 12,124

Размеры куба: ребро= 5,000; размах= 8,660

Размеры квадрата: сторона= 5,000; размах= 7,071

В методе Main( ) определены два экземпляра структуры Cube и один экземпляр

структуры Square. С помощью свойства BaseSize заданы значения базовых размеров

структур. Объявлен и инициализирован массив типа IImage[ ]. Ссылка на него arIm

использована в качестве аргумента метода Array.Sort(). Цикл foreach перебора

элементов коллекции (в нашем примере массива) последовательно обращается через

ссылку memb типа IImage ко всем элементам упорядоченного массива. Для каждого

элемента вызывается метод display().

Контрольные вопросы

Как можно определить свой тип значений?

Приведите формат объявления перечисления.

Что такое базовый тип перечисления?

Что такое список перечисления?

Как инициализируются константы перечисления?

Приведите правила обращения к константам перечисления.

Какой тип имеет константа перечисления?

Когда константа перечисления воспринимается как значение с базовым типом

перечисления?

Перечислите операции, применимые к константам перечислений.

Назовите операции, не применимые к константам перечислений.

Где допустимо применять константы перечисления?

Назовите статические методы типов перечислений.

Как можно получить тип перечисления?

В чём различия структур и классов?

Назовите допустимые модификаторы структур.

Что такое интерфейсы структуры?

Почему в структурах отсутствует финализатор?

Объясните особенности копирования структур.

Что называют упаковкой?

Когда выполняется упаковка при работе со структурами?

Объясните особенности и возможности класса ArrayList.

К каким структурам применимы одинаковые методы?

Что определяет интерфейс, реализованный структурой?

В каком интерфейсе размещён прототип метода CompareTo()?

Какой метод используется в методе ArraySort() для сравнения элементов

сортируемого массива?

Соседние файлы в папке CSBasicCourse2ndedPodbelsky