SlideShare a Scribd company logo
1 of 14
.NET Framework & C#
Модуль 6.2 введення в Generics
В цьому модулі:
 Що таке generics?
 Необхідність використання generics
 Створення generic класів
 Порівняльний аналіз generic класів і класів колекцій
 Використання обмежень
 Створення generic інтерфейсів
 Створення generic делегатів
 Створення generic методів
 Що таке ітератор
 Синтаксис, приклади використання ітераторів
2
Andrii Hladkyi
trilobt@gmail.com
Що таке generics?
 Generics – універсальні або параметризовані типи, які
дозволяють при описі класів, структур, методів і інтерфейсів
використовувати параметризовані параметри (не вказувати тип
параметра в момент написання коду).
 Тип параметра визначається в момент оголошення змінної
відповідного типу.
 Таким чином можна створити загальний елемент.
Andrii Hladkyi
trilobt@gmail.com 3
Необхідність використання generics
 Повторне використання коду. Немає необхідності
створювати два ідентичних класи, які відрізняються
лише типами параметрів.
 Для підвищення продуктивності коду по порівнянню з
використанням параметрів типу object – немає
необхідності виконувати приведення типів
 Перевірка типів в момент компіляції програми.
Andrii Hladkyi
trilobt@gmail.com 4
Створення generic класів
 При створені generic класів параметр типу вказується в
трикутних дужках після імені класу.
 Узагальнених параметрів типу може бути декілька.
 Для встановлення значень за замовчувань змінним
узагальненого типу використовується вираз Default(T). При
цьому значення типу посилань встановлюються в null, а
структурних в 0.
 Правила наслідування від generic класів:
◦ Якщо від generic класу наслідується не узагальнений, клас
наслідник повинен конкретизувати параметр типу
◦ При реалізації generic віртуальних методів похідний
неузагальнений клас повинен конкретизувати параметр типу
◦ Якщо від generic класу наслідується інший generic клас, в ньому
потрібно враховувати обмеження типу, що вказаний в базовому
класі
Andrii Hladkyi
trilobt@gmail.com 5
Andrii Hladkyi
trilobt@gmail.com 6
Демонстрація
Створимо generic клас точки
Порівняльний аналіз generic класів і класів колекцій
 Інтерфейси
 Класи колекцій
Andrii Hladkyi
trilobt@gmail.com 7
Andrii Hladkyi
trilobt@gmail.com 8
Демонстрація
Використання обмежень
 Для параметра типу можна вказати обмеження, що вказують, яким
вимогам повинен відповідати тип даних, що використовується замість
даного параметра
 Синтаксис оголошення обмеження
Andrii Hladkyi
trilobt@gmail.com 9
class ім’яКласа<T> where T : обмеження
Andrii Hladkyi
trilobt@gmail.com 10
Демонстрація
Задамо обмеження параметру типу для класу точки
Створення generic інтерфейсів
 При створенні інтерфейсів, та як при створені класів, можна
використовувати узагальнені типи параметрів.
 Необхідно створити generic клас, в якому буде міститись колекція
даних узагальненого типу, і в цьому класі реалізувати метод, який
повинен повертати суму елементів колекції. Сума повинна бути того
типу, що і типи даних в колекції. Для того щоб елементи в колекції
можна було б сумувати потрібно створити інтерфейс, що містить
метод обрахунку суми, і вказати даний інтерфейс в якості обмеження
для параметра типу.
Andrii Hladkyi
trilobt@gmail.com 11
Andrii Hladkyi
trilobt@gmail.com 12
Демонстрація
Andrii Hladkyi
trilobt@gmail.com 13
Демонстрація
Метод находження максимального елемента масиву
Andrii Hladkyi
trilobt@gmail.com 14
Створити узагальнений клас прямої на площині. В класі передбачити два
поля типу узагальненої точки – точки, через які проходить пряма.
Реалізувати в класі:
• Конструктор, який приймає 4 координати (координати для 1-ї і 2-ї
точки)
• метод ToString()

More Related Content

What's hot

Net framework і c# module 14
Net framework і c# module 14Net framework і c# module 14
Net framework і c# module 14Andrii Hladkyi
 
Net framework і c# module 16
Net framework і c# module 16Net framework і c# module 16
Net framework і c# module 16Andrii Hladkyi
 
Net framework і c# module 8
Net framework і c# module 8Net framework і c# module 8
Net framework і c# module 8Andrii Hladkyi
 
NET Framework and C# Module 6. Delegates, Events
NET Framework and C# Module 6. Delegates, EventsNET Framework and C# Module 6. Delegates, Events
NET Framework and C# Module 6. Delegates, EventsAndrii Hladkyi
 
Net framework і c# module 17
Net framework і c# module 17Net framework і c# module 17
Net framework і c# module 17Andrii Hladkyi
 
12 Architecture
12 Architecture12 Architecture
12 Architectureeleksdev
 
лаб. роб. №2 обєкти та сервіси що ними надаються
лаб. роб. №2   обєкти та сервіси що ними надаютьсялаб. роб. №2   обєкти та сервіси що ними надаються
лаб. роб. №2 обєкти та сервіси що ними надаютьсяcit-cit
 
08 Exceptions and AOP
08  Exceptions and AOP08  Exceptions and AOP
08 Exceptions and AOPeleksdev
 
Advanced c sharp part 3
Advanced c sharp part 3Advanced c sharp part 3
Advanced c sharp part 3eleksdev
 
Net framework і c# module 10
Net framework і c# module 10Net framework і c# module 10
Net framework і c# module 10Andrii Hladkyi
 
Advanced C#. Part 2
Advanced C#. Part 2Advanced C#. Part 2
Advanced C#. Part 2eleksdev
 
Net framework і c# module 12
Net framework і c# module 12Net framework і c# module 12
Net framework і c# module 12Andrii Hladkyi
 

What's hot (12)

Net framework і c# module 14
Net framework і c# module 14Net framework і c# module 14
Net framework і c# module 14
 
Net framework і c# module 16
Net framework і c# module 16Net framework і c# module 16
Net framework і c# module 16
 
Net framework і c# module 8
Net framework і c# module 8Net framework і c# module 8
Net framework і c# module 8
 
NET Framework and C# Module 6. Delegates, Events
NET Framework and C# Module 6. Delegates, EventsNET Framework and C# Module 6. Delegates, Events
NET Framework and C# Module 6. Delegates, Events
 
Net framework і c# module 17
Net framework і c# module 17Net framework і c# module 17
Net framework і c# module 17
 
12 Architecture
12 Architecture12 Architecture
12 Architecture
 
лаб. роб. №2 обєкти та сервіси що ними надаються
лаб. роб. №2   обєкти та сервіси що ними надаютьсялаб. роб. №2   обєкти та сервіси що ними надаються
лаб. роб. №2 обєкти та сервіси що ними надаються
 
08 Exceptions and AOP
08  Exceptions and AOP08  Exceptions and AOP
08 Exceptions and AOP
 
Advanced c sharp part 3
Advanced c sharp part 3Advanced c sharp part 3
Advanced c sharp part 3
 
Net framework і c# module 10
Net framework і c# module 10Net framework і c# module 10
Net framework і c# module 10
 
Advanced C#. Part 2
Advanced C#. Part 2Advanced C#. Part 2
Advanced C#. Part 2
 
Net framework і c# module 12
Net framework і c# module 12Net framework і c# module 12
Net framework і c# module 12
 

More from Andrii Hladkyi (20)

Net Framework and c# Lesson 1
Net Framework and c# Lesson 1Net Framework and c# Lesson 1
Net Framework and c# Lesson 1
 
Wpf module 2
Wpf module 2Wpf module 2
Wpf module 2
 
Wpf module 1
Wpf module 1Wpf module 1
Wpf module 1
 
Msp module 3
Msp module 3Msp module 3
Msp module 3
 
Msp module 2
Msp module 2Msp module 2
Msp module 2
 
Msp module 1
Msp module 1Msp module 1
Msp module 1
 
Ado.net module 2
Ado.net module 2Ado.net module 2
Ado.net module 2
 
Ado.net module 1
Ado.net module 1Ado.net module 1
Ado.net module 1
 
Design pattern module 1
Design pattern module 1Design pattern module 1
Design pattern module 1
 
Win api module_2.0_gdi+
Win api module_2.0_gdi+Win api module_2.0_gdi+
Win api module_2.0_gdi+
 
Win api module_1.1_ok
Win api module_1.1_okWin api module_1.1_ok
Win api module_1.1_ok
 
Win api module_6.2
Win api module_6.2Win api module_6.2
Win api module_6.2
 
Design pattern module 1
Design pattern module 1Design pattern module 1
Design pattern module 1
 
Net framework і c# lesson1
Net framework і c# lesson1Net framework і c# lesson1
Net framework і c# lesson1
 
Uml module 6
Uml module 6Uml module 6
Uml module 6
 
Uml module 5
Uml module 5Uml module 5
Uml module 5
 
Uml module 4
Uml module 4Uml module 4
Uml module 4
 
Uml module 3
Uml module 3Uml module 3
Uml module 3
 
Uml module 2
Uml module 2Uml module 2
Uml module 2
 
Uml module 1
Uml module 1Uml module 1
Uml module 1
 

NET Framework and C# Module 6.2. Generics

  • 1. .NET Framework & C# Модуль 6.2 введення в Generics
  • 2. В цьому модулі:  Що таке generics?  Необхідність використання generics  Створення generic класів  Порівняльний аналіз generic класів і класів колекцій  Використання обмежень  Створення generic інтерфейсів  Створення generic делегатів  Створення generic методів  Що таке ітератор  Синтаксис, приклади використання ітераторів 2 Andrii Hladkyi trilobt@gmail.com
  • 3. Що таке generics?  Generics – універсальні або параметризовані типи, які дозволяють при описі класів, структур, методів і інтерфейсів використовувати параметризовані параметри (не вказувати тип параметра в момент написання коду).  Тип параметра визначається в момент оголошення змінної відповідного типу.  Таким чином можна створити загальний елемент. Andrii Hladkyi trilobt@gmail.com 3
  • 4. Необхідність використання generics  Повторне використання коду. Немає необхідності створювати два ідентичних класи, які відрізняються лише типами параметрів.  Для підвищення продуктивності коду по порівнянню з використанням параметрів типу object – немає необхідності виконувати приведення типів  Перевірка типів в момент компіляції програми. Andrii Hladkyi trilobt@gmail.com 4
  • 5. Створення generic класів  При створені generic класів параметр типу вказується в трикутних дужках після імені класу.  Узагальнених параметрів типу може бути декілька.  Для встановлення значень за замовчувань змінним узагальненого типу використовується вираз Default(T). При цьому значення типу посилань встановлюються в null, а структурних в 0.  Правила наслідування від generic класів: ◦ Якщо від generic класу наслідується не узагальнений, клас наслідник повинен конкретизувати параметр типу ◦ При реалізації generic віртуальних методів похідний неузагальнений клас повинен конкретизувати параметр типу ◦ Якщо від generic класу наслідується інший generic клас, в ньому потрібно враховувати обмеження типу, що вказаний в базовому класі Andrii Hladkyi trilobt@gmail.com 5
  • 7. Порівняльний аналіз generic класів і класів колекцій  Інтерфейси  Класи колекцій Andrii Hladkyi trilobt@gmail.com 7
  • 9. Використання обмежень  Для параметра типу можна вказати обмеження, що вказують, яким вимогам повинен відповідати тип даних, що використовується замість даного параметра  Синтаксис оголошення обмеження Andrii Hladkyi trilobt@gmail.com 9 class ім’яКласа<T> where T : обмеження
  • 10. Andrii Hladkyi trilobt@gmail.com 10 Демонстрація Задамо обмеження параметру типу для класу точки
  • 11. Створення generic інтерфейсів  При створенні інтерфейсів, та як при створені класів, можна використовувати узагальнені типи параметрів.  Необхідно створити generic клас, в якому буде міститись колекція даних узагальненого типу, і в цьому класі реалізувати метод, який повинен повертати суму елементів колекції. Сума повинна бути того типу, що і типи даних в колекції. Для того щоб елементи в колекції можна було б сумувати потрібно створити інтерфейс, що містить метод обрахунку суми, і вказати даний інтерфейс в якості обмеження для параметра типу. Andrii Hladkyi trilobt@gmail.com 11
  • 13. Andrii Hladkyi trilobt@gmail.com 13 Демонстрація Метод находження максимального елемента масиву
  • 14. Andrii Hladkyi trilobt@gmail.com 14 Створити узагальнений клас прямої на площині. В класі передбачити два поля типу узагальненої точки – точки, через які проходить пряма. Реалізувати в класі: • Конструктор, який приймає 4 координати (координати для 1-ї і 2-ї точки) • метод ToString()