Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Выч. тех. - Лаба-3 - с изображением формы.docx
Скачиваний:
1
Добавлен:
12.11.2018
Размер:
704.61 Кб
Скачать

Класс ArrayList - потомок абстрактного класса Stack

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

Массивы, в отличие от списка, имеют фиксированный размер. Конечно, размер массива можно передавать конструктору класса, позволяя строить стеки заданной емкости. Но в этом случае на емкость стека накладывается ограничение. Можно, конечно, использовать не массив C#, а встроенную динамическую структуру ArrayList, которая была задействована для представления списка. Но это не честно с методической точки зрения, поскольку в библиотеке FCL есть и класс Stack, собственную реализацию которого хочется построить. Еще одно возможное решение, которое предлагается реализовать, может быть основано на следующем подходе. Вначале строится массив фиксированного размера, что и определяет текущую емкость стека. Если в процессе работы со стеком обнаруживается, что нужно добавить в стек элемент, а памяти уже нет, то динамически увеличивается размер массива.

Классы без потомков

Экзотическим, но иногда полезным видом классов являются классы, для которых запрещается строить классы потомки путем наследования. При создании такого класса нет необходимости в выполнении над классом каких-либо болезненных операций. Вполне достаточно приписать классу модификатор sealed, он и запрещает построение потомков.