Содержание
- 2. ОЗП Інкапсуляція – дозволяє приховувати внутрішню реалізацію. Успадкування – дозволяє створювати новий клас на базі іншого.
- 3. План Класи та об’єкти. Інкапсуляція. Методи. Статичні Методи. Конструктори. Властивості, аксесори, автоматичні властивості. Успадкування. Масив вказівників
- 4. План 11. Перевизначення операторів. 12. Ссилочні типи та типи значень. Ref, Out 13. Значення NULL. Nullable-типы.
- 5. Класи та об’єкти. Інкапсуляція [модифікатор доступу] class [имя_класса] { //тело класса } збірки, на яку є
- 6. Класи та об’єкти. Інкапсуляція namespace HelloWorld { class Student //без модификатору доступу, клас буде internal {
- 7. Класи та об’єкти. Інкапсуляція Члени класу - поля; - константи; - властивості; - конструктори; - методи;
- 8. Класи та об’єкти. Інкапсуляція Всі члени класу, як і сам клас, мають свій рівень доступу. Тільки
- 9. Класи та об’єкти. Інкапсуляція Пример объявления полей в классе: class Student { private string firstName; private
- 10. Класи та об’єкти. Інкапсуляція namespace HelloWorld { class Student { private string firstName; private string lastName;
- 11. Класи та об’єкти. Інкапсуляція static void Main(string[] args) { Student student1 = new Student(); Student student2
- 12. Класи та об’єкти. Інкапсуляція static void Main(string[] args) { Student student1 = new Student(); student1.firstName= "Nikolay";
- 13. Класи та об’єкти. Інкапсуляція Book b1 = new Book(); b1.name = "Война и мир"; b1.author =
- 14. Методи Метод – це невелика підпрограма, яка виконує, в ідеалі, тільки одну функцію. Статичний метод –
- 15. Методи class TVSet { private bool switchedOn; public void SwitchOn() { switchedOn = true; } public
- 16. Методи class StringHelper { public static string TrimIt(string s, int max) { if (s.Length class Program
- 17. Методи Статичний метод не має доступу до нестатическим полів класу: class SomeClass { private int a;
- 18. Конструктори Конструктор – це метод класу, призначений для ініціалізації об'єкта при його створенні. Ім’я конструктора завжди
- 19. Конструктори class Car { private double mileage; private double fuel; public Car() { //оголошення конструктора mileage
- 20. Конструктори public Car(double mileage, double fuel) {// конструктор с параметрами this.mileage = mileage; this.fuel = fuel;
- 21. Конструктори У класі можливо вказувати безліч конструкторів, головне щоб вони відрізнялися сигнатурами. Сигнатура, у разі конструкторів,
- 22. Конструктори class Car { private double mileage; private double fuel; public Car() { mileage = 0;
- 23. Властивості Властивість – це член класу, який надає механізм доступу до поля класу. При використанні властивості
- 24. Властивості class Student { private int year; //оголошення закритого поля public int Year { //оголошення властивості
- 25. Властивості class Student { private int year; public int GetYear() { return year; } public void
- 26. Властивості Необхідно закрити доступ на запис class Student { private int year; public Student(int y) {
- 27. Властивості Автоматичні властивості class Student { public int Year { get; set; } } class Program
- 28. Успадкування Людина - > студент, вчитель, фермер, … class Animal { public string Name { get;
- 29. Успадкування Виклик конструктора базового класу Коли конструктор визначено тільки в спадкоємця, то тут все просто –
- 30. Успадкування class Animal { public string Name { get; set; } public Animal(string name) { Name
- 31. Масив вказівників на базовий клас. Оператори is, as В Сі-шарп є можливість створення масиву (чи списку)
- 32. Масив вказівників на базовий клас. Оператори is, as class Animal { public string Name { get;
- 33. Масив вказівників на базовий клас. Оператори is, as Хоча як елементи в цей список ми додавали
- 34. Масив вказівників на базовий клас. Оператори is, as Оператор is Оператор is працює дуже просто –
- 35. Масив вказівників на базовий клас. Оператори is, as Оператор as У наведеному вище прикладі, замість явного
- 36. Поліморфізм Поліморфізм – це різна реалізація однотипних дій. Віртуальний метод – це метод, який МОЖЕ бути
- 37. Поліморфізм В якості системи, що надає той самий інтерфейс, в програмуванні може виступати клас і інтерфейс.
- 38. Віртуальні методи. Перевизначення методів Віртуальний метод оголошується за допомогою ключового слова virtual: [модифікатор доступу] virtual [тип]
- 39. Віртуальні методи. Перевизначення методів class Person { public string Name { get; set; } public int
- 40. Віртуальні методи. Перевизначення методів Якщо відкинути ключові слова virtual і override? То в цьому випадку, в
- 41. Віртуальні методи. Перевизначення методів Буває так, що функціонал методу, який змінюється, в базовому класі мало відрізняється
- 42. Абстрактні класи, методи та властивості abstract class [имя_класса] { //тело } Такий клас має такі особливості:
- 43. Абстрактні класи, методи та властивості Абстрактний метод [модифікатор доступу] abstract [тип] [ім'я методу] ([аргументи]); Реалізація абстрактного
- 44. Абстрактні класи, методи та властивості Абстрактні властивості Створення абстрактних властивостей не сильно відрізняється від методів: [модифікатор
- 45. abstract class Animal { public string Name { get; set; } public string Type {get; set;}
- 46. Інтерфейси. Множинне успадкування Інтерфейси – це ще один інструмент реалізації поліморфізму в Сі-шарп. Інтерфейс являє собою
- 47. Інтерфейси. Множинне успадкування Імена інтерфейсів прийнято давати, починаючи з префіксу «I», щоб відразу відрізняти де клас,
- 48. Інтерфейси. Множинне успадкування Клас, який реалізує інтерфейс, повинен надати реалізацію всіх членів інтерфейсу: class SomeClass :
- 49. Інтерфейси. Множинне успадкування interface Igeometrical { void GetPerimeter(); void GetArea (); } class Rectangle : Igeometrical
- 50. Інтерфейси. Множинне успадкування Множинне спадкування є в мові C++ , а в C# від нього відмовилися
- 51. Інтерфейси. Множинне успадкування interface IDrawable { void Draw(); } interface IGeometrical { void GetPerimeter(); void GetArea
- 52. Перевантаження методів Перевантаження методів – це оголошення у класі методів з однаковими іменами при цьому з
- 53. Перевантаження методів Приклад того, як може бути перевантажений метод: public void SomeMethod() { // тіло методу
- 54. Перевантаження методів Приклад того, як не може бути перевантажений метод: public void SomeMethod(int a) { //
- 55. Перевантаження методів Метод ToInt32() може приймати параметр різного типу – bool, float, double, byte, char… Приклад
- 56. Перевантаження операторів Перевантаження унарного* оператора: public static [возвращаемый_тип] operator [оператор]([тип_операнда] [операнд]) { //функціонал оператора } Перевантаження
- 57. Перевантаження операторів Можна перевантажувати Унарні оператори: +, -, !, ++, —, true, false Бінарні оператори: +,
- 58. Перевантаження операторів public class Money { public decimal Amount { get; set; } public string Unit
- 59. Перегрузка операторов public class Money { public decimal Amount { get; set; } public string Unit
- 60. Перевантаження операторів Також існує можливість перевантаження самого операторного методу. Public class Money { public decimal Amount
- 61. Вказівникові типи та типи значень. Ref та out Типи значень Цю категорію також називають структурними типами.
- 62. Вказівникові типи та типи значень. Ref та out Код нижче показує, що при присвоєнні значення однієї
- 63. Вказівникові типи та типи значень. Ref та out Змінна посилального типу містить не дані, а посилання
- 64. Вказівникові типи та типи значень. Ref та out У коді нижче був створений простий клас, в
- 65. Вказівникові типи та типи значень. Ref та out В C# значення змінних по-замовчуванню передаються за значенням
- 66. Вказівникові типи та типи значень. Ref та out Щоб використовувати ref, це ключове слово варто вказати
- 67. Вказівникові типи та типи значень. Ref та out public static void ChangeValue(out int a) { a
- 68. Вказівникові типи та типи значень. Ref та out Продуктивність Враховуючи той факт, що за замовчуванням метод
- 69. Значення Null. Nullable-типи. Оператор ?? Посилальні типи можуть приймати значення null, типи значень – ні. Null
- 70. Узагальнення class Account { public int Id { get; set; } public int Sum { get;
- 71. Узагальнення І на перший погляд, щоб вийти з подібної ситуації, ми можемо визначити властивість Id як
- 72. Узагальнення Account account2 = new Account { Sum = 4000 }; account2.Id = "4356"; int id2
- 73. Узагальнення Кутові дужки в описі class Account вказують, що клас є узагальненим, а тип T, укладений
- 74. Узагальнення Account account1 = new Account { Sum = 5000 }; Account account2 = new Account
- 75. Узагальнення Значення за замовчуванням. У цьому випадку нам треба використовувати оператор default(T). Він присвоює посилальних типів
- 76. Узагальнення. Узагальнені методи class Program { private static void Main(string[] args) { int x = 7;
- 77. Колекції System.Collections (прості необобщенные класи колекцій), System.Collections.Generic (узагальнені або типізовані класи колекцій) и System.Collections.Specialized (спеціальні класи
- 78. Колекції using System; using System.Collections; using System.Collections.Generic; namespace Collections { class Program { static void Main(string[]
- 79. Колекції. Двухзв’язні списки Value: саме значення вузла, представлене типом T Next: посилання на наступний елемент типу
- 80. Колекції. Двухзв’язні списки AddBefore(LinkedListNode node, LinkedListNode newNode): вставляє в список вузол newNode перед вузлом node. AddBefore(LinkedListNode
- 81. Колекції. Двухзв’язні списки using System; using System.Collections.Generic; namespace Collections { class Program { static void Main(string[]
- 82. Колекції. Черга Queue Клас Queue представляє звичайну чергу, працює за алгоритмом FIFO ("перший увійшов - першим
- 83. Колекції. Черга Queue Queue numbers = new Queue (); numbers.Enqueue(3); // чергу 3 numbers.Enqueue(5); // чергу
- 84. Колекції. Stack Клас Stack представляє колекцію, яка використовує алгоритм LIFO ("останній увійшов - першим вийшов"). При
- 85. Колекції. Stack Stack persons = new Stack (); persons.Push(new Person() { Name = "Tom" }); persons.Push(new
- 86. Колекції. Dictionary Dictionary countries = new Dictionary (5); countries.Add(1, "Russia"); countries.Add(3, "Great Britain"); countries.Add(2, "USA"); countries.Add(4,
- 87. Колекції. Dictionary Dictionary people = new Dictionary (); people.Add('b', new Person() { Name = "Bill" });
- 88. Колекції. Dictionary Dictionary people = new Dictionary (); people.Add('b', new Person() { Name = "Bill" });
- 89. Колекції. Індексатори і створення колекцій Індексатори дозволяють індексувати об'єкти і використовувати їх як масиви. Фактично індексатори
- 90. Колекції. Індексатори і створення колекцій class Program { static void Main(string[] args) { Library library =
- 91. Колекції. Індексатори і створення колекцій class Matrix { private int[,] numbers = new int[,] { {
- 92. Перерахування (enum) Перерахування (Enumeration) – це визначений користувачем цілочисельний тип, який дозволяє специфікувати набір допустимих значень,
- 93. Перерахування (enum) enum Directions { Left, Right, Forward, Back }; // оголошення перерахування class Program {
- 94. Перерахування (enum) Головні переваги, які нам дають перерахування це: - Гарантія того, що змінним будуть призначатися
- 95. Структури Структура – це більш проста версія класів. Всі структури успадковуються від базового класу System.ValueType і
- 96. Структури Структури відрізняються від класів наступними речами: - Структура не може мати конструктор без параметрів (конструктора
- 97. Структури Структури підходять для створення нескладних типів, таких як точка, колір, окружність. Якщо необхідно створити безліч
- 98. Перевантаження методів Equals, GetHashCode. Equals та «==» Всі класи є спадкоємцями базового класу object. У ньому
- 99. Перевантаження методів Equals, GetHashCode. Equals та «==» static void Main(string[] args) { object o1 = new
- 100. Перевантаження методів Equals, GetHashCode. Equals та «==» Метод Equals приймає один аргумент – об'єкт, який буде
- 101. Перевантаження методів Equals, GetHashCode. Equals та «==» public class Money { public decimal Amount { get;
- 102. Перевантаження методів Equals, GetHashCode. Equals та «==» Метод GetHashCode Даний метод повертає хеш-код - число відповідне
- 103. public class Money { public decimal Amount { get; set; } public string Unit { get;
- 104. Регулярні вирази. Клас Regex Регулярний вираз – це якийсь шаблон, складений із символів і спецсимволов, який
- 105. Регулярні вирази. Клас Regex Регулярні вирази надають масу можливостей, деякі з них: - замінити в рядку
- 106. Регулярні вирази. Клас Regex Для того, щоб працювати з регулярними виразами необхідно підключити на початку програми
- 107. Регулярні вирази. Клас Regex static void Main(string[] args) { string data1 = "Петр, Андрей, Николай"; string
- 108. Регулярні вирази. Клас Regex IsMatch – перевіряє містить рядок хоча б одну підрядок відповідну шаблоном регулярного
- 109. Регулярні вирази. Клас Regex Matches – повертає всі відповідні підрядки шаблоном у вигляді колекції типу MatchCollection.
- 110. Регулярні вирази. Клас Regex Replace – повертає рядок, в якій замінені усі підрядки, що відповідають шаблону,
- 111. Регулярні вирази. Клас Regex Split - повертає масив рядків, отриманий в результаті поділу входить рядка в
- 112. Регулярні вирази. Клас Regex Класи символів
- 115. Символи прив'язки
- 116. Символи вибору
- 117. Інші символи
- 118. Регулярні вирази. Клас Regex static void Main(string[] args){ Regex myReg = new Regex(@"[A-Za-z]+[\.A-Za-z0-9_-]*[A-Za-z0-9]+@[A-Za-z]+\.[A-Za-z]+"); Console.WriteLine(myReg.IsMatch("[email protected]")); // True
- 119. Регулярні вирази. Клас Regex Тут ми поговоримо про другий конструкторі Regex, що приймає в якості другого
- 120. Регулярні вирази. Клас Regex CultureInvariant - ігнорування національних установок рядка; ExplicitCapture – забезпечується пошук тільки буквальних
- 121. Регулярні вирази. Клас Regex Приклад програми з використанням параметра пошуку (ігнорування регістра): string data = "nikolay,
- 122. Регулярні вирази. Клас Regex public static string GetDomain(string url) { Regex re = new Regex("http://", RegexOptions.IgnoreCase);
- 123. Форматування рядків В Сі-шарп можливістю задати форматування мають наступні методи: - System.String.Format - Console.WriteLine - StreamWriter.Write
- 124. Форматування рядків Загальна структура форматування рядків має наступний вигляд: String.Format("рядок формату", arg0, arg1, …, argn); arg0
- 125. Форматування рядків За [номером аргументу] вказується до якого аргументу буде застосована дана команда (відлік аргументів починається
- 126. Форматування рядків Параметр "ширина" Іноді необхідно відформатувати рядки, що містять числа, щоб вони були вирівняні по
- 127. Форматування рядків Вбудовані формати числових даних А тепер ми розглянемо параметр команди форматування після двокрапки –
- 128. Форматування рядків Console.WriteLine("{0:c}", 5.50); // "5,50 грн." Console.WriteLine("{0:c1}", 5.50); // "5,5 грн." Console.WriteLine("{0:e}", 5.50); // "5,500000е+000"
- 129. Форматування рядків Користувальницький формат числових даних
- 130. Форматування рядків Приклад використання користувальницьких форматів: Console.WriteLine("{0:0000.00}", 1024.32); // "1024,32" Console.WriteLine("{0:00000.000}", 1024.32); // "01024,320" Console.WriteLine("{0:####.###}", 1024.32);
- 131. Форматування рядків Вбудовані формати дати і часу Для роботи з датою і часом існує окремий набір
- 132. Форматування рядків
- 133. Форматування рядків Користувальницький формат дати і часу (на прикладі дати 30.06.2014 22:30:10.1234):
- 134. Форматування рядків
- 135. Форматування рядків
- 136. Приклад використання стандартних форматів дати і часу: Console.WriteLine("{0:d}", DateTime.Now); // "30.06.2014" Console.WriteLine("{0:D}", DateTime.Now); // "30 червня
- 137. Форматування рядків Регіональні параметри CultureInfo У прикладах вище стандартні параметри культури, щоб змінити ці параметри є
- 138. Делегати Крім властивостей і методів класи можуть містити делегати та події. Делегати представляють такі об'єкти, які
- 139. Делегати class Program { delegate void GetMessage(); // 1. Оголошуємо делегат static void Main(string[] args) {
- 140. Делегати class Program { delegate int Operation(int x, int y); static void Main(string[] args) { //
- 141. Делегати class Program { delegate void GetMessage(); static void Main(string[] args) { if (DateTime.Now.Hour Show_Message(GoodMorning); }
- 142. Делегати Дані приклади, можливо, не показують істинної сили делегатів, так як потрібні нам методи в даному
- 143. Делегати class Account { int _sum; // Змінна для зберігання суми int _percentage; // Змінна для
- 144. Делегати Припустимо, у разі виведення грошей з допомогою методу Withdraw нам треба якось повідомляти про це
- 145. Делегати public void Withdraw(int sum) { if (sum _sum -= sum; if (del != null) del("Сумма
- 146. Делегати class Program { static void Main(string[] args) { Account account = new Account(200, 6); //
- 147. Делегати Таким чином, ми створили механізм зворотного виклику для класу Account, який спрацьовує у разі зняття
- 148. Події В минулій темі ми розглянули, як з допомогою делегатів можна створювати механізм зворотних викликів у
- 149. class Account { // Оголошуємо делегат public delegate void AccountStateHandler(string message); // Подія, що виникає при
- 150. Події Тут ми визначили дві події: Withdrowed і Added. Обидві події оголошені як екземпляри делегата AccountStateHandler,
- 151. Події class Program { static void Main(string[] args) { Account account = new Account(200, 6); //
- 152. Події Для прикріплення обробника події до певної події використовується операція += і відповідно для відкріплення –
- 153. Події Клас події даних AccountEventArgs Якщо раптом ви коли-небудь створювали графічні додатки Windows Forms або WPF,
- 154. Події class AccountEventArgs { // Повідомлення public string message; // Сума, на яку змінився рахунок public
- 155. class Account { // Оголошуємо делегат public delegate void AccountStateHandler(object sender, AccountEventArgs e); // Подія, що
- 156. Події class Program { static void Main(string[] args) { Account account = new Account(200, 6); //
- 157. Анонімні методи Іноді такі методи потрібні для обробки однієї події і більше цінності не представляють і
- 158. Анонімні методи І важливо відзначити, що на відміну від блоку методів або умовних і циклічних конструкцій,
- 159. Лямбды Лямбда-вирази являють спрощену запис анонімних методів. Лямбда-вирази дозволяють створити ємні лаконічні методи, які можуть повертати
- 160. Лямбди Тут i => i * i являє лямбда-вираз, де i - це параметр, а i*i
- 161. Лямбди Оскільки тут використовується кілька параметрів, то вони беруться в дужки. І так як в тілі
- 162. Лямбди Також лямбда-вираз необов'язково має приймати блок операторів та виразів. Воно може також приймати посилання на
- 163. Лямбди class Program { delegate bool IsEqual(int x); static void Main(string[] args) { int[] integers =
- 164. Лямбди Метод Sum приймає в якості параметра масив чисел і делегат IsEqual і повертає суму чисел
- 165. Лямбди Тобто параметр x тут буде представляти число, яке передається у делегат: if (func(i)) А вираз
- 167. Скачать презентацию