учреждение высшего образования
«Бурятская государственная сельскохозяйственная академия имени В.Р. Филиппова»
Экономический факультет
Информатика и информационные технологии в экономике
Направленность (профиль) Прикладная информатика в экономике АПК
в учебном плане
является дисциплиной обязательной для изучения
Семестр 4
Зав. кафедрой Садуев Н.Б.
п/п
на заседании кафедры
Заведующий кафедрой
Садуев Н.Б.
(представитель работодателя)
Задачи: Изучить базовые концепции ООП: классы, объекты, наследование, полиморфизм, инкапсуляция.
Научить проектировать и адаптировать ПО с использованием паттернов проектирования и современных фреймворков.
Развить умения работы с базами данных, структурами данных и тестированием кода.
ПКС-2: способность разрабатывать и адаптировать прикладное программное обеспечение;
Знает языки программирования и приемы работы с базами данных
Умеет кодировать на языках программирования
Владеет навыками разработки прототипа ИС в соответствии с требованиями
:
:
форма текущего контроля успеваемости)
работ
Microsoft OfficeProPlus 2016 RUS OLP NL Acdmc. Договор № ПП-61/2015 г. О поставке программных продуктов от 9 декабря 2015 года
Microsoft Windows Vista Business Russian Upgrade Academic OPEN No Level Государственный контракт № 25 от 1 апреля 2008 года
http://www.garant.ru/
- использование специализированных (адаптированных) рабочих программ дисциплин (модулей) и методов обучения и воспитания, включая наличие альтернативной версии официального сайта организации в сети «Интернет» для слабовидящих;
- использование специальных учебников, учебных пособий и других учебно-методических материалов, включая альтернативные форматы печатных материалов (крупный шрифт или аудиофайлы);
- использование специальных технических средств обучения (мультимедийное оборудование, оргтехника и иные средства) коллективного и индивидуального пользования, включая установку
мониторов с возможностью трансляции субтитров, обеспечение надлежащими звуковыми
воспроизведениями информации;
- предоставление услуг ассистента (при необходимости), оказывающего обучающимся необходимую техническую помощь или услуги сурдопереводчиков / тифлосурдопереводчиков;
- проведение групповых и индивидуальных коррекционных занятий для разъяснения отдельных вопросов изучаемой дисциплины (модуля);
- проведение процедуры оценивания результатов обучения возможно с учетом особенностей нозологий (устно, письменно на бумаге, письменно на компьютере, в форме тестирования и т.п.) при использовании доступной формы предоставления заданий оценочных средств и ответов на задания (в печатной форме увеличенным шрифтом, в форме аудиозаписи, в форме электронного документа, задания зачитываются ассистентом, задания предоставляются с использованием сурдоперевода) с
использованием дополнительного времени для подготовки ответа;
- обеспечение беспрепятственного доступа обучающимся в учебные помещения, туалетные и другие помещения организации, а также пребывания в указанных помещениях (наличие пандусов, поручней, расширенных дверных проемов и других приспособлений);
- обеспечение сочетания онлайн и офлайн технологий, а также индивидуальных и коллективных форм работы в учебном процессе, осуществляемом с использованием дистанционных образовательных технологий;
- и другие условия, без которых невозможно или затруднено освоение ОПОП ВО.
В целях реализации ОПОП ВО в академии оборудована безбарьерная среда, учитывающая потребности лиц с нарушением зрения, с нарушениями слуха, с нарушениями опорно-двигательного
аппарата. Территория соответствует условиям беспрепятственного, безопасного и удобного передвижения инвалидов и лиц с ограниченными возможностями здоровья. Вход в учебный корпус
оборудован пандусами, стекла входных дверей обозначены специальными знаками для слабовидящих, используется система Брайля. Сотрудники охраны знают порядок действий при прибытии в академию лица с ограниченными возможностями. В академии создана толерантная социокультурная среда, осуществляется необходимое сопровождение образовательного процесса,
при необходимости предоставляется волонтерская помощь обучающимся инвалидам и лицам с ограниченными возможностями здоровья.
2. Оценочные материалы является составной частью нормативно-методического обеспечения системы оценки качества освоения обучающимися указанной дисциплины (модуля).
3. При помощи оценочных материалов осуществляется контроль и управление процессом формирования обучающимися компетенций, из числа предусмотренных ФГОС ВО в качестве результатов освоения дисциплины (модуля).
4. Оценочные материалы по дисциплине (модулю) включают в себя:
- оценочные средства, применяемые при промежуточной аттестации по итогам изучения дисциплины (модуля).
- оценочные средства, применяемые в рамках индивидуализации выполнения, контроля фиксированных видов ВАРО;
- оценочные средства, применяемые для текущего контроля;
5. Разработчиками оценочных материалов по дисциплине (модулю) являются преподаватели кафедры, обеспечивающей изучение обучающимися дисциплины (модуля), в Академии. Содержательной основой для разработки оценочных материалов является Рабочая программа дисциплины (модуля).
2. Комплект контрольных вопросов для проведения устных опросов,
3. Комплект заданий для лабораторных работ,
4. Комплект заданий для самостоятельной работы обучающихся,
5. Комплект тестовых заданий
6. Кейс-задания
Объектно-ориентированное программирование
2) охватывает все разделы дисциплины
1. Основные парадигмы программирования: процедурное, структурное, объектно-ориентированное программирование.
2. Методология разработки программного обеспечения.
3. Основные понятия объектно-ориентированного программирования: класс, объект, метод, переменные экземпляра, интерфейс, наследование, полиморфизм, инкапсуляция.
4. Три базовых принципа ООП: инкапсуляция, наследование, полиморфизм.
5. Области видимости переменных, статические переменные.
6. Объектно-ориентированный анализ и проектирование: цели, основные понятия и терминология.
7. Основы UML (унифицированного языка моделирования) для описания объектно-ориентированных систем.
8. Жизненный цикл объекта, идентичность, состояние и поведение объектов.
9. Отношения между объектами: ассоциация, агрегация, композиция.
10. Структура классов, абстрактные классы и интерфейсы.
11. Модификаторы доступа к классам и членам класса.
12. Полиморфизм: статический и динамический, виртуальные методы.
13. Исключения и обработка исключительных ситуаций в ООП.
14. Основы программирования графического пользовательского интерфейса с использованием объектно-ориентированного подхода.
15. Особенности реализации ООП в языках программирования C++, Java, Python.
16. Средства абстракции и инкапсуляции в ООП.
17. Принципы модульности и раздельной компиляции.
18. Использование шаблонов (generics) и параметризованных классов.
19. Основы компонентно-ориентированного программирования.
20. Практические задачи: разработка программ с использованием ООП, кодирование на объектно-ориентированных языках.
21. Расскажите об объектно-ориентированном программировании и его основных принципах.
22. Дайте характеристику метода пошаговой детализации и декомпозиции.
23. Что такое наследование и как оно реализуется в ООП?
24. Объясните понятия полиморфизма и инкапсуляции.
25. Какие существуют уровни доступа к членам класса?
26. Что такое абстрактный класс и интерфейс?
27. Как реализуется обработка исключений в ООП?
28. Опишите структуру программы на языке C++ или Java с точки зрения ООП.
29. Что такое жизненный цикл объекта и как он управляется?
30. Объясните понятие композиции и агрегации.
31. Какие средства предоставляет язык Java для поддержки параллелизма?
32. Как реализуется объектно-ориентированный подход при создании пользовательского интерфейса?
33. Опишите этапы разработки программных систем с использованием ООП.
34. Парадигмы программирования
35. Структурный подход:
37. Класс и объект
38. Атрибуты и методы
39. Конструктор и деструктор
40. Инкапсуляция
41. Наследование
42. Полиморфизм
43. Абстракция
44. Композиция и агрегация
45. Работа с коллекциями объектов
46. Перегрузка операторов
47. Итераторы и генераторы
48. Обработка исключений
49. Модули и пакеты
50. Работа с файлами
51. Основы GUI на Python
52. ООП и базы данных
53. Тестирование ООП-программ
54. Документирование кода
55. Принципы SOLID в Python
Комплект контрольных вопросов для устных опросов
1. Методологии программирования
1. Назовите основные парадигмы программирования. В чем их различия?
2. В чем суть структурного подхода к программированию? Приведите примеры.
3. Что такое модульное программирование? Как реализуются модули в Python?
2. Основы объектно-ориентированного программирования (ООП)
4. Дайте определение понятиям «класс» и «объект». Как они реализуются в Python?
5. Перечислите и кратко охарактеризуйте основные принципы ООП.
6. Что такое инкапсуляция? Как реализуется сокрытие данных в Python?
7. В чем заключается наследование? Приведите пример наследования в Python.
8. Объясните понятие полиморфизма. Как реализовать полиморфизм в Python?
9. Что такое абстракция? Как создать абстрактный класс в Python?
10. Чем отличаются атрибуты класса и атрибуты экземпляра?
3. Практические аспекты ООП
11. Как реализуются методы класса, статические методы и методы экземпляра?
12. Для чего используется функция super()? Приведите пример её использования.
13. Что такое множественное наследование? Как оно реализуется в Python?
14. Как в Python реализовать перегрузку операторов? Приведите пример.
15. Объясните разницу между public, protected и private атрибутами в Python.
16. Что такое композиция и агрегация объектов? Приведите примеры.
4. Работа с исключениями и структурами данных
17. Как осуществляется обработка исключений в Python? Приведите пример.
18. Как создать собственный класс исключения?
19. Как работать с коллекциями объектов (списки, словари, множества)?
5. Программирование графического пользовательского интерфейса (GUI)
20. Какие библиотеки используются для создания GUI на Python?
21. Приведите пример создания простого окна с помощью Tkinter.
22. Как реализовать обработку событий в графическом приложении?
6. Проектирование и тестирование программ
23. Как использовать UML-диаграммы для проектирования ООП-систем?
24. В чем суть паттернов проектирования? Приведите пример паттерна и его реализации в Python.
25. Как организовать тестирование программ на Python? Какие модули для этого используются?
7. Прикладные аспекты
26. Как реализовать взаимодействие ООП-программы с базой данных?
27. В чем преимущества применения ООП для решения прикладных задач в экономике?
28. Как реализовать сериализацию объектов в Python?
8. Современные тенденции и стандарты
29. Какие стандарты оформления и документирования кода применяются в Python?
30. В чем суть принципов SOLID и как их применять на практике?
Комплект заданий для лабораторных работ
Лабораторная работа 1. Основы структурного и модульного программирования
• Задание 1: Реализуйте простую программу на Python для вычисления суммы и произведения элементов списка, используя функции.
• Задание 2: Сгруппируйте несколько функций в отдельный модуль, импортируйте его в основной файл и используйте реализованные функции.
Лабораторная работа 2. Классы и объекты
• Задание 2: Создайте несколько объектов класса, выведите их данные, измените зарплату одному из сотрудников.
Лабораторная работа 3. Инкапсуляция и уровни доступа
• Задание 1: Реализуйте класс BankAccount с приватными атрибутами (номер счета, баланс) и методами для внесения и снятия средств.
• Задание 2: Продемонстрируйте попытку прямого доступа к приватным атрибутам и объясните результат.
Лабораторная работа 4. Наследование
• Задание 1: Создайте базовый класс Person (имя, возраст), от него - класс Student (добавьте атрибут «группа») и класс Teacher (добавьте атрибут «предмет»).
• Задание 2: Реализуйте методы вывода информации для каждого класса, создайте объекты-наследники.
Лабораторная работа 5. Полиморфизм и перегрузка методов
• Задание 1: Реализуйте классы Rectangle и Circle с методом area(), возвращающим площадь. Продемонстрируйте полиморфизм при вызове метода для разных объектов.
• Задание 2: Перегрузите оператор сложения для класса Vector (методы __add__ и __str__).
Лабораторная работа 6. Абстракция и абстрактные классы
• Задание 1: Используйте модуль abc для создания абстрактного класса Shape с абстрактным методом area(). Реализуйте наследников: Triangle, Square.
• Задание 2: Попробуйте создать объект абстрактного класса и объясните результат.
Лабораторная работа 7. Исключения и обработка ошибок
• Задание 1: Реализуйте функцию деления двух чисел с обработкой деления на ноль.
• Задание 2: Создайте собственный класс исключения для обработки некорректных данных при создании объекта.
Лабораторная работа 8. Работа с коллекциями объектов
• Задание 1: Создайте список объектов класса Product (название, цена, количество). Реализуйте функции для подсчета общей стоимости товаров и поиска самого дорогого товара.
• Задание 2: Используйте словарь для хранения и поиска объектов по ключу (например, по коду товара).
Лабораторная работа 9. Итераторы и генераторы
• Задание 1: Реализуйте собственный класс-итератор для перебора элементов коллекции.
• Задание 2: Напишите генератор для получения последовательности Фибоначчи.
Лабораторная работа 10. Программирование графического интерфейса (GUI)
• Задание 1: Создайте простое окно с кнопкой и полем ввода с помощью библиотеки Tkinter.
• Задание 2: Реализуйте обработку событий (например, нажатие кнопки выводит текст из поля ввода).
Лабораторная работа 11. Модули, пакеты и структура проекта
• Задание 1: Организуйте проект из нескольких модулей и пакета. Импортируйте классы и функции из разных файлов.
• Задание 2: Используйте относительный импорт и проверьте структуру проекта.
Лабораторная работа 12. Тестирование и документирование
• Задание 1: Напишите простые тесты для своих классов с помощью модуля unittest.
• Задание 2: Оформите документацию к своим классам и методам с помощью docstring.
Рекомендации по оформлению лабораторных работ
• Каждая работа должна содержать: цель, задание, исходный код, результаты выполнения, выводы.
• По каждой лабораторной работе рекомендуется подготовить отчет с примерами кода и комментариями.
• В качестве дополнительных заданий можно предложить студентам модифицировать задания под прикладные задачи экономики и АПК.
Пример оформления лабораторной работы по ООП на Python с разделами: цель, задание, исходный код, результаты выполнения, выводы. Такой шаблон можно использовать для всех лабораторных работ, меняя содержание по теме.
Лабораторная работа №4. Наследование в Python
1. Цель работы
Освоить основные принципы наследования в объектно-ориентированном программировании на языке Python, научиться создавать базовые и производные классы, использовать переопределение методов.
2. Задание
1. Реализовать базовый класс Person с атрибутами: имя, возраст.
2. Создать производный класс Student, добавив атрибут «группа».
3. Создать производный класс Teacher, добавив атрибут «предмет».
4. Для каждого класса реализовать метод вывода информации.
5. Создать объекты каждого класса, вывести их данные.
3. Исходный код
python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def show_info(self):
print(f"Имя: {self.name}, Возраст: {self.age}")
class Student(Person):
def __init__(self, name, age, group):
super().__init__(name, age)
self.group = group
def show_info(self):
print(f"Студент: {self.name}, Возраст: {self.age}, Группа: {self.group}")
class Teacher(Person):
def __init__(self, name, age, subject):
super().__init__(name, age)
self.subject = subject
def show_info(self):
print(f"Преподаватель: {self.name}, Возраст: {self.age}, Предмет: {self.subject}")
# Создание объектов
person = Person("Иван", 40)
student = Student("Анна", 19, "ПИ-21")
teacher = Teacher("Петр", 55, "Информатика")
# Вывод информации
person.show_info()
student.show_info()
teacher.show_info()
4. Результаты выполнения
Результат работы программы:
text
Имя: Иван, Возраст: 40
Студент: Анна, Возраст: 19, Группа: ПИ-21
Преподаватель: Петр, Возраст: 55, Предмет: Информатика
5. Выводы
В ходе лабораторной работы были освоены базовые принципы наследования в Python. Реализованы базовый и производные классы с переопределением методов. Полученные навыки позволяют строить иерархии классов для решения прикладных задач, что повышает читаемость и расширяемость кода.
Шаблон для других лабораторных работ
1. Цель работы:
(Кратко указать, чему научиться и что освоить)
2. Задание:
(Пошаговое описание задания)
3. Исходный код:
(Привести код программы)
4. Результаты выполнения:
(Вставить скриншот или текстовый вывод программы)
5. Выводы:
(Кратко описать, что получилось, какие знания и навыки были приобретены)
Комплект заданий для самостоятельной работы обучающихся
1. Методология программирования и структурный подход
Задание 1:
Подготовить краткое эссе (1–2 страницы) на тему «Преимущества и недостатки структурного и объектно-ориентированного подходов к программированию».
Результат: Текстовый файл с эссе.
Задание 2:
Реализовать на Python программу для вычисления факториала числа с использованием рекурсии и итерации. Сравнить оба подхода.
Результат: Исходный код и краткий анализ отличий.
2. Модульное программирование
Задание 3:
Разбить собственную программу (например, калькулятор или обработчик данных) на несколько модулей. Описать структуру модулей и принципы их взаимодействия.
Результат: Исходный код, схема структуры, пояснительная записка.
3. Основы объектно-ориентированного программирования
Задание 4:
Создать класс «Товар» (Product) с атрибутами: название, цена, количество. Реализовать методы для изменения цены и количества, а также метод для вывода информации о товаре.
Результат: Исходный код, примеры работы программы.
Составить сравнительную таблицу реализации принципов ООП (инкапсуляция, наследование, полиморфизм) в Python и любом другом языке (например, Java или C++).
Результат: Таблица (doc/pdf).
4. Наследование и полиморфизм
Задание 6:
Реализовать иерархию классов:
• Базовый класс «Персона» (Person)
• Производные классы: «Студент» (Student), «Преподаватель» (Teacher)
Добавить специфические атрибуты и методы для каждого класса.
Результат: Исходный код, примеры создания объектов и вызова методов.
Задание 7:
Реализовать пример полиморфизма: создать несколько классов с одинаковым методом, вызываемым через общий интерфейс.
Результат: Исходный код, пояснения.
5. Исключения и обработка ошибок
Задание 8:
Написать программу, в которой реализована обработка стандартных и пользовательских исключений (например, при вводе некорректных данных).
Результат: Исходный код, пример работы программы.
6. Работа с коллекциями объектов
Задание 9:
Создать список объектов класса «Товар» (Product) и реализовать функции:
• Поиск самого дорогого товара
• Подсчет общей стоимости всех товаров
Результат: Исходный код, демонстрация работы функций.
7. Программирование графического пользовательского интерфейса (GUI)
Задание 10:
Разработать простое графическое приложение на Python (например, калькулятор или форму ввода данных) с использованием библиотеки Tkinter.
Результат: Исходный код, скриншот работы программы.
8. Тестирование и документирование
Задание 11:
Написать юнит-тесты для одного из своих классов с использованием модуля unittest.
Результат: Исходный код тестов, результаты их выполнения.
Задание 12:
Оформить документацию к одному из своих классов с помощью docstring.
Результат: Пример кода с docstring, сгенерированная документация (по желанию).
9. Прикладные и творческие задания
Задание 13:
Разработать мини-проект (например, система учета заказов, библиотека, склад) с использованием ООП. Описать структуру классов, реализовать основные методы.
Результат: Исходный код, схема классов, краткое описание проекта.
Задание 14:
Подготовить презентацию (5–7 слайдов) на тему «Современные тенденции развития объектно-ориентированного программирования».
Результат: Презентация (ppt/pdf).
Комплект тестовых заданий
Блок 1. Знать
1. Какой из перечисленных языков программирования является объектно-ориентированным?
А) Pascal
Б) Python
В) Assembler
Г) Basic
Ответ: Б
2. Основной единицей ООП является:
А) Функция
Б) Массив
В) Класс
Г) Модуль
Ответ: В
3. Какой принцип ООП отвечает за сокрытие деталей реализации?
А) Наследование
Б) Полиморфизм
В) Инкапсуляция
Г) Абстракция
Ответ: В
А) del
Б) init
В) new
Г) str
Ответ: Б
5. Какой символ в Python используется для обозначения приватного атрибута?
А) $
Б) _
В) #
Г) %
Ответ: Б
6. Какой принцип ООП позволяет одному интерфейсу использоваться для разных типов объектов?
А) Абстракция
Б) Наследование
В) Полиморфизм
Г) Инкапсуляция
Ответ: В
7. Какой модуль Python используется для создания абстрактных классов?
А) abc
Б) math
В) random
Г) sys
Ответ: А
8. Какой метод вызывается при удалении объекта?
А) init
Б) del
В) str
Г) call
Ответ: Б
9. Какой тип наследования поддерживается в Python?
А) Только одиночное
Б) Только множественное
В) Одиночное и множественное
Г) Наследование не поддерживается
Ответ: В
10. Какой из перечисленных методов является статическим?
А) @staticmethod
Б) @classmethod
В) @property
Г) @private
Ответ: А
11. Какой метод используется для строкового представления объекта?
А) str
Б) init
В) call
Г) del
Ответ: А
12. Какой принцип ООП позволяет создавать новые классы на основе существующих?
А) Инкапсуляция
Б) Наследование
В) Полиморфизм
Г) Абстракция
Ответ: Б
13. Какой из перечисленных типов данных является изменяемым?
А) Кортеж
Б) Строка
В) Список
Г) Число
Ответ: В
14. Какой метод используется для перегрузки оператора сложения в Python?
А) add
Б) sum
В) plus
Г) append
Ответ: А
15. Какой декоратор используется для объявления метода класса?
А) @staticmethod
В) @property
Г) @private
Ответ: Б
16. Какой модификатор доступа отсутствует в Python?
А) public
Б) private
В) protected
Г) friend
Ответ: Г
17. Какой метод используется для итерации по объекту?
А) iter
Б) next
В) call
Г) str
Ответ: А
18. Что такое атрибут экземпляра класса?
А) Переменная, общая для всех объектов
Б) Переменная, уникальная для каждого объекта
В) Локальная переменная
Г) Глобальная переменная
Ответ: Б
19. Какой метод вызывается при приведении объекта к строке функцией str()?
А) str
Б) repr
В) init
Г) call
Ответ: А
20. Какой тип данных используется для хранения уникальных элементов?
А) Список
Б) Множество
В) Кортеж
Г) Словарь
Ответ: Б
Блок 2. Знать, Уметь
21. Как создать объект класса в Python?
А) obj = ClassName()
Б) obj = ClassName
В) obj = new ClassName()
Г) obj = ClassName.create()
Ответ: А
22. Как обратиться к атрибуту объекта?
А) object[attribute]
Б) object.attribute
В) object->attribute
Г) attribute.object
Ответ: Б
23. Как объявить приватный атрибут в классе Python?
А) attribute
Б) attribute
В) attribute
Г) attribute
Ответ: Б
24. Как вызвать родительский метод в дочернем классе?
А) parent.method()
Б) super().method()
В) self.method()
Г) base.method()
Ответ: Б
25. Как добавить новый элемент в список?
А) list.add()
Б) list.append()
В) list.insert()
Г) list.push()
Ответ: Б
26. Как обработать исключение в Python?
А) try-catch
Б) try-except
Г) catch-except
Ответ: Б
27. Как создать собственное исключение?
А) class MyError(Exception): pass
Б) def MyError(Exception): pass
В) exception MyError: pass
Г) class MyError: pass
Ответ: А
28. Как импортировать модуль mymodule?
А) include mymodule
Б) import mymodule
В) using mymodule
Г) require mymodule
Ответ: Б
29. Как реализовать множественное наследование?
А) class A(B, C):
Б) class A < B, C:
В) class A : B, C
Г) class A inherits B, C
Ответ: А
30. Как создать свой итератор?
А) Реализовать методы iter и next
Б) Реализовать метод call
В) Реализовать метод str
Г) Реализовать метод add
Ответ: А
31. Как вызвать метод экземпляра внутри класса?
А) self.method()
Б) this.method()
В) method()
Г) class.method()
Ответ: А
32. Какой метод используется для удаления элемента из списка по значению?
А) remove()
Б) pop()
В) del()
Г) delete()
Ответ: А
33. Какой метод используется для получения длины списка?
А) size()
Б) len()
В) length()
Г) count()
Ответ: Б
34. Какой тип данных используется для хранения пар "ключ-значение"?
А) Список
Б) Множество
В) Словарь
Г) Кортеж
Ответ: В
35. Какой оператор используется для проверки принадлежности элемента к коллекции?
А) in
Б) is
В) has
Г) with
Ответ: А
36. Какой метод используется для чтения строки из файла?
А) read()
Б) readline()
В) readlines()
Г) Все перечисленные
Ответ: Г
37. Какой метод используется для записи строки в файл?
А) write()
Б) print()
В) writeline()
Г) insert()
38. Какой метод используется для закрытия файла?
А) close()
Б) exit()
В) end()
Г) finish()
Ответ: А
39. Как создать генератор в Python?
А) Использовать ключевое слово yield
Б) Использовать ключевое слово return
В) Использовать ключевое слово generate
Г) Использовать ключевое слово create
Ответ: А
40. Какой модуль используется для написания юнит-тестов?
А) unittest
Б) test
В) testing
Г) pytest
Ответ: А
Блок 3. Знать, Уметь, Владеть
41. Какой из вариантов корректно реализует паттерн "Одиночка" (Singleton) в Python?
А) Использовать статический атрибут класса
Б) Использовать приватный конструктор
В) Использовать модуль как синглтон
Г) Все перечисленные
Ответ: Г
42. Какой подход используется для организации больших проектов в Python?
А) Использование модулей и пакетов
Б) Использование только одного файла
В) Использование глобальных переменных
Г) Использование только функций
Ответ: А
43. Какой принцип SOLID требует, чтобы класс имел только одну причину для изменения?
А) Open/Closed Principle
Б) Single Responsibility Principle
В) Liskov Substitution Principle
Г) Dependency Inversion Principle
Ответ: Б
44. Какой способ используется для сериализации объекта в Python?
А) pickle
Б) json
В) marshal
Г) Все перечисленные
Ответ: Г
45. Какой модуль используется для работы с графическим интерфейсом в стандартной библиотеке?
А) tkinter
Б) gui
В) qt
Г) wxpython
Ответ: А
46. Какой подход обеспечивает повторное использование кода?
А) Наследование
Б) Инкапсуляция
В) Полиморфизм
Г) Все перечисленные
Ответ: Г
47. Какой метод используется для проверки типа объекта?
А) isinstance()
Б) type()
В) class()
Г) object()
Ответ: А
48. Какой способ позволяет реализовать интерфейс в Python?
А) Использование абстрактного класса
Б) Использование протоколов
В) Использование duck typing
Г) Все перечисленные
Ответ: Г
А) Docstring
Б) Комментарии
В) Внешняя документация
Г) Все перечисленные
Ответ: Г
50. Какой способ позволяет повысить безопасность кода?
А) Использование инкапсуляции
Б) Использование приватных атрибутов
В) Использование проверки типов
Г) Все перечисленные
Ответ: Г
Кейс-задания
Кейс-задание 1. Автоматизация учета товаров на складе
Ситуация:
Ваша компания занимается оптовой торговлей. Необходимо автоматизировать учет товаров на складе. Требуется реализовать систему, позволяющую:
• хранить информацию о товарах (название, категория, цена, количество),
• добавлять новые товары,
• изменять количество и цену товара,
• формировать отчет о наличии товаров и общей стоимости запасов.
Задание:
1. Разработайте структуру классов для решения задачи (например, Product, Warehouse).
2. Реализуйте методы для добавления, изменения и отображения информации о товарах.
3. Протестируйте работу программы на примере 3-5 товаров.
4. Сформулируйте выводы о преимуществах применения ООП для подобных задач.
Кейс-задание 2. Система управления заказами в интернет-магазине
Ситуация:
Интернет-магазин принимает заказы на различные товары. Каждый заказ содержит сведения о клиенте, списке товаров, общей стоимости и статусе заказа (новый, в обработке, выполнен).
Задание:
1. Определите классы для моделирования предметной области (Order, Customer, Product).
2. Реализуйте методы для добавления товаров в заказ, изменения статуса заказа, расчета общей стоимости.
3. Предусмотрите обработку ошибок (например, попытка добавить несуществующий товар).
4. Протестируйте систему на примере 2-3 заказов.
Кейс-задание 3. Учёт сотрудников и расчет зарплаты
Ситуация:
В компании работают сотрудники разных должностей (менеджер, бухгалтер, программист). Для каждого сотрудника необходимо хранить ФИО, должность, оклад, а также рассчитывать зарплату с учетом премии или надбавки.
Задание:
1. Разработайте иерархию классов для сотрудников с учетом наследования.
2. Реализуйте методы для расчета зарплаты с учетом индивидуальных надбавок.
3. Реализуйте вывод общей ведомости по зарплате.
4. Протестируйте на примере 3-4 сотрудников разных должностей.
Кейс-задание 4. Программирование графического интерфейса (GUI) для учета клиентов
Ситуация:
Требуется создать простое приложение с графическим интерфейсом (на базе Tkinter), позволяющее:
• добавлять клиентов (ФИО, телефон, e-mail),
• отображать список клиентов,
• искать клиента по фамилии.
Задание:
1. Разработайте классы для хранения данных о клиентах.
2. Реализуйте основные функции интерфейса (добавление, просмотр, поиск).
3. Протестируйте приложение, добавив 3-5 клиентов.
Кейс-задание 5. Анализ и визуализация данных
Ситуация:
Вам даны данные о продажах товаров за месяц (название, количество, выручка). Необходимо проанализировать данные и построить график (использовать matplotlib).
Задание:
1. Создайте класс для хранения информации о продажах.
2. Реализуйте методы для анализа (суммарная выручка, топ-3 товара по продажам).
3. Постройте график выручки по каждому товару.
4. Сделайте выводы по результатам анализа.
Рекомендации по оформлению кейса
1. Анализ ситуации:
Кратко опишите, какие классы и методы необходимы для решения задачи.
2. Проектирование:
3. Реализация:
Приведите фрагменты кода (основные классы, методы).
4. Тестирование:
Покажите примеры работы программы (вывод, скриншоты).
5. Выводы:
Опишите, какие преимущества дало применение ООП, с какими трудностями столкнулись, как их решили.
1. Основные парадигмы программирования: процедурное, структурное, объектно-ориентированное программирование.
2. Методология разработки программного обеспечения.
3. Основные понятия объектно-ориентированного программирования: класс, объект, метод, переменные экземпляра, интерфейс, наследование, полиморфизм, инкапсуляция.
4. Три базовых принципа ООП: инкапсуляция, наследование, полиморфизм.
5. Области видимости переменных, статические переменные.
6. Объектно-ориентированный анализ и проектирование: цели, основные понятия и терминология.
7. Основы UML (унифицированного языка моделирования) для описания объектно-ориентированных систем.
8. Жизненный цикл объекта, идентичность, состояние и поведение объектов.
9. Отношения между объектами: ассоциация, агрегация, композиция.
10. Структура классов, абстрактные классы и интерфейсы.
11. Модификаторы доступа к классам и членам класса.
12. Полиморфизм: статический и динамический, виртуальные методы.
13. Исключения и обработка исключительных ситуаций в ООП.
14. Основы программирования графического пользовательского интерфейса с использованием объектно-ориентированного подхода.
15. Особенности реализации ООП в языках программирования C++, Java, Python.
16. Средства абстракции и инкапсуляции в ООП.
17. Принципы модульности и раздельной компиляции.
18. Использование шаблонов (generics) и параметризованных классов.
19. Основы компонентно-ориентированного программирования.
20. Практические задачи: разработка программ с использованием ООП, кодирование на объектно-ориентированных языках.
21. Расскажите об объектно-ориентированном программировании и его основных принципах.
22. Дайте характеристику метода пошаговой детализации и декомпозиции.
23. Что такое наследование и как оно реализуется в ООП?
24. Объясните понятия полиморфизма и инкапсуляции.
25. Какие существуют уровни доступа к членам класса?
26. Что такое абстрактный класс и интерфейс?
27. Как реализуется обработка исключений в ООП?
28. Опишите структуру программы на языке C++ или Java с точки зрения ООП.
29. Что такое жизненный цикл объекта и как он управляется?
30. Объясните понятие композиции и агрегации.
31. Какие средства предоставляет язык Java для поддержки параллелизма?
32. Как реализуется объектно-ориентированный подход при создании пользовательского интерфейса?
33. Опишите этапы разработки программных систем с использованием ООП.
34. Парадигмы программирования
35. Структурный подход:
36. Модульное программирование
37. Класс и объект
38. Атрибуты и методы
39. Конструктор и деструктор
40. Инкапсуляция
41. Наследование
42. Полиморфизм
43. Абстракция
44. Композиция и агрегация
45. Работа с коллекциями объектов
46. Перегрузка операторов
47. Итераторы и генераторы
48. Обработка исключений
49. Модули и пакеты
50. Работа с файлами
51. Основы GUI на Python
52. ООП и базы данных
53. Тестирование ООП-программ
55. Принципы SOLID в Python
Комплект контрольных вопросов для устных опросов
1. Методологии программирования
1. Назовите основные парадигмы программирования. В чем их различия?
2. В чем суть структурного подхода к программированию? Приведите примеры.
3. Что такое модульное программирование? Как реализуются модули в Python?
2. Основы объектно-ориентированного программирования (ООП)
4. Дайте определение понятиям «класс» и «объект». Как они реализуются в Python?
5. Перечислите и кратко охарактеризуйте основные принципы ООП.
6. Что такое инкапсуляция? Как реализуется сокрытие данных в Python?
7. В чем заключается наследование? Приведите пример наследования в Python.
8. Объясните понятие полиморфизма. Как реализовать полиморфизм в Python?
9. Что такое абстракция? Как создать абстрактный класс в Python?
10. Чем отличаются атрибуты класса и атрибуты экземпляра?
3. Практические аспекты ООП
11. Как реализуются методы класса, статические методы и методы экземпляра?
12. Для чего используется функция super()? Приведите пример её использования.
13. Что такое множественное наследование? Как оно реализуется в Python?
14. Как в Python реализовать перегрузку операторов? Приведите пример.
15. Объясните разницу между public, protected и private атрибутами в Python.
16. Что такое композиция и агрегация объектов? Приведите примеры.
4. Работа с исключениями и структурами данных
17. Как осуществляется обработка исключений в Python? Приведите пример.
18. Как создать собственный класс исключения?
19. Как работать с коллекциями объектов (списки, словари, множества)?
5. Программирование графического пользовательского интерфейса (GUI)
20. Какие библиотеки используются для создания GUI на Python?
21. Приведите пример создания простого окна с помощью Tkinter.
22. Как реализовать обработку событий в графическом приложении?
6. Проектирование и тестирование программ
23. Как использовать UML-диаграммы для проектирования ООП-систем?
24. В чем суть паттернов проектирования? Приведите пример паттерна и его реализации в Python.
25. Как организовать тестирование программ на Python? Какие модули для этого используются?
7. Прикладные аспекты
26. Как реализовать взаимодействие ООП-программы с базой данных?
27. В чем преимущества применения ООП для решения прикладных задач в экономике?
28. Как реализовать сериализацию объектов в Python?
8. Современные тенденции и стандарты
29. Какие стандарты оформления и документирования кода применяются в Python?
30. В чем суть принципов SOLID и как их применять на практике?
Комплект заданий для лабораторных работ
Лабораторная работа 1. Основы структурного и модульного программирования
• Задание 1: Реализуйте простую программу на Python для вычисления суммы и произведения элементов списка, используя функции.
• Задание 2: Сгруппируйте несколько функций в отдельный модуль, импортируйте его в основной файл и используйте реализованные функции.
Лабораторная работа 2. Классы и объекты
• Задание 1: Определите класс Employee с атрибутами (имя, должность, зарплата) и методами для вывода информации и изменения зарплаты.
• Задание 2: Создайте несколько объектов класса, выведите их данные, измените зарплату одному из сотрудников.
Лабораторная работа 3. Инкапсуляция и уровни доступа
• Задание 1: Реализуйте класс BankAccount с приватными атрибутами (номер счета, баланс) и методами для внесения и снятия средств.
• Задание 2: Продемонстрируйте попытку прямого доступа к приватным атрибутам и объясните результат.
Лабораторная работа 4. Наследование
• Задание 1: Создайте базовый класс Person (имя, возраст), от него - класс Student (добавьте атрибут «группа») и класс Teacher (добавьте атрибут «предмет»).
• Задание 2: Реализуйте методы вывода информации для каждого класса, создайте объекты-наследники.
Лабораторная работа 5. Полиморфизм и перегрузка методов
• Задание 1: Реализуйте классы Rectangle и Circle с методом area(), возвращающим площадь. Продемонстрируйте полиморфизм при вызове метода для разных объектов.
• Задание 2: Перегрузите оператор сложения для класса Vector (методы __add__ и __str__).
Лабораторная работа 6. Абстракция и абстрактные классы
• Задание 1: Используйте модуль abc для создания абстрактного класса Shape с абстрактным методом area().
• Задание 2: Попробуйте создать объект абстрактного класса и объясните результат.
Лабораторная работа 7. Исключения и обработка ошибок
• Задание 1: Реализуйте функцию деления двух чисел с обработкой деления на ноль.
• Задание 2: Создайте собственный класс исключения для обработки некорректных данных при создании объекта.
Лабораторная работа 8. Работа с коллекциями объектов
• Задание 1: Создайте список объектов класса Product (название, цена, количество). Реализуйте функции для подсчета общей стоимости товаров и поиска самого дорогого товара.
• Задание 2: Используйте словарь для хранения и поиска объектов по ключу (например, по коду товара).
Лабораторная работа 9. Итераторы и генераторы
• Задание 1: Реализуйте собственный класс-итератор для перебора элементов коллекции.
• Задание 2: Напишите генератор для получения последовательности Фибоначчи.
Лабораторная работа 10. Программирование графического интерфейса (GUI)
• Задание 1: Создайте простое окно с кнопкой и полем ввода с помощью библиотеки Tkinter.
• Задание 2: Реализуйте обработку событий (например, нажатие кнопки выводит текст из поля ввода).
Лабораторная работа 11. Модули, пакеты и структура проекта
• Задание 1: Организуйте проект из нескольких модулей и пакета. Импортируйте классы и функции из разных файлов.
• Задание 2: Используйте относительный импорт и проверьте структуру проекта.
Лабораторная работа 12. Тестирование и документирование
• Задание 1: Напишите простые тесты для своих классов с помощью модуля unittest.
• Задание 2: Оформите документацию к своим классам и методам с помощью docstring.
Рекомендации по оформлению лабораторных работ
• Каждая работа должна содержать: цель, задание, исходный код, результаты выполнения, выводы.
• По каждой лабораторной работе рекомендуется подготовить отчет с примерами кода и комментариями.
• В качестве дополнительных заданий можно предложить студентам модифицировать задания под прикладные задачи экономики и АПК.
Пример оформления лабораторной работы по ООП на Python с разделами: цель, задание, исходный код, результаты выполнения, выводы. Такой шаблон можно использовать для всех лабораторных работ, меняя содержание по теме.
Лабораторная работа №4. Наследование в Python
1. Цель работы
Освоить основные принципы наследования в объектно-ориентированном программировании на языке Python, научиться создавать базовые и производные классы, использовать переопределение методов.
2. Задание
1. Реализовать базовый класс Person с атрибутами: имя, возраст.
2. Создать производный класс Student, добавив атрибут «группа».
3. Создать производный класс Teacher, добавив атрибут «предмет».
4. Для каждого класса реализовать метод вывода информации.
5. Создать объекты каждого класса, вывести их данные.
3. Исходный код
python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def show_info(self):
print(f"Имя: {self.name}, Возраст: {self.age}")
class Student(Person):
def __init__(self, name, age, group):
super().__init__(name, age)
self.group = group
def show_info(self):
print(f"Студент: {self.name}, Возраст: {self.age}, Группа: {self.group}")
class Teacher(Person):
def __init__(self, name, age, subject):
super().__init__(name, age)
self.subject = subject
def show_info(self):
print(f"Преподаватель: {self.name}, Возраст: {self.age}, Предмет: {self.subject}")
# Создание объектов
student = Student("Анна", 19, "ПИ-21")
teacher = Teacher("Петр", 55, "Информатика")
# Вывод информации
person.show_info()
student.show_info()
teacher.show_info()
4. Результаты выполнения
Результат работы программы:
text
Имя: Иван, Возраст: 40
Студент: Анна, Возраст: 19, Группа: ПИ-21
Преподаватель: Петр, Возраст: 55, Предмет: Информатика
5. Выводы
В ходе лабораторной работы были освоены базовые принципы наследования в Python. Реализованы базовый и производные классы с переопределением методов. Полученные навыки позволяют строить иерархии классов для решения прикладных задач, что повышает читаемость и расширяемость кода.
Шаблон для других лабораторных работ
1. Цель работы:
(Кратко указать, чему научиться и что освоить)
2. Задание:
(Пошаговое описание задания)
3. Исходный код:
(Привести код программы)
4. Результаты выполнения:
(Вставить скриншот или текстовый вывод программы)
5. Выводы:
(Кратко описать, что получилось, какие знания и навыки были приобретены)
Комплект заданий для самостоятельной работы обучающихся
1. Методология программирования и структурный подход
Задание 1:
Подготовить краткое эссе (1–2 страницы) на тему «Преимущества и недостатки структурного и объектно-ориентированного подходов к программированию».
Результат: Текстовый файл с эссе.
Задание 2:
Реализовать на Python программу для вычисления факториала числа с использованием рекурсии и итерации. Сравнить оба подхода.
Результат: Исходный код и краткий анализ отличий.
2. Модульное программирование
Задание 3:
Разбить собственную программу (например, калькулятор или обработчик данных) на несколько модулей. Описать структуру модулей и принципы их взаимодействия.
Результат: Исходный код, схема структуры, пояснительная записка.
3. Основы объектно-ориентированного программирования
Задание 4:
Создать класс «Товар» (Product) с атрибутами: название, цена, количество. Реализовать методы для изменения цены и количества, а также метод для вывода информации о товаре.
Результат: Исходный код, примеры работы программы.
Задание 5:
Составить сравнительную таблицу реализации принципов ООП (инкапсуляция, наследование, полиморфизм) в Python и любом другом языке (например, Java или C++).
Результат: Таблица (doc/pdf).
4. Наследование и полиморфизм
Задание 6:
Реализовать иерархию классов:
• Базовый класс «Персона» (Person)
• Производные классы: «Студент» (Student), «Преподаватель» (Teacher)
Добавить специфические атрибуты и методы для каждого класса.
Результат: Исходный код, примеры создания объектов и вызова методов.
Задание 7:
Реализовать пример полиморфизма: создать несколько классов с одинаковым методом, вызываемым через общий интерфейс.
Результат: Исходный код, пояснения.
5. Исключения и обработка ошибок
Задание 8:
Написать программу, в которой реализована обработка стандартных и пользовательских исключений (например, при
Результат: Исходный код, пример работы программы.
6. Работа с коллекциями объектов
Задание 9:
Создать список объектов класса «Товар» (Product) и реализовать функции:
• Поиск самого дорогого товара
• Подсчет общей стоимости всех товаров
Результат: Исходный код, демонстрация работы функций.
7. Программирование графического пользовательского интерфейса (GUI)
Задание 10:
Разработать простое графическое приложение на Python (например, калькулятор или форму ввода данных) с использованием библиотеки Tkinter.
Результат: Исходный код, скриншот работы программы.
8. Тестирование и документирование
Задание 11:
Написать юнит-тесты для одного из своих классов с использованием модуля unittest.
Результат: Исходный код тестов, результаты их выполнения.
Задание 12:
Оформить документацию к одному из своих классов с помощью docstring.
Результат: Пример кода с docstring, сгенерированная документация (по желанию).
9. Прикладные и творческие задания
Задание 13:
Разработать мини-проект (например, система учета заказов, библиотека, склад) с использованием ООП. Описать структуру классов, реализовать основные методы.
Результат: Исходный код, схема классов, краткое описание проекта.
Задание 14:
Подготовить презентацию (5–7 слайдов) на тему «Современные тенденции развития объектно-ориентированного программирования».
Результат: Презентация (ppt/pdf).
Комплект тестовых заданий
Блок 1. Знать
1. Какой из перечисленных языков программирования является объектно-ориентированным?
А) Pascal
Б) Python
В) Assembler
Г) Basic
Ответ: Б
2. Основной единицей ООП является:
А) Функция
Б) Массив
В) Класс
Г) Модуль
Ответ: В
3. Какой принцип ООП отвечает за сокрытие деталей реализации?
А) Наследование
Б) Полиморфизм
В) Инкапсуляция
Г) Абстракция
Ответ: В
4. Какой метод является конструктором в Python?
А) del
Б) init
В) new
Г) str
Ответ: Б
5. Какой символ в Python используется для обозначения приватного атрибута?
А) $
Б) _
В) #
Г) %
Ответ: Б
6. Какой принцип ООП позволяет одному интерфейсу использоваться для разных типов объектов?
А) Абстракция
Б) Наследование
В) Полиморфизм
Г) Инкапсуляция
Ответ: В
А) abc
Б) math
В) random
Г) sys
Ответ: А
8. Какой метод вызывается при удалении объекта?
А) init
Б) del
В) str
Г) call
Ответ: Б
9. Какой тип наследования поддерживается в Python?
А) Только одиночное
Б) Только множественное
В) Одиночное и множественное
Г) Наследование не поддерживается
Ответ: В
10. Какой из перечисленных методов является статическим?
А) @staticmethod
Б) @classmethod
В) @property
Г) @private
Ответ: А
11. Какой метод используется для строкового представления объекта?
А) str
Б) init
В) call
Г) del
Ответ: А
12. Какой принцип ООП позволяет создавать новые классы на основе существующих?
А) Инкапсуляция
Б) Наследование
В) Полиморфизм
Г) Абстракция
Ответ: Б
13. Какой из перечисленных типов данных является изменяемым?
А) Кортеж
Б) Строка
В) Список
Г) Число
Ответ: В
14. Какой метод используется для перегрузки оператора сложения в Python?
А) add
Б) sum
В) plus
Г) append
Ответ: А
15. Какой декоратор используется для объявления метода класса?
А) @staticmethod
Б) @classmethod
В) @property
Г) @private
Ответ: Б
16. Какой модификатор доступа отсутствует в Python?
А) public
Б) private
В) protected
Г) friend
Ответ: Г
17. Какой метод используется для итерации по объекту?
А) iter
Б) next
В) call
Г) str
Ответ: А
18. Что такое атрибут экземпляра класса?
А) Переменная, общая для всех объектов
В) Локальная переменная
Г) Глобальная переменная
Ответ: Б
19. Какой метод вызывается при приведении объекта к строке функцией str()?
А) str
Б) repr
В) init
Г) call
Ответ: А
20. Какой тип данных используется для хранения уникальных элементов?
А) Список
Б) Множество
В) Кортеж
Г) Словарь
Ответ: Б
Блок 2. Знать, Уметь
21. Как создать объект класса в Python?
А) obj = ClassName()
Б) obj = ClassName
В) obj = new ClassName()
Г) obj = ClassName.create()
Ответ: А
22. Как обратиться к атрибуту объекта?
А) object[attribute]
Б) object.attribute
В) object->attribute
Г) attribute.object
Ответ: Б
23. Как объявить приватный атрибут в классе Python?
А) attribute
Б) attribute
В) attribute
Г) attribute
Ответ: Б
24. Как вызвать родительский метод в дочернем классе?
А) parent.method()
Б) super().method()
В) self.method()
Г) base.method()
Ответ: Б
25. Как добавить новый элемент в список?
А) list.add()
Б) list.append()
В) list.insert()
Г) list.push()
Ответ: Б
26. Как обработать исключение в Python?
А) try-catch
Б) try-except
В) try-catch-finally
Г) catch-except
Ответ: Б
27. Как создать собственное исключение?
А) class MyError(Exception): pass
Б) def MyError(Exception): pass
В) exception MyError: pass
Г) class MyError: pass
Ответ: А
28. Как импортировать модуль mymodule?
А) include mymodule
Б) import mymodule
В) using mymodule
Г) require mymodule
Ответ: Б
29. Как реализовать множественное наследование?
А) class A(B, C):
Б) class A < B, C:
Г) class A inherits B, C
Ответ: А
30. Как создать свой итератор?
А) Реализовать методы iter и next
Б) Реализовать метод call
В) Реализовать метод str
Г) Реализовать метод add
Ответ: А
31. Как вызвать метод экземпляра внутри класса?
А) self.method()
Б) this.method()
В) method()
Г) class.method()
Ответ: А
32. Какой метод используется для удаления элемента из списка по значению?
А) remove()
Б) pop()
В) del()
Г) delete()
Ответ: А
33. Какой метод используется для получения длины списка?
А) size()
Б) len()
В) length()
Г) count()
Ответ: Б
34. Какой тип данных используется для хранения пар "ключ-значение"?
А) Список
Б) Множество
В) Словарь
Г) Кортеж
Ответ: В
35. Какой оператор используется для проверки принадлежности элемента к коллекции?
А) in
Б) is
В) has
Г) with
Ответ: А
36. Какой метод используется для чтения строки из файла?
А) read()
Б) readline()
В) readlines()
Г) Все перечисленные
Ответ: Г
37. Какой метод используется для записи строки в файл?
А) write()
Б) print()
В) writeline()
Г) insert()
Ответ: А
38. Какой метод используется для закрытия файла?
А) close()
Б) exit()
В) end()
Г) finish()
Ответ: А
39. Как создать генератор в Python?
А) Использовать ключевое слово yield
Б) Использовать ключевое слово return
В) Использовать ключевое слово generate
Г) Использовать ключевое слово create
Ответ: А
40. Какой модуль используется для написания юнит-тестов?
А) unittest
Б) test
В) testing
Г) pytest
Блок 3. Знать, Уметь, Владеть
41. Какой из вариантов корректно реализует паттерн "Одиночка" (Singleton) в Python?
А) Использовать статический атрибут класса
Б) Использовать приватный конструктор
В) Использовать модуль как синглтон
Г) Все перечисленные
Ответ: Г
42. Какой подход используется для организации больших проектов в Python?
А) Использование модулей и пакетов
Б) Использование только одного файла
В) Использование глобальных переменных
Г) Использование только функций
Ответ: А
43. Какой принцип SOLID требует, чтобы класс имел только одну причину для изменения?
А) Open/Closed Principle
Б) Single Responsibility Principle
В) Liskov Substitution Principle
Г) Dependency Inversion Principle
Ответ: Б
44. Какой способ используется для сериализации объекта в Python?
А) pickle
Б) json
В) marshal
Г) Все перечисленные
Ответ: Г
45. Какой модуль используется для работы с графическим интерфейсом в стандартной библиотеке?
А) tkinter
Б) gui
В) qt
Г) wxpython
Ответ: А
46. Какой подход обеспечивает повторное использование кода?
А) Наследование
Б) Инкапсуляция
В) Полиморфизм
Г) Все перечисленные
Ответ: Г
47. Какой метод используется для проверки типа объекта?
А) isinstance()
Б) type()
В) class()
Г) object()
Ответ: А
48. Какой способ позволяет реализовать интерфейс в Python?
А) Использование абстрактного класса
Б) Использование протоколов
В) Использование duck typing
Г) Все перечисленные
Ответ: Г
49. Какой способ позволяет документировать класс?
А) Docstring
Б) Комментарии
В) Внешняя документация
Г) Все перечисленные
Ответ: Г
50. Какой способ позволяет повысить безопасность кода?
А) Использование инкапсуляции
Б) Использование приватных атрибутов
В) Использование проверки типов
Г) Все перечисленные
Ответ: Г
Кейс-задания
Кейс-задание 1. Автоматизация учета товаров на складе
Ситуация:
Ваша компания занимается оптовой торговлей. Необходимо автоматизировать учет товаров на складе. Требуется реализовать систему, позволяющую:
• добавлять новые товары,
• изменять количество и цену товара,
• формировать отчет о наличии товаров и общей стоимости запасов.
Задание:
1. Разработайте структуру классов для решения задачи (например, Product, Warehouse).
2. Реализуйте методы для добавления, изменения и отображения информации о товарах.
3. Протестируйте работу программы на примере 3-5 товаров.
4. Сформулируйте выводы о преимуществах применения ООП для подобных задач.
Кейс-задание 2. Система управления заказами в интернет-магазине
Ситуация:
Интернет-магазин принимает заказы на различные товары. Каждый заказ содержит сведения о клиенте, списке товаров, общей стоимости и статусе заказа (новый, в обработке, выполнен).
Задание:
1. Определите классы для моделирования предметной области (Order, Customer, Product).
2. Реализуйте методы для добавления товаров в заказ, изменения статуса заказа, расчета общей стоимости.
3. Предусмотрите обработку ошибок (например, попытка добавить несуществующий товар).
4. Протестируйте систему на примере 2-3 заказов.
Кейс-задание 3. Учёт сотрудников и расчет зарплаты
Ситуация:
В компании работают сотрудники разных должностей (менеджер, бухгалтер, программист). Для каждого сотрудника необходимо хранить ФИО, должность, оклад, а также рассчитывать зарплату с учетом премии или надбавки.
Задание:
1. Разработайте иерархию классов для сотрудников с учетом наследования.
2. Реализуйте методы для расчета зарплаты с учетом индивидуальных надбавок.
3. Реализуйте вывод общей ведомости по зарплате.
4. Протестируйте на примере 3-4 сотрудников разных должностей.
Кейс-задание 4. Программирование графического интерфейса (GUI) для учета клиентов
Ситуация:
Требуется создать простое приложение с графическим интерфейсом (на базе Tkinter), позволяющее:
• добавлять клиентов (ФИО, телефон, e-mail),
• отображать список клиентов,
• искать клиента по фамилии.
Задание:
1. Разработайте классы для хранения данных о клиентах.
2. Реализуйте основные функции интерфейса (добавление, просмотр, поиск).
3. Протестируйте приложение, добавив 3-5 клиентов.
Кейс-задание 5. Анализ и визуализация данных
Ситуация:
Вам даны данные о продажах товаров за месяц (название, количество, выручка). Необходимо проанализировать данные и построить график (использовать matplotlib).
Задание:
1. Создайте класс для хранения информации о продажах.
2. Реализуйте методы для анализа (суммарная выручка, топ-3 товара по продажам).
3. Постройте график выручки по каждому товару.
4. Сделайте выводы по результатам анализа.
Рекомендации по оформлению кейса
1. Анализ ситуации:
Кратко опишите, какие классы и методы необходимы для решения задачи.
2. Проектирование:
Нарисуйте схему классов (UML-диаграмма - по желанию).
3. Реализация:
Приведите фрагменты кода (основные классы, методы).
4. Тестирование:
Покажите примеры работы программы (вывод, скриншоты).
5. Выводы:
Опишите, какие преимущества дало применение ООП, с какими трудностями столкнулись, как их решили.
• История развития объектно-ориентированного программирования
• Основные парадигмы программирования: сравнение ООП, структурного и процедурного подходов
• Вклад ООП в развитие современных языков программирования
2. Базовые понятия ООП
• Класс и объект: определение, примеры, роль в программировании
• Инкапсуляция, наследование, полиморфизм: суть и примеры реализации в Python
• Абстракция как принцип ООП и её значение для проектирования программных систем
• Реализация основных принципов ООП в Python
• Особенности наследования и множественного наследования в Python
• Перегрузка операторов и полиморфизм в Python
• Использование модулей и пакетов для построения крупных ООП-проектов
4. Проектирование и анализ программных систем
• Использование UML-диаграмм для проектирования ООП-систем
• Применение паттернов проектирования в объектно-ориентированных приложениях (на примере Python)
• Роль тестирования и отладки в процессе разработки ООП-программ
5. Прикладные аспекты и современные тенденции
• ООП в разработке графических пользовательских интерфейсов (GUI) на Python
• ООП и базы данных: применение ORM (Object-Relational Mapping) в Python
• Сравнение ООП в Python и других языках (Java, C++, C#)
• Применение ООП в экономических и бизнес-приложениях
6. Безопасность, качество и стандарты кода
• Инкапсуляция как инструмент повышения безопасности программного кода
• Стандарты оформления и документирования ООП-кода на Python
• Применение принципов SOLID в Python
7. Перспективы и развитие ООП
• Перспективы развития объектно-ориентированного программирования
• ООП и современные парадигмы: функциональное и реактивное программирование
Оценка «хорошо» (71-85 баллов) ставится обучающемуся, обнаружившему полное знание учебно-программного материала, успешное выполнение заданий, предусмотренных программой в типовой ситуации (с ограничением времени), усвоение материалов основной литературы, рекомендованной в программе, способность к самостоятельному пополнению и обновлению знаний в ходе дальнейшей работы над литературой и в профессиональной деятельности. При ответе на вопросы экзаменационного билета студентом допущены несущественные ошибки. Задача решена правильно или ее решение содержало несущественную ошибку, исправленную при наводящем вопросе экзаменатора.
Оценка «удовлетворительно» (56-70 баллов) ставится обучающемуся, обнаружившему знание основного учебно-программного материала в объеме, достаточном для дальнейшей учебы и предстоящей работы по специальности, знакомство с основной литературой, рекомендованной программой, умение выполнять задания, предусмотренные программой. При ответе на экзаменационные вопросы и при выполнении экзаменационных заданий обучающийся допускает погрешности, но обладает необходимыми знаниями для устранения ошибок под руководством преподавателя. Решение задачи содержит ошибку, исправленную при наводящем вопросе экзаменатора.
Оценка «неудовлетворительно» (менее 56 баллов) ставится обучающемуся, обнаружившему пробелы в знаниях основного учебно-программного материала, допустившему принципиальные ошибки в выполнении предусмотренных программой заданий, слабые побуждения к самостоятельной работе над рекомендованной основной литературой. Оценка «неудовлетворительно» ставится обучающимся, которые не могут продолжить обучение или приступить к профессиональной деятельности по окончании академии без дополнительных занятий по соответствующей дисциплине.
зачет /оценка «хорошо» (71-85 баллов) ставится обучающемуся, обнаружившему полное знание учебно-программного материала, успешное выполнение заданий, предусмотренных программой в типовой ситуации (с ограничением времени), усвоение материалов основной литературы, рекомендованной в программе, способность к самостоятельному пополнению и обновлению знаний в ходе дальнейшей работы над литературой и в профессиональной деятельности.
зачет /оценка «удовлетворительно» (56-70 баллов) ставится обучающемуся, обнаружившему знание основного учебно-программного материала в объеме, достаточном для дальнейшей учебы и предстоящей работы по специальности, знакомство с основной литературой, рекомендованной программой, умение выполнять задания, предусмотренные программой.
незачет /оценка «неудовлетворительно» (менее 56 баллов) ставится обучающемуся, обнаружившему пробелы в знаниях
оценка «хорошо» (71-85 баллов) - основанием для снижения оценки может служить нечеткое представление сущности и результатов исследований на защите, или затруднения при ответах на вопросы, или недостаточный уровень качества оформления текстовой части и иллюстративных материалов, или отсутствие последних;
оценка «удовлетворительно» (56-70 баллов) - дополнительное снижение оценки может быть вызвано выполнением работы не в полном объеме, или неспособностью студента правильно интерпретировать полученные результаты, или неверными ответами на вопросы по существу проделанной работы;
оценка «неудовлетворительно» (менее 56 баллов) - выставление этой оценки осуществляется при несамостоятельном выполнении работы, или при неспособности студента пояснить ее основные положения, или в случае фальсификации результатов, или установленного плагиата.
зачет /оценка «отлично» (86-100 баллов) ставится обучающемуся:
- отчет выполнен в соответствии с заданием, грамотно, характеризуется логичным, последовательным изложением материала с соответствующими выводами и /или обоснованными расчетами, предложениями; не содержит ошибок;
- проведено научное исследование в соответствие с полученным заданием;
- отчет выполнен с использованием современных информационных технологий и ресурсов;
- обучающийся при выполнении и защите отчета демонстрирует продвинутый уровень сформированности компетенций, предусмотренных программой практики;
- отчет о прохождении производственной практики имеет положительную характеристику руководителей практики от предприятия и кафедры на обучающегося;
зачет /оценка «хорошо» (71-85 баллов) ставится обучающемуся:
- отчет выполнен в соответствии с заданием, грамотно, характеризуется логичным, последовательным изложением материала, допущены небольшие неточности при формировании выводов/расчетов, предложений; содержит незначительные ошибки/опечатки в текстовой части отчета;
- проведено научное исследование в соответствие с полученным заданием;
- отчет выполнен с использованием современных информационных технологий и ресурсов;
- обучающийся при выполнении и защите отчета демонстрирует базовый уровень сформированности компетенций, предусмотренных программой практики;
- отчет о прохождении производственной практики имеет положительную характеристику руководителей практики от предприятия и кафедры на обучающегося;
зачет /оценка «удовлетворительно» (56-70 баллов) ставится обучающемуся:
- отчет выполнен в соответствии с заданием, материал изложен последовательно, допущены неточности при формировании выводов/расчетов, предложений; содержит ошибки/опечатки в текстовой части отчета;
- присутствуют элементы научного исследования, творческий подход к решению поставленных задач проявляется незначительно;
- отчет выполнен с использованием современных информационных технологий и ресурсов;
- обучающийся при выполнении и защите отчета демонстрирует пороговый уровень сформированности компетенций, предусмотренных программой практики;
- отчет о прохождении производственной практики имеет положительную характеристику руководителей практики от предприятия и кафедры на обучающегося;
незачет /оценка «неудовлетворительно» (менее 56 баллов) ставится обучающемуся:
- отчет выполнен не в соответствии с заданием, материалы не подтверждены соответствующими выводами и/или обоснованными расчетами, предложениями; текстовая часть отчета содержит многочисленные ошибки;
- творческий подход к решению поставленных задач не проявляется; отсутствуют элементы научного исследования;
- отчет выполнен с использованием современных пакетов компьютерных программ, информационных технологий и информационных ресурсов;
- обучающийся при выполнении и защите отчета показывает не сформированность компетенций, предусмотренных программой практики;
- отчет имеет отрицательную характеристику руководителей практики от предприятия и кафедры на обучающегося.
Критерии оценивания (устанавливаются разработчиком самостоятельно с учетом использования рейтинговой системы
Примерные критерии оценивания:
– правильность ответа по содержанию задания (учитывается количество и характер ошибок при ответе);
– полнота и глубина ответа (учитывается количество усвоенных фактов, понятий и т.п.);
– сознательность ответа (учитывается понимание излагаемого материала);
– логика изложения материала (учитывается умение строить целостный, последовательный рассказ, грамотно пользоваться специальной терминологией);
– использование дополнительного материала;
– рациональность использования времени, отведенного на задание (не одобряется затянутость выполнения задания, устного ответа во времени, с учетом индивидуальных особенностей обучающихся).
Шкала оценивания (устанавливается разработчиком самостоятельно с учетом использования рейтинговой системы оценки успеваемости обучающихся)
Примерная шкала оценивания:
для учета в рейтинге (оценка)
«отлично»
«хорошо»
«удовлетво-рительно»
«неудовлетворительно»
для учета в рейтинге (оценка)
Критерии оценивания (устанавливаются разработчиком самостоятельно с учетом использования рейтинговой системы оценки успеваемости обучающихся)
Примерные критерии оценивания:
- теоретический уровень знаний;
- качество ответов на вопросы;
- подкрепление материалов фактическими данными (статистические данные или др.);
- практическая ценность материала;
- способность делать выводы;
- способность отстаивать собственную точку зрения;
- способность ориентироваться в представленном материале;
- степень участия в общей дискуссии.
Шкала оценивания (устанавливается разработчиком самостоятельно с учетом использования рейтинговой системы оценки успеваемости обучающихся)
Примерная шкала оценивания:
(дискуссии, полемики, диспута, дебатов)
«отлично»
используется терминология; показано умение иллюстрировать теоретические положения конкретными примерами, применять их в новой ситуации; высказывать свою точку зрения.
«хорошо»
«удовлетво-рительно»
«неудовлетворительно»
для учета в рейтинге (оценка)
Критерии оценивания (устанавливаются разработчиком самостоятельно с учетом использования рейтинговой системы оценки успеваемости обучающихся)
Примерные критерии оценивания:
– полнота раскрытия темы;
– правильность формулировки и использования понятий и категорий;
– правильность выполнения заданий/ решения задач;
– аккуратность оформления работы и др.
Шкала оценивания (устанавливается разработчиком самостоятельно с учетом использования рейтинговой системы оценки успеваемости обучающихся)
Примерная шкала оценивания:
(обязательно для дисциплин, где по УП предусмотрена контрольная работа)
«отлично»
«хорошо»
«удовлетво-рительно»
«неудовлетворительно»
Примерные критерии оценивания:
– правильность выполнения задания на практическую/лабораторную работу в соответствии с вариантом;
– степень усвоения теоретического материала по теме практической /лабораторной работы;
– способность продемонстрировать преподавателю навыки работы в инструментальной программной среде, а также применить их к решению типовых задач, отличных от варианта задания;
– качество подготовки отчета по практической / лабораторной работе;
– правильность и полнота ответов на вопросы преподавателя при защите работы
и др.
Шкала оценивания (устанавливается разработчиком самостоятельно с учетом использования рейтинговой системы оценки успеваемости обучающихся)
Примерная шкала оценивания практических занятий (лабораторных работ):
для учета в рейтинге (оценка)
«отлично»
«хорошо»
«удовлетво-рительно»
«неудовлетворительно»
Критерии оценивания (устанавливаются разработчиком самостоятельно с учетом использования рейтинговой системы оценки успеваемости обучающихся)
Примерные критерии оценивания:
В качестве критериев могут быть выбраны, например:
– соответствие срока сдачи работы установленному преподавателем;
– соответствие содержания и оформления работы предъявленным требованиям;
– способность выполнять вычисления;
– умение использовать полученные ранее знания и навыки для решения конкретных задач;
– умение отвечать на вопросы, делать выводы, пользоваться профессиональной и общей лексикой;
– обоснованность решения и соответствие методике (алгоритму) расчетов;
Шкала оценивания (устанавливается разработчиком самостоятельно с учетом использования рейтинговой системы оценки успеваемости обучающихся)
Примерная шкала оценивания:
расчетно-графической работы, работы на тренажере
для учета в рейтинге (оценка)
«отлично»
«хорошо»
«удовлетво-рительно»
«неудовлетворительно»
Материалы тестовых заданий следует сгруппировать по темам/разделам изучаемой дисциплины (модуля) в следующем виде:
Тема (темы) / Раздел дисциплины (модуля)
Тестовые задания по данной теме (темам)/Разделу с указанием правильных ответов.
Критерии оценивания (устанавливаются разработчиком самостоятельно с учетом использования рейтинговой системы оценки успеваемости обучающихся)
Примерные критерии оценивания:
- отношение правильно выполненных заданий к общему их количеству
Шкала оценивания (устанавливается разработчиком самостоятельно с учетом использования рейтинговой системы
для учета в рейтинге (оценка)
Примерная шкала оценивания:
для учета в рейтинге (оценка)
Задачи реконструктивного уровня
Задачи творческого уровня
Критерии оценивания (устанавливаются разработчиком самостоятельно с учетом использования рейтинговой системы оценки успеваемости обучающихся)
Примерные критерии оценивания:
– полнота знаний теоретического контролируемого материала;
– полнота знаний практического контролируемого материала, демонстрация умений и навыков решения типовых задач, выполнения типовых заданий/упражнений/казусов;
– умение самостоятельно решать проблему/задачу на основе изученных методов, приемов, технологий;
– умение ясно, четко, логично и грамотно излагать собственные размышления, делать умозаключения и выводы;
– полнота и правильность выполнения задания.
Шкала оценивания (устанавливается разработчиком самостоятельно с учетом использования рейтинговой системы оценки успеваемости обучающихся)
Примерная шкала оценивания:
Критерии оценивания (устанавливаются разработчиком самостоятельно с учетом использования рейтинговой системы оценки успеваемости обучающихся)
Примерные критерии оценивания:
– полнота раскрытия темы;
– степень владения понятийно-терминологическим аппаратом дисциплины;
– знание фактического материала, отсутствие фактических ошибок;
– умение логически выстроить материал ответа;
– умение аргументировать предложенные подходы и решения, сделанные выводы;
– степень самостоятельности, грамотности, оригинальности в представлении материала (стилистические обороты, манера изложения, словарный запас, отсутствие или наличие грамматических ошибок);
– выполнение требований к оформлению работы.
Шкала оценивания (устанавливается разработчиком самостоятельно с учетом использования рейтинговой системы оценки успеваемости обучающихся).
(рефератов, докладов, сообщений)
для учета в рейтинге (оценка)
Показано умелое использование категорий и терминов дисциплины в их ассоциативной взаимосвязи.
Ответ четко структурирован и выстроен в заданной логике. Части ответа логически взаимосвязаны. Отражена логическая структура проблемы (задания): постановка проблемы – аргументация – выводы. Объем ответа укладывается в заданные рамки при сохранении смысла.
Продемонстрировано умение аргументировано излагать собственную точку зрения. Видно уверенное владение освоенным материалом, изложение сопровождено адекватными иллюстрациями (примерами) из практики.
Высокая степень самостоятельности, оригинальность в представлении материала: стилистические обороты, манера изложения, словарный запас. Отсутствуют стилистические и орфографические ошибки в тексте.
Работа выполнена аккуратно, без помарок и исправлений.
Примерная шкала оценивания письменных работ:
Продемонстрировано владение понятийно-терминологическим аппаратом дисциплины (уместность употребления, аббревиатуры, толкование и т.д.), отсутствуют ошибки в употреблении терминов.
Показано умелое использование категорий и терминов дисциплины в их ассоциативной взаимосвязи.
Ответ в достаточной степени структурирован и выстроен в заданной логике без нарушений общего смысла. Части ответа логически взаимосвязаны. Отражена логическая структура проблемы (задания): постановка проблемы – аргументация – выводы. Объем ответа незначительно превышает заданные рамки при сохранении смысла.
Продемонстрировано умение аргументированно излагать собственную точку зрения, но аргументация не всегда убедительна. Изложение лишь отчасти сопровождено адекватными иллюстрациями (примерами) из практики.
Достаточная степень самостоятельности, оригинальность в представлении материала. Встречаются мелкие и не искажающие смысла ошибки в стилистике, стилистические штампы. Есть 1–2 орфографические ошибки.
Работа выполнена аккуратно, без помарок и исправлений.
Продемонстрировано достаточное владение понятийно-терминологическим аппаратом дисциплины, есть ошибки в употреблении и трактовке терминов, расшифровке аббревиатур.
Ошибки в использовании категорий и терминов дисциплины в их ассоциативной взаимосвязи.
Ответ плохо структурирован, нарушена заданная логика. Части ответа логически разорваны, нет связок между ними. Ошибки в представлении логической структуры проблемы (задания): постановка проблемы – аргументация – выводы. Объем ответа в существенной степени (на 25–30%) отклоняется от заданных рамок.
Нет собственной точки зрения либо она слабо аргументирована. Примеры, приведенные в ответе в качестве практических иллюстраций, в малой степени соответствуют изложенным теоретическим аспектам.
Текст работы примерно наполовину представляет собой стандартные обороты и фразы из учебника/лекций. Обилие ошибок в стилистике, много стилистических штампов. Есть 3–5 орфографических ошибок.
Работа выполнена не очень аккуратно, встречаются помарки и исправления.
Продемонстрировано крайне слабое владение понятийно-терминологическим аппаратом дисциплины (неуместность употребления, неверные аббревиатуры, искаженное толкование и т.д.), присутствуют многочисленные ошибки в употреблении терминов.
Продемонстрировано крайне низкое (отрывочное) знание фактического материала, много фактических ошибок – практически все факты (данные) либо искажены, либо неверны.
Ответ представляет собой сплошной текст без структурирования, нарушена заданная логика. Части ответа не взаимосвязаны логически. Нарушена логическая структура проблемы (задания): постановка проблемы – аргументация – выводы. Объем ответа более чем в 2 раза меньше или превышает заданный. Показаны неверные ассоциативные взаимосвязи категорий и терминов дисциплины.
Отсутствует аргументация изложенной точки зрения, нет собственной позиции. Отсутствуют примеры из практики либо они неадекватны.
Текст ответа представляет полную кальку текста учебника/лекций. Стилистические
Работа выполнена неаккуратно, с обилием помарок и исправлений. В работе один абзац и больше позаимствован из какого-либо источника без ссылки на него.
для учета в рейтинге (оценка)
Критерии оценивания (устанавливаются разработчиком самостоятельно с учетом использования рейтинговой системы оценки успеваемости обучающихся)
Примерные критерии оценивания:
- соответствие решения сформулированным в кейсе вопросам (адекватность проблеме и рынку);
- оригинальность подхода (новаторство, креативность);
- применимость решения на практике;
- глубина проработки проблемы (обоснованность решения, наличие альтернативных вариантов, прогнозирование возможных проблем, комплексность решения).
Шкала оценивания (устанавливается разработчиком самостоятельно с учетом использования рейтинговой системы оценки успеваемости обучающихся)
Примерная шкала оценивания:
для учета в рейтинге (оценка)
Роли:
Задания (вопросы, проблемные ситуации и др.)
Ожидаемый (е) результат(ы)
Критерии оценивания (устанавливаются разработчиком самостоятельно с учетом использования рейтинговой системы оценки успеваемости обучающихся)
Примерные критерии оценивания:
качество усвоения информации;
выступление;
содержание вопроса;
качество ответов на вопросы;
значимость дополнений, возражений, предложений;
уровень делового сотрудничества;
соблюдение правил деловой игры;
соблюдение регламента;
активность;
правильное применение профессиональной лексики.
Шкала оценивания (устанавливается разработчиком самостоятельно с учетом использования рейтинговой системы оценки успеваемости обучающихся)
Примерная шкала оценивания:
для учета в рейтинге (оценка)
для учета в рейтинге (оценка)
Индивидуальные творческие задания (проекты):
Критерии оценивания (устанавливаются разработчиком самостоятельно с учетом использования рейтинговой системы оценки успеваемости обучающихся)
Примерные критерии оценивания:
- актуальность темы;
- соответствие содержания работы выбранной тематике;
- соответствие содержания и оформления работы установленным требованиям;
- обоснованность результатов и выводов, оригинальность идеи;
- новизна полученных данных;
- личный вклад обучающихся;
- возможности практического использования полученных данных.
Шкала оценивания (устанавливается разработчиком самостоятельно с учетом использования рейтинговой системы оценки успеваемости обучающихся)
Примерная шкала оценивания:
п/п