undefined

Задачи на потоки | 8 уровень

Java Core
8 уровень , 8 лекция
Доступна

— Привет, Амиго!

undefined
10
Задача
Java Core, 8 уровень, 8 лекция
Недоступна
Wrapper (Decorator)
Разберись, что делает программа. Аналогично классу DecoratorRunnableImpl создай класс DecoratorMyRunnableImpl.
undefined
10
Задача
Java Core, 8 уровень, 8 лекция
Недоступна
Расширяем AmigoOutputStream
Используя шаблон проектирования Wrapper (Decorator) расширь функциональность AmigoOutputStream. В классе QuestionFileOutputStream при вызове метода close() должна быть реализована следующая функциональность: 1. Вывести в консоль фразу "Вы действительно хотите закрыть поток? Д/Н". 2. Считайте строку.
undefined
10
Задача
Java Core, 8 уровень, 8 лекция
Недоступна
AmigoOutputStream
1 Измени класс AmigoOutputStream так, чтобы он стал Wrapper-ом для класса FileOutputStream. Используй наследование. 2 При вызове метода close() должны выполняться следующая последовательность действий: 2.1 Вызвать метод flush(). 2.2 Дописать следующий текст "JavaRush © All rights reserved.", использ
undefined
10
Задача
Java Core, 8 уровень, 8 лекция
Недоступна
UnsupportedFileName
Измени класс TxtInputStream так, чтобы он работал только с txt-файлами (*.txt). Например, first.txt или name.1.part3.txt. Если передан не txt-файл, например, file.txt.exe, то конструктор должен выбрасывать исключение UnsupportedFileNameException. Подумай, что еще нужно сделать, в случае выброшенного
undefined
10
Задача
Java Core, 8 уровень, 8 лекция
Недоступна
Таблица
Измени класс TableInterfaceWrapper так, чтобы он стал Wrapper-ом для TableInterface. Метод setModel должен вывести в консоль количество элементов в новом листе перед обновлением модели. Метод getHeaderText должен возвращать текст в верхнем регистре - используйте метод toUpperCase().
Комментарии (158)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
Oleg Уровень 28 Kamchatka
31 мая 2021
Бредовость задач зашкаливает! В задаче "AmigoOutputStream", скопипастил в IDEA-ю ихнее "верное решение", IDEA подчеркнула красным, сигнатуру объявления класса, и сказала: "при таком раскладе класс не должен быть public". Убрал public, валидатор сходит с ума. Вернул public - "верное решение!" IDEA всё так же говорит: "oleg ты дурак! не должно быть public!"...🥴
Евгений Хайретдинов Уровень 18 Нефтекамск Россия
10 мая 2021
Как же я мучился с Wrapper (Decorator)!!! Авторы, поставьте здесь упоминание - "2. После запуска, каждый класс должен вывести в консоль "'Имя класса' body", что апострофы стоят только для понимания, а для вывода они не нужны! Я подумал что нужно переделывать вывод, создал свой PrintStream, переопределил в нем print, в котором сделал добавление апострофов через StringBuilder, загнал его в System.setOut(PrintStream) и в итоге получил "то, что надо" )))) как я думал вначале.
Viktoria D. Уровень 30 Минск Беларусь
1 апреля 2021
На последней задаче зависла чуток. Как-то не сразу вдубляешь в условие.
🦔 Виктор Уровень 20 Москва Россия Expert
27 января 2021
Фуф, после душных байтов декораторы для меня как глоток свежего воздуха. Вот это качели. При решении задач главное помнить выжимку из предыдущей лекции: Если мы хотим «обернуть» вызовы методов какого-то объекта своим кодом, то нам нужно: 1) Создать свой класс-обертку и унаследоваться от класса/интерфейса, для которого делаем обертку. 2) Передать оборачиваемый объект в конструктор нашего класса. 3) Переопределить все методы в нашем новом классе, и вызвать в них методы оборачиваемого объекта. 4) Внести свои изменения «по вкусу»: менять результаты вызовов, параметры или делать что-то еще. Более развёрнуто от Алексея: «Обёртка - это когда создается объект обертываемого типа внутри класса обертки, и все методы, которые перегружаются в обертке в конечном итоге делегируются методам объекта обертываемого класса! Алгоритм такой: 1) Создали класс, унаследовав в нем обертываемый класс, с конструктором принимающим на вход объект обертываемого класса(интерфейса) 2) Внутри класса-обертки создали объект(поле класса) обертываемого типа. 3) В конструкторе класса обертки скопировали входящий объект во внутреннее поле класса. 4) Переопределили методы наследуемого класса таким образом, чтобы при вызове метода класса обертки, аналогичного методу оборачиваемого класса, вызов делегировался соответствующему методу созданного внутри класса обертки объекта и передавались параметры методу объекта. Собственно всё. Вы можете дописать новые методы в класс обертку, вы можете изменить перегруженные методы оборачиваемого класса, но в конечном итоге, вызываться должны именно методы объекта оборачиваемого класса, если они есть». Всё получится!
Максим Дудин Уровень 25 Калининград
2 января 2021
туго заходит... вроде и просто всё, но...
Deniska Уровень 20 Москва Россия
6 декабря 2020
Чет как-то хреново понял что я сделал, но сделал.
Vladyslav Martynenko Уровень 22 Киев Украина
20 ноября 2020
Рубрика "Возможно будет полезно". Объяснение и пример работы с декораторами - Шаблоны Java. Декоратор (Decorator / Wrapper)
Антон Уровень 35 Новосибирск Россия
25 октября 2020
Easy
diledsys Уровень 22 Хайфа Израиль
12 октября 2020
да, таки задачки заставляют шевелить мозги и вводит в какое изменённое состояние🙄, будем считать что это такая метода
Андрей Уровень 20 Москва
7 октября 2020
AmigoOutputStream - задача из серии "угадай что хочет валидатор". Хинт: не объяляйте переменную с содержимым "JavaRush © All rights reserved" в классе , валидатор хочет видеть этот текст прямо в методе close().