Скачиваний:
192
Добавлен:
17.04.2018
Размер:
250.37 Кб
Скачать
  1. Интерфейсы

Интерфейс представляет собой полностью абстрактный класс, все методы которого абстрактны. Однако методы интерфейса объявляются без указания модификатора доступа, и класс, наследующий интерфейс, обязан полностью реализовать все методы интерфейса. В этом - отличие от класса, наследующего абстрактный класс, где потомок может реализовать лишь некоторые методы родительского абстрактного класса, оставаясь абстрактным классом.

Интерфейс позволяет описывать некоторые желательные свойства, которыми могут обладать объекты разных классов.

Среди интерфейсов, встроенных в библиотеку базовых классов .NET, можно особо выделить такие как:

  • IEnumerable (для работы с наборами объектов, в т.ч. с использованием оператора foreach).

  • IClonable (копирование объектов).

  • IComparable (для сравнения и сортировки объектов).

Пространство имен System.Collections, предназначенное для работы с наборами объектов, поддерживает интерфейсы:

  • ICollection (определяет общие характеристики класса набора элементов).

  • IComparer, IDictionary (позволяет представлять содержимое объекта в виде пар имя-значение).

  • IDictionaryEnumerator (нумерация содержимого объекта, поддерживающего IDictionary).

  • IEnumerable, IEnumerator.

  • IHashCodeProvider (возвращает хэш-код с помощью выбранного алгоритма хэширования).

  • IList (обеспечивает методы добавления, удаления и индексирования элементов в списке объектов).

Порядок выполнения лабораторной работы

Для изучения приводимых в лабораторной работе примеров необходимо создать в Microsoft Visual Studio проект консольного приложения и описать класс Program, используя приводимый в примерах код.

1.Работа с массивами.

Следующие две программы демонстрируют, каким образом выполняется инициализация и работа с прямоугольными и ломаными массивами в C#.

  1. Прямоугольный массив.

using System;

using System.Collections.Generic;

using System.Text;

namespace HelloWorldDemo

{

class Program

{

static void Main(string[] args)

{

// Прямоугольный многомерный массив

int[,]multMatr;

multMatr = new int[10,10];

// Заполнение массива 9 на 9:

for (int i = 1; i <= 9; i++)

for (int j = 1; j < 9; j++)

multMatr[i, j] = i * j;

// Вывод элементов многомерного массива

for (int i = 1; i <= 9; i++)

{

for (int j = 1; j <= 9; j++)

{

Console.Write(multMatr [i, j] + "\t");

}

Console.WriteLine();

}

}

}

В результат выполнения программы получим таблицу умножения следующего вида:

  1. Ломаный массив.

using System;

using System.Collections.Generic;

using System.Text;

namespace HelloWorldDemo

{

class Program

{

static void Main(string[] args)

{

// Ломаный многомерный массив из пяти внутренних массивов разного размера

int[][] JagArr = new int[10][];

// Инициализация генератора случайных чисел

Random rand = new Random();

// Динамическое создание ломаного массив

for (int i = 0; i < JagArr.Length; i++)

{

JagArr[i] = new int[i + rand.Next(10)];

}

// Вывод строк на консоль

// Каждый элемент по умолчанию имеет значение, равное

for (int i = 0; i < 10; i++)

{

// Свойство Length массива возвращает его размер

Console.Write("Length of row {0} is {1}:\t", i, JagArr[i].Length);

for (int j = 0; j < JagArr[i].Length; j++)

{

Console.Write(JagArr[i][j] + " ");

}

Console.WriteLine();

}

}

}

}

В результате выполнения программы получим следующую таблицу:

Соседние файлы в папке Лабораторные