Материал предоставлен https://it.rfei.ru

Параметризация

6 лет назад

Задание! Здравствуйте,Семенов Андрей!Никак не пойму где у меня ошибка. Сколько верных заданий? Каковы преимущества параметризованного класса List[T] по сравнению с обычным классом List?..... С уважением,Алексей Истомин

6 лет назад

Добрый день, Алексей Сергеевич.

Очевидно, вы не представляете себе, насколько прекрасна эта концепция — параметризованный класс.

Класс, сам по себе, является способом инкапсулировать свойства и поведение абстрактного типа данных. Многие путают этот термин с сокрытием, но скорее его следует понимать как “интегрировать”.

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

Представим себе на секунду, что мы хотим запрограммировать такой класс, как вектор. Вектор — это такой стандартный контейнер для данных одного типа.

Если бы вам поставили такую задачу и сказали бы, что вариантов типов хранящихся данных будет, скажем 20, то вы должны были бы реализовать 20 типов векторов, каждый из которых умел бы работать только с теми данными, для которых был разработан.

Вы бы 20 раз написали одно и тоже, меняя только типы данных.

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

В нашем примере это было бы так: вы объявляете вектор, параметризованный типом строка (или специальным типом Собака, разработанным вами до этого) и всё прекрасно работает. И пишете не 20 классов, а один. А зарплату получаете как за 20. Здорово, правда?

Эта прекрасная концепция работает очень хорошо, позволяя создавать универсальные библиотеки поведения (в особенности в математике и в разработке игр). Такие библиотеки получаются краткими, функциональными, гибкими и легко расширяемыми.

С уважением, Станислав Евгеньевич Лахтин

Ваш комментарий

Комментирование доступно только для авторизованных пользователей.