- •3. Ооп. Методы, перегрузка, переопределение.
- •4. Ооп. Полиморфизм.
- •5. Методы класса. Конструкторы. Виды конструкторов. Статические методы и поля.
- •6. Понятие сложности алгоритма. Типовые виды алгоритмической сложности.
- •7. Исключения (try, catch, finally).
- •8. Интерфейсы, применение предназначения.
- •9. Generic типы.
- •10. Ограничения Generic типов.
- •11. Структуры данных. Динамический массив.
- •12. Структуры данных. Список.
- •13. Структуры данных. Двунаправленный список.
- •14. Структуры данных. Хеш-таблица.
- •15. Структуры данных. Стек.
- •16. Структуры данных. Очередь.
- •17. Коллекции в c#, описать какие структуры данных реализуют.
- •18. Матрицы преобразований.
- •19. Основы теории графов, что это такое, применение.
- •20. Граф. Способы задания графа.
9. Generic типы.
Generic типы
Generic типы (обобщения) используются в ситуациях, когда поведение алгоритма не зависит от типа данных, с которым осуществляется работа. Generic нужны для облегчения работы. Например обычный метод с int обрабатывает только целочисленные массивы, а с Generic работает с любым типом массивов.
static void WriteArr(int[] arr)
{
foreach (var item in arr)
Console.WriteLine(item);
}
Обобщённые методы
void WriteArr<T> ( T[] arr ) {}
Обобщённые типы (классы и структуры)
Class MyList<T>
Struct Pair<Tkey, TValue>
Обобщённые интерфейсы
Interface IDrawable<T>
Обобщённые делегаты
delegate void DoSomething<T> (T x, T y)
Пример Generic
static void Print<T> (T[] arr)
{
foreach (var item in arr)
{
Console.Write(item);
}
}
static void Main(string[] args)
{
int[] = {....};
string[]s = {"....", "...",...};
Print <int>(i);
Print(S);
}
10. Ограничения Generic типов.
Ограничения Generic типов
Действия выполнимы только если компилятор о них знает:
T Max<T>( T, x, T, y)
{
return x>y ? x: y;
}
Правильная реализация:
T Max<T>( T, x, T, y) where T : IComparable<T>
{
return x.CompareTo(y) > 0 ? x:y;
}
Синтаксис:
where шаблон: список_ограничений
where T: struct Структура (value-type)
where T: class Класс (reference-type)
where T: new() Тип должен иметь конструктор по умолчанию
where T: имя класса Соответствует указанному классу или его потомкам where T: имя интерфейса Реализует указанный интерфейс
where TChild: TBase TChild — класс, являющийся потомком класса TBase
Пример Generic
static void Print<T> (T[] arr)
{
foreach (var item in arr)
{
Console.Write(item);
}
}
static void Main(string[] args)
{
int[] = {....};
string[]s = {"....", "...",...};
Print <int>(i);
Print(S);
}
11. Структуры данных. Динамический массив.
Структура данных (англ. data structure) — программная единица, позволяющая хранить и обрабатывать множество однотипных и/или логически связанных данных в вычислительной технике. Для добавления, поиска, изменения и удаления данных структура данных предоставляет некоторый набор функций, составляющих её интерфейс. Назначение структур: повышении эффективности и производительности программ. Структуры относятся к типам значений, и поэтому ими можно оперировать непосредственно, а не по ссылке. Следовательно, для работы со структурой вообще не требуется переменная ссылочного типа, а это означает в ряде случаев существенную экономию оперативной памяти.
Динамический массив (размер меняется в процессе программы)
|
5 |
4 |
8 |
2 |
|
|
|
|
Плюсы: произвольный и последовательный доступ
Минусы: упорядочение, добавление и удаление элементов в начале, в произвольных позициях
Сортированный массив:
Плюсы: произвольный и последовательный доступ, поиск, упорядочение.
Минусы: добавление и удаление элементов.
