Модуль 14 Средства обобщенного программирования и итераторы. Обзор


Модуль 14 Средства обобщенного программирования и итераторы

Обзор модуля В этом модуле вы изучите Средства обобщённого программирования Создание и использование средств обобщённого программирования Итераторы

Занятие 1 - Средства обобщённого программирования На первом занятии, Средства обобщённого программирования, вы изучите: Объяснение принципов обобщённого программирования в C#. Объяснение создания обобщенного типа Преимущества обобщенного программирования.

Назначение Потребительские товары, например, одежда, могут быть фирменными (брендовыми) или базовыми (типовыми). Обычная футболка намного дешевле и проще в обслуживании, чем фирменная. Обычная футболка намного доступней на рынке, ее может купить кто угодно . Средства обобщенного программирования в C# - это структуры данных, которые позволяют повторное использование определенных ранее функциональностей для различных типов данных C#.

Определение Для гарантий безопасности типов, C# использует понятие обобщенных конструкций, которые имеют несколько особенностей, включая возможность определять шаблоны обобщенных типов, на основе которых позже может быть сконструирован тип.

Обобщения - вид параметризованных структур данных, которые могут работать и с типами значений, и со ссылочными типами. Пространство имен System.Collections.ObjectModel позволяет создавать динамические, а также доступные только для чтения обобщенные коллекции. Пространство имен System.Collections.Generic состоит из классов и интерфейсов, позволяющих определять кастомизованные обобщенные коллекции. Пространства имен для обобщенных конструкций Классы - Пространство имен System.Collections.Generic содержит классы, позволяющие создавать коллекции безопасных типов. Интерфейсы - Пространство имен System.Collections.Generic состоит из интерфейсов, позволяющих создавать коллекции безопасных типов.

Создание обобщенных типов Объявление обобщения всегда использует параметр типа, являющийся пропущенным шаблоном для требуемого типа данных. Процесс создания обобщенного типа начинается с определения обобщенного типа, содержащего параметры типа. Определение служит схемой.

Преимущества Обобщения гарантируют безопасность типов во время компиляции. Обобщения позволяют повторное использование кода безопасным образом без приведения типа или упаковки. Помимо возможности повторного использования есть несколько иных преимуществ использования обобщений. Преимущества: Улучшенная производительность Гарантированная жестко-типизованная модель программирования Уменьшение ошибок времени выполнения

Занятий 2 - Создание и использование обобщений На втором занятии, Создание и использование обобщений, вы изучите: Определение синтаксиса создания обобщенного класса. Описание обобщенных методов. Определение синтаксиса создания обобщенного интерфейса.

public void Display() { Console.WriteLine(“Constructed Class is of type: “ + typeof(T)); Console.WriteLine(“Values stored in the object of constructed class are: “); for (int i = 0; i < values.Length; i++) { Console.WriteLine(values[i]); } } } class Students { static void Main(string[] args) { Обобщенные классы определяют функциональности, которые можно использовать для любого типа данных. Обобщенные классы объявляются с помощью объявления класса с последующим указанием параметра типа, заключенным в угловые скобки. При создании обобщенного класса необходимо обобщить типы данных в параметр типа и опционально определить ограничения, применимые к параметру типа. Constructed Class is of type: System.String Values stored in the object of constructed class are: John Patrick Constructed Class is of type: System.Int32 Values stored in the object of constructed class are: 200 35 General

Ограничения параметров типа Ограничение - это требуемое условие типа данных для параметра типа. Ограничения задаются с помощью ключевого слова where. Они используются, если программисту необходимо ограничить типы данных параметра типа для гарантий целостности и согласованности данных в коллекции. using System; using System.Collections.Generic; class Employee { string _empName; int _empID; public Employee(string name, int num) { _empName = name; _empID = num; } public string Name { get { return _empName; } } Пример public int ID { get { return _empID; } } } class GenericList

Наследование обобщенных классов Обобщенный класс может наследоваться как любой другой класс в C#. Обобщенный класс может вести себя как базовый и как производный класс. При наследовании одного обобщенного класса в другом обобщенном классе, можно использовать обобщенный параметр типа базового класса вместо передачи типа данных параметра.

Virtual - Обобщенные методы, объявляемые с ключевым словом virtual, могут замещаться в производном классе. Override - Обобщенный метод, объявляемый с ключевым словом override, замещает метод базового класса. Abstract - Обобщенный метод, объявленный с ключевым словом abstract, содержит только объявление метода. using System; using System.Collections.Generic; class SwapNumbers { static void Swap

using System; using System.Collections.Generic; interface IMaths

Ограничения обобщенного интерфейса Можно указать интерфейс как ограничение для параметра типа. Это позволяет использовать элементы интерфейса в обобщенном классе. Это гарантирует, что используются только типы, реализующие интерфейс. using System; using System.Collections.Generic; interface IDetails { void GetDetails(); } class Student : IDetails { string _studName; int _studID; public Student(string name, int num) { _studName = name; _studID = num; } Пример public void GetDetails() { Console.WriteLine(_studID + “t” + _studName); } } class GenericList

Занятие 3 - Итераторы На последнем занятии, Итераторы, вы изучите: Описание итераторов в C#. Преимущества итераторов. Использование итераторов.

Назначение Итератор в C# используется для прохождения по списку значений или коллекции. Это блок кода, использующий цикл foreach для обращения к коллекции значений последовательным образом. Для реализации логики вручную, программист может последовательно перемещаться с помощью итераторов по значениям для их сравнения.

Итераторы Итератор - это не элемент данных, а способ доступа к элементу. Он может быть методом, аксессором get или оператором, позволяющим навигацию по значениям в коллекции. Итераторы указывают способ генерации значений при доступе выражения foreach к элементам внутри коллекции.

Преимущества Приветствуется использование итераторов для навигации по значениям коллекции с помощью выражения foreach. Это обеспечивает следующие преимущества: Итераторы обеспечивают упрощенный и быстрый способ итерации по значениям в коллекции. Итераторы уменьшают сложность реализации элемента нумерации для коллекции. Итераторы могут возвращать большие объемы значений. Итераторы могут использоваться для вычисления и возврата только необходимых значений. Итераторы могут возвращать значения без затрат памяти, указывая на каждый элемент списка.

Реализация Итераторы могут создаваться реализацией метода GetEnumerator(), возвращающего ссылку на интерфейс IEnumerator. Блок итератора использует ключевое слово yield для получения значений для экземпляра элемента нумерации или для прекращения итерации. Выражение yield return возвращает значения, тогда как выражение yield break останавливает итерацию. using System; using System.Collections; class Department : IEnumerable { string[] departmentNames = {“Marketing”, “Finance”, “Information Technology”, “Human Resources”}; public IEnumerator GetEnumerator() { for (int i = 0; i < departmentNames.Length; i++) { yield return departmentNames[i]; } } Пример static void Main (string [] args) { Department objDepartment = new Department(); Console.WriteLine(“Department Names”); Console.WriteLine(); foreach(string str in objDepartment) { Console.WriteLine(str); } } } Вывод
![using System; class NamedIterators { string[] cars = { “Ferrari”, “Mercedes”, “BMW”, “Toyota”,“Nissan” }; using System; class NamedIterators { string[] cars = { “Ferrari”, “Mercedes”, “BMW”, “Toyota”,“Nissan” };](https://present5.com/customparser/91664400_142131721 --- expc_module_14ru_1.ppt/slide_21.jpg)
using System; class NamedIterators { string[] cars = { “Ferrari”, “Mercedes”, “BMW”, “Toyota”,“Nissan” }; public IEnumerable GetCarNames() { for (int i = 0; i < cars.Length; i++) { yield return cars[i]; } } static void Main(string[] args) { NamedIterators objIterator = new NamedIterators(); foreach (string str in objIterator.GetCarNames()) { Console.WriteLine(str); } } } Ferrari Mercedes BMW Toyota Nissan Реализация именованных итераторов Другой путь создания итераторов - создание метода с возвращаемым типом - интерфейсом IEnumerable, называемого именованным итератором. Именованные итераторы могут принимать параметры, которые можно использовать для управления начальной и конечной точками цикла foreach. Эта гибкая технология позволяет выбирать требуемые значения из коллекции.

Резюме Средства обобщённого программирования Средства обобщенного программирования - структуры данных, позволяющие повторное использование кода для таких различных типов, как классы или интерфейсов. Создание и использование средств обобщённого программирования Обобщенные классы могут создаваться объявлением класса, с последующим списком параметров типа, заключенным в угловые скобки, и опицональным использованием ограничений для параметров типа. Итераторы Итератор - блок кода, возвращающий последовательно упорядоченные значения одного типа.

expc_module_14ru_1.ppt
- Количество слайдов: 22