- •3. Ооп. Методы, перегрузка, переопределение.
- •4. Ооп. Полиморфизм.
- •5. Методы класса. Конструкторы. Виды конструкторов. Статические методы и поля.
- •6. Понятие сложности алгоритма. Типовые виды алгоритмической сложности.
- •7. Исключения (try, catch, finally).
- •8. Интерфейсы, применение предназначения.
- •9. Generic типы.
- •10. Ограничения Generic типов.
- •11. Структуры данных. Динамический массив.
- •12. Структуры данных. Список.
- •13. Структуры данных. Двунаправленный список.
- •14. Структуры данных. Хеш-таблица.
- •15. Структуры данных. Стек.
- •16. Структуры данных. Очередь.
- •17. Коллекции в c#, описать какие структуры данных реализуют.
- •18. Матрицы преобразований.
- •19. Основы теории графов, что это такое, применение.
- •20. Граф. Способы задания графа.
5. Методы класса. Конструкторы. Виды конструкторов. Статические методы и поля.
Метод в объектно-ориентированном программировании — это функция или процедура, принадлежащая какому-то классу или объекту.Как и процедура в процедурном программировании, метод состоит из некоторого количества операторов для выполнения какого-то действия и имеет набор входных аргументов.Различают простые методы и статические методы (методы класса):простые методы имеют доступ к данным объекта (конкретного экземпляра данного класса),статические методы не имеют доступа к данным объекта и для их использования не нужно создавать экземпляры (данного класса).
Конструкторы
Конструктор предназначен для инициализации объекта. Конструкторы делятся на
конструкторы класса (для статических классов) и конструкторы экземпляра класса (для всех объектов класса).
Автоматический конструктор
Circle c = new Circle();
Конструктор по умолчанию
class Circle
{
public Circle() {x = 0; y = 0; r = 1;}
}
Конструктор с параметрами
class Circle
{
public Circle(double r)
{ x = 0; y = 0; this.r = r; }
}
Основные свойства конструкторов.
Конструктор не возвращает значение, даже типа void.
Класс может иметь несколько конструкторов с разными параметрами для разных видов инициализации.
Если не указано ни одного конструктора, или какие-то поля не были инициализированы, то полям присваивается нуль, полям ссылочных типов – null.
Конструкторы класса
Статические классы содержат только статические члены (в том числе, и конструктор),
которые хранятся в памяти в единственном экземпляре. Поэтому создавать экземпляры класса для них нет смысла.
Пример:
class Demo
{
static int a;
static int b;
private Demo(){} //закрытый конструктор
static Demo() //статический конструктор
{
a = 10; b = 2; }
public static void Print ()
{
Console.WriteLine("{0}+{1}={2}", a, b, a+b);
Console.WriteLine("{0}*{1}={2}", a, b, a*b);
Console.WriteLine("{0}-{1}={2}", a, b, a-b);
Console.WriteLine("{0}/{1}={2}", a, b, a-b);
}
}
Рассмотрим как происходит работа со статическим классом:
class Program
{
static void Main()
{
//ошибка: создать экземпляр статического класса нельзя
//Demo S=new Demo();
Demo.Print();
}
}
Результат работы программы:
10+2=12
10*2=20
10/2=5
Статические методы и поля
Статические поля
static int x;
MyClass.x = 5;
Статические методы
static int Method () { … }
MyClass.Method()
6. Понятие сложности алгоритма. Типовые виды алгоритмической сложности.
Сложность алгоритмов:
Сложность восприятия
Алгоритмическая сложность
Временные затраты.
Виды сложности:
Const, log(n), n, n*log(n), nчисло, числоn, n!
Сложность алгоритма – это зависимость конечного значения некоторого счетчика от размеров входных данных.
7. Исключения (try, catch, finally).
ИСКЛЮЧЕНИЯ try, catch, finally
Исключение – это специальный объект, создаваемый в программе, указывающий на
возникновение исключительной ситуации. Поля этого объекта хранят информацию о причине и месте возникновения исключения.
Операторы try, catch, finally
Исключения представляются классами. Все классы исключений создаются от базового класса Exception, который определен в пространстве имен System. Для управления обработкой исключений используются операторы try, catch и Finally
Структура построения исключений try // контролируемый блок
{
…
}
catch //один или несколько блоков обработки исключений
{
…
}
finally //блок завершения {
…
}
Программные инструкции, которые нужно проконтролировать на предмет исключений,
помещаются в блок try. При возникновении исключения внутри этого блока управление
будет передано на блок catch, который умеет обрабатывать возникшие исключения. Блок
finally будет выполнен в любом случае, не зависимо от того, возникли исключения внутри блока try или нет.
Механизм выполнения обработки исключений
При возникновении ошибки выполнения метода, метод генерирует исключение
соответствующего типа.
Пример:
static void Main()
{
Console.Write("x=");
int x = int.Parse(Console.ReadLine()); ??
int y = 1 / x;
Console.WriteLine("y={0}", y);
}
Перечислим, какие исключительные ситуации могут возникнуть.
1. Пользователь может ввести нечисловое значение и выполнение оператора Parse завершится неудачей.
2. Пользователь может ввести значение 0, и произойдет деление на 0.