Практическая 1

Выполнен
Заказ
6361278
Раздел
Программирование
Предмет
Основы программирования
Антиплагиат
Не указан
Срок сдачи
15 Ноя в 23:00
Цена
1 000 ₽
Блокировка
10 дней
Размещен
15 Ноя в 07:01
Просмотров
42
Описание работы

Реализуйте простой плейер с графическим интерфейсом. Предусмотрите следующий функционал:

  1. создание плейлиста;
  2. удаление плейлиста;
  3. добавление музыкальной композиции в плейлист;
  4. удаление музыкальной композиции из плейлиста;
  5. перемещение музыкальной композиции на другую позицию плейлисте (изменение порядка);
  6. проигрывание музыкальной композиции;
  7. запуск предыдущей музыкальной композиции;
  8. запуск последующей музыкальной композиции;
  9. после завершения проигрывания последней композиции в плейлисте он должен начинаться сначала.

Подсказка:

Используйте кольцевой двусвязный список

Требования к реализации


Реализуйте класс Composition, представляющий музыкальную композицию, и класс PlayList, реализующий логику работы плейлиста. Класс PlayList унаследуйте от базового класса LinkedList, реализующего операции над связным списком:

  • append_left(self, item) - добавление элемента в начало списка;
  • append_right(self, item) - добавление элемента в конец списка;
  • append(self, item) - алиас для append_right;
  • remove(self, item) - удаление элемента, при его отсутствии в списке должно возбуждать исключение ValueError;
  • insert(self, previous, item) - вставка элемента item после элемента previous.
  • last(self) - получение последнего элемента списка

Добавьте поддержку "магических" методов в классе LinkedList:

  • __len__ - длина списка;
  • __iter__ - получение итератора;
  • __next__ - получение следующего элемента;
  • __getitem__ - получение элемента по индексу;
  • __contains__ - поддержка оператора in;
  • __reversed__ - поддержка функции reversed.

Элементы связного списка реализуйте в виде класса LinkedListItem, который будет содержать ссылки на следующий и предыдущий элементы, а также данные в виде экземпляра Composition.

Реализуйте доступ к следующему и предыдущему элементу в LinkedListItem через свойства (getter и setter):

  • next_item
  • previous_item

Через эти же свойства можно реализовать добавление элементов в список.

Предусмотрите следующие методы в классе PlayList:

  • play_all(self, item) - начать проигрывать все треки, начиная с item;
  • next_track(self) - перейти к следующему треку;
  • previous_track(self) - перейти к предыдущему треку;
  • current(self) - получить текущи трек, реализовать в виде свойства.

Реализовать пользовательский интерфейс можно на любой библиотеке (веб или десктоп), например PyQt или Flask. Использование QMediaPlaylist фреймворка PyQt для реализации плейлиста не допускается.

В файлах linked_list.py размещены упрощенные шаблоны классов и функций. В файле test_linked_list.py вы найдете тесты для проверки решения. Тесты можно запустить с помощью модуля unittest или pylint.

Подсказка:

Проигрывание музыкальных композиций можно реализовать с помощью pygame


Оценка выставляется в соответствии со следующими требованиями:

  1. Общие требования:
  • код работы проходит проверку утилитой pylint с конфигурационным файлом .pylintrc.
  • код работы успешно проходит тесты, если таковые имеются.
  • наличие документации к модулям, функциям, классам и методам.
  • наличие аннотации типов.
  1. На оценку 3 балла:
  • программа поддерживает только один плейлист;
  • реализовать пункты 3, 4, 6, 7 и 8.
  1. На оценку 4 балла:
  • дополнительно реализовать пункты 5 и 9.
  1. На оценку 5 балла:
  • реализовать все методы, указанные в описании к работе.
Нужна такая же работа?
  • Разместите заказ
  • Выберите исполнителя
  • Получите результат
Гарантия на работу 1 год
Средний балл 4.96
Стоимость Назначаете сами
Эксперт Выбираете сами
Уникальность работы от 70%
Время выполнения заказа:
7 часов 26 минут
Выполнен в срок
Отзыв о выполненном заказе
Нужна аналогичная работа?
Оформи быстрый заказ и узнай стоимость
Гарантированные бесплатные доработки
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Темы журнала
Показать ещё
Прямой эфир