Python >

Разработка программных модулей

2024-2025 учебный год

Практические занятия

Практика 18 
Использование поведенческих шаблонов 
1. Диалоговые окна в PyQt5. Изучите примеры и напишите с их помощью программы для создания оконных приложений посредством библиотеки PyQt5.
2. Виджеты в PyQt5. Пример разработки оконного приложения в фреймворке Qt на Python с применением PyQt5. Напишите программы по примерам.
3. Класс Surface и метод blit() в PyGame. Пример разработки оконного приложения в на Python с применением PyGame. Напишите программы по примерам.
4. Класс Rect в PyGame. Пример разработки оконного приложения в на Python с применением PyGame. Напишите программы по примерам.
5. Изучите примеры библиотеки Robomaster SDK по ссылкам:
https://robomaster-dev.readthedocs.io/en/latest/
https://github.com/dji-sdk/RoboMaster-SDK
https://gitee.com/xitinglin/RoboMaster-SDK
https://github.com/dji-sdk/RoboMaster-SDK/tree/master/examples
https://gitee.com/xitinglin/RoboMaster-SDK/tree/master/examples
6. Раскраска зебры. Создайте класс Zebra с методом which_stripe, который поочередно печатает фразы "Полоска белая", "Полоска черная" и так далее начиная с фразы "Полоска белая".
Подсказка. Для отслеживания полосы зебры создайте переменную-счетчик для вашего экземпляра класса.
# Ваш код
# ...
# не изменяйте код ниже, он нужен для проверки
z1 = Zebra()
z1.which_stripe()
z1.which_stripe()
z1.which_stripe()

Тесты

Входные данные:

Выходные данные:
Полоска белая
Полоска черная
Полоска белая
7. Класс с Массивом 1. Создайте класс Array, который содержит атрибут values и 3 метода:
1. Инициализатор __init__, который принимает произвольное число аргументов, фильтрует их с помощью второго метода и сохраняет в values.
2. get_integers, который вызывается из инициализатора, фильтрует все его аргументы оставляя только числовые, а затем сортирует их по возрастанию и возвращает в инициализатор в виде списка.
3. Переопределенный метод __str__, который возвращает строку: "Массив(<Значение1>, <Значение2>, ...)", если массив не пустой, или строку "Пустой массив", если массив пуст.
# Ваш код
# ...
# не изменяйте код ниже, он нужен для проверки
v1 = Array(1,"Саша",2,"Вася",3)
print(v1) # печатает "Массив(1, 2, 3)"
v2 = Array()
print(v2) # печатает "Пустой массив"

Тесты
Входные данные:
Выходные данные:
Массив(1, 2, 3)
Пустой массив
8. OpenCV. Treshold. Moments. Написать программу для демонстрации применения HSV-фильтра для отслеживания координат объекта в кадре видеопотока с помощью библиотеки компьютерного зрения OpenCV по примеру 13.3 из лекции.
9. OpenCV. Grid Tracking. Написать программу для осуществления трекинга объекта посредством HSV-фильтра в кадре видеопотока с помощью библиотеки компьютерного зрения OpenCV по примеру 14.1 из лекции.

Дополнительные задания

1. Выполните упражнения из учебника по ссылке:
https://younglinux.info/tkinter/canvas
2. Выполните упражнения из учебника по ссылке:
https://younglinux.info/tkinter/canvasmeth
3. Выполните задачи из главы 12 «Создание приложений с графическим интерфейсом пользователя» c. 294 - 300 по учебнику
Сузи, Р. А. Язык программирования Python : учебное пособие / Р. А. Сузи. — 3-е изд. — Москва : Интернет-Университет Информационных Технологий (ИНТУИТ), Ай Пи Ар Медиа, 2020. — 350 c.
4. Выполните задачи из главы 13 «Графика. Модуль Turtle» c. 190 - 208 по учебнику
Подсадников, А В Основы программирования на языке Python 3 : учебное пособие / А. В. Подсадников, К. В. Розов, А. В. Русецкий ; Новосибирский государственный педагогический университет. - Новосибирск : НГПУ, 2019. - 221 с.
5. Выполнить примеры и решить задачи
https://gvard.github.io/py/turtle
6. Выполнить примеры и решить задачи
https://gvard.github.io/py
Домашнее задание
Использование поведенческих шаблонов. 
Цепочка обязанностей. 
Итератор.
Посредник. 
Хранитель. 
Наблюдатель. 
Состояние. 
Стратегия. 
Chain of responsibility. 
Iterator. 
Mediator. 
Memento. 
Observer. 
State. 
Strategy.