- •1.Классы в с#: данные класса: поля и константы, спецификаторы доступа.
- •2. Классы в с#: методы класса, конструкторы и деструкторы.
- •3. Классы в c#: свойства класса, индексаторы.
- •4.Операции класса: перегрузка унарных и бинарных операций.
- •5.Операции класса: перегрузка операции преобразования типа.
- •6. Наследование классов, пример реализации механизма наследования.
- •7. Виртуальные методы класса
- •8. Абстрактные метода и классы, пример использования абстрактных классов.
- •9. Интерфейсы: пользовательские интерфейсы.
- •10. Интерфейсы: стандартные интерфейсы.
- •11. Структуры, как значимый тип данных.
- •12.Коллекции: классификация коллекций.
- •13. Коллекции: класс Stack.
- •14. Коллекции: класс Queue.
- •15. Коллекции: класс ArrayaList.
- •16.Коллекции: коллекция Hashtable.
- •17. Регулярные выражения, язык описания регулярных выражений.
- •18. Класс Regex и обработка текстовых данных.
- •19. Рекурсивные методы. Прямая рекурсия.
- •20. Рекурсивные методы. Косвенная рекурсия.
- •38. Обработка событий клавиатуры.
5.Операции класса: перегрузка операции преобразования типа.
Операции преобразования типов
Операции преобразования типов обеспечивают возможность явного и неявного преобразования между пользовательскими типами данных. Синтаксис объявителя операции преобразования типов выглядит следующим образом:
explicit operator целевой_тип (параметр) //явное преобразование
implicit operator целевой_тип (параметр) //неявное преобразование
Эти операции выполняют преобразование из типа параметра в тип, указанный в заголовке операции. Одним из этих типов должен быть класс, для которого выполняется преобразование.
Неявное преобразование выполняется автоматически в следующих ситуациях:
при присваивании объекта переменной целевого типа;
при использовании объекта в выражении, содержащем переменные целевого типа;
при передаче объекта в метод параметра целевого типа;
при явном приведении типа.
Явное преобразование выполняется при использовании операции приведения типа.
При определении операции преобразования типа следует учитывать следующие особенности:
тип возвращаемого значения (целевой_тип) включается в сигнатуру объявителя операции;
ключевые слова explicit и implicit не включаются в сигнатуру объявителя операции.
public static implicit operator string(Triangle t)
{ return " ( " + t.a.ToString() + " , " + t.b.ToString() + "," + t.c.ToString() + " ) "; }
public static implicit operator Triangle(string s)
{ Triangle t = new Triangle(0, 0, 0);
string[] str = s.Split(';');
t.a = int.Parse(str[0]);
t.b = int.Parse(str[1]);
t.c = int.Parse(str[2]);
return t; }
6. Наследование классов, пример реализации механизма наследования.
Управлять большим количеством разрозненных классов довольно сложно. С этой проблемой можно справиться путем упорядочивания и ранжирования классов, то есть объединяя общие для нескольких классов свойства в одном классе и используя его в качестве базового. Эту возможность предоставляет механизм наследования.
Наследование применяется для следующих взаимосвязанных целей:
исключения из программы повторяющихся фрагментов кода;
упрощения модификации программы;
упрощения создания новых программ на основе существующих.
Наследование
Класс в С# может иметь произвольное количество потомков и только одного предка. При описании класса имя его предка записывается в заголовке класса после двоеточия. Если имя предка не указано, предком считается базовый класс всей иерархии System.Object. Синтаксис наследования:
[атрибуты] [спецификаторы] class имя_класса [: предки]
{ тело_класса}
Класс, который наследуется, называется базовым. Класс, который наследует базовый класс, называется производным. Производный класс, наследует все переменные, методы, свойства, операторы и индексаторы, определенные в базовом классе, кроме того в производный класс могут быть добавлены уникальные элементы или переопределены существующие.
class DemoPoint //базовый класс
{ public int x;
public int y;
public void Show()
{ Console.WriteLine("({0}, {1})", x, y); }}
class DemoLine : DemoPoint //производный класс
{ public int xEnd;
public int yEnd;
public void Show()
{ Console.WriteLine("({0}, {1})-({2}, {3})", x, y ,xEnd, yEnd);}}