Louis
Disclaimer: предполагаю, что речь идёт не о primitive wrapper class (а-ля Byte, Integer и т.п.)
Пример.
Есть волк, его нужно "внедрить" в стадо овечек, причём так, чтобы они ничего не заметили.
Берём волка, оборачиваем в овечью шкуру - и все довольны (до поры
)
Пример-2.
Пожилым людям сложно разбираться с мобильными телефонами - мелкие картинки, сложная структура меню, и т.п.
Для них удобнее был бы девайс в виде трубки без экрана, и с парой кнопок: "Позвонить сыну", "Позвонить мужу" и.т.п. По-сути, для этого можно использовать любой мобильник, настроив быстрый набор, заклеив экран, и убрав лишние клавиши.
Т.е. завернуть сложный девайс в "оболочку", чтобы с ним было удобнее работать.
На пальцах.
Вашей программе необходимо работать с динамическим массивом объектов типа MySuperPuperClass, причём нужны только методы add, get, size и clear.
Классическое решение (временно забудем про версию 1.5) - использовать java.util.Vector и приведение типов а-ля (MySuperPuperClass)myVector.get(...).
Но.
Во-первых, доступными остаются
все public методы Vector'а (что нехорошо, нам нужно только четыре); во-вторых, это неудобно набирать; в-третьих, это нечитабельно.
Решение - создать свой класс MySuperPuperVector, который будет иметь public-методы add, get, size и clear, работающие с типом MySuperPuperClass. Данные будут храниться всё в том же Vector'е, но этот Vector будет не родителем нашего класса, а его полем/аттрибутом/property (все называют по-своему).
Таким образом, всю основную работу выполняет Vector, а наш класс просто перенаправляет все запросы к нему, попутно преобразуя типы и скрывая "лишние" методы Vector'а.
Ну, собственно, и получаем Vector в оболочке.