Понятие обобщенного программирования. Принципы обобщенного программирования (абстрагирование, иерархия, типизация)

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

Впервые ОбП появилось в С++. В нем была разработана стандартная библиотека шаблонов – Template Library (STL). Ее авторы: Алекс Степанов и Мен Ли (1994 год). В настоящее время она расширена и называется (ATL – Active Template Library ). В среде . NET ОбП реализовано в виде коллекций.

Принципы абстрагирования и иерархии рассмотрены при изучении интерфейсов и коллекций. Динамическая идентификация позволяет распознать тип данных во время выполнения программы. Используется, когда имеется массив объектов базового класса и нужно точно узнать, на объект какого типа указывает ссылка на базовый класс. Или нужно проверить, удачно ли выполнена операция приведения типа. Динамическая идентификация типов также является ключевым компонентом средства Отражение (информация о типе). В C# динамическую идентификацию типов поддерживают 3 ключевых слова (или 3 оператора): is, as, typeof.

 


 

37. Коллекции и наборы. Обзор коллекций. Интерфейсы коллекций.
Классы коллекций общего назначения.

Под коллекцией понимается группа (набор) разнотипных объектов. Коллекции (C#, Java) называют еще семейства (VBA), контейнеры (C++). Коллекции стандартизируют способ обработки групп объектов в приложениях. Коллекции упрощают программирование, предлагая строить структуры данных не с нуля. Пример примитивной коллекции – System.Array. В нем есть такие методы как сортировка, инвертирование, очистка, перечисление. Но класс Array имеет свои ограничения, и наиболее важным из них является невозможность динамического переопределения размеров при добавлении и удалении элементов. Среда .NET Framework поддерживает 3 основных типа коллекций: общего назначения, специализированные и ориентированные на побитовую организацию данных. Коллекции упрощают программирование, предлагая уже готовые решения для построения структур данных, разработка кот. «с нуля» отлич-ся большой трудоемкостью. Слова коллекции, семейства, контейнеры – это слова-синонимы. самая примитивная коллекция – это System.Array. но ограничение этой коллекции состоит в том, что невозможно динамически управлять размером массива при добавлении или удалении элементов. Коллекции реализуют технологию обобщенного пр-мирования. Оно появилось еще в языке С++. Целью обобщенного пр-мирования явл. создание прграммного кода, независимо от типов данных. Для этого были разработаны шаблоны типов данных. Наиболее употребляемые: стеки, списки, очереди, векторы, а также алгоритмы их обработки были помещены в стандартную библиотеку шаблонов STL. Ее авторы- Алекс Степанов, Мен Ли. В новой технологии .NET как таковой библиотеки нет, а им-ся классы коллекции. Среда .NET поддерживает 3 осн типа коллекции: -общего назначения, -специализированные,-ориентированные на побитовую организацию данных. Классы коллекций общего назначения.Служат для временного хранения данных во время работы пр-мы, реализуют осн.структуры данных: динамический массив, стек, очередь. Очередь – последовательный набор элементов одногои того же типа, кот. может сокращ-ся с одного конца(начала очереди), а расширяться с другого(конца очереди). В любой момент времени доступен только один элемент, кот. нах-ся в начале очереди. Удаляется тот элемент, кот. был первым. Очереди исп-ся в СУБД, в Интернете, в Моделировании. К-ции общего назначения раб. С данными типа object. К-ции спец назнач. – ориентированы на обработку данных конкретного типа, или на обработку данных уникальным способом. К-ции ориентированные на побитовую орг-ю данных служат для хранения групп битов и исп-т только побитовые операции:сдвиг вправо, влево. Они примен-ся для разработки драйверов.