Задание! Здравствуйте,Семенов Андрей!Никак не пойму где у меня ошибка. Сколько верных заданий? Каковы преимущества параметризованного класса List[T] по сравнению с обычным классом List?..... С уважением,Алексей Истомин
Добрый день, Алексей Сергеевич.
Очевидно, вы не представляете себе, насколько прекрасна эта концепция — параметризованный класс.
Класс, сам по себе, является способом инкапсулировать свойства и поведение абстрактного типа данных. Многие путают этот термин с сокрытием, но скорее его следует понимать как “интегрировать”.
Паметризованный класс — класс, который описывает поведение экземпляра таким образом, что типы использующихся данных можно менять в процессе инициализации. Подставлять типы, другими словами, оставляя поведение на месте.
Представим себе на секунду, что мы хотим запрограммировать такой класс, как вектор. Вектор — это такой стандартный контейнер для данных одного типа.
Если бы вам поставили такую задачу и сказали бы, что вариантов типов хранящихся данных будет, скажем 20, то вы должны были бы реализовать 20 типов векторов, каждый из которых умел бы работать только с теми данными, для которых был разработан.
Вы бы 20 раз написали одно и тоже, меняя только типы данных.
И тут появляется параметризация. Это означает, что мы определяем Параметризованный класс: он описывает поведение стандартным, параметризующимся, образом. Подставляя в необходимые моменты тот тип данных, который используется при создании его экземпляра.
В нашем примере это было бы так: вы объявляете вектор, параметризованный типом строка (или специальным типом Собака, разработанным вами до этого) и всё прекрасно работает. И пишете не 20 классов, а один. А зарплату получаете как за 20. Здорово, правда?
Эта прекрасная концепция работает очень хорошо, позволяя создавать универсальные библиотеки поведения (в особенности в математике и в разработке игр). Такие библиотеки получаются краткими, функциональными, гибкими и легко расширяемыми.
С уважением, Станислав Евгеньевич Лахтин