Файл: Методические указания и варианты заданий для выполнения контрольной работы по дисциплине.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.01.2024
Просмотров: 48
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«ДОНСКОЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ (ДГТУ)»
Кафедра «Математика и информатика»
Методические указания
и варианты заданий для выполнения
контрольной работы по дисциплине:
«Объектно-ориентированное программирование»
для студентов заочной формы обучения
Направление подготовки 44.03.04 «Профессиональное обучение (по отраслям)», профиль «Информатика и вычислительная техника (Прикладная информатика)»
Ростов-на-Дону
2021
Составитель: доцент, к.т. наук Б.А. Акишин
Номер варианта контрольной работы должен совпадать с последней цифрой в зачетной книжке. Контрольная состоит из теоретического вопроса и практического задания на языке Python 3.
ТЕОРЕТИЧЕСКИЕ ВОПРОСЫ
-
Технология программирования. Этапы развития технологии программирования. Жизненный цикл ПО и этапы его разработки -
Принцип модульности и основные понятия объектно-ориентированного программирования. -
Понятие классов, объектов. Объявление класса. Принципы ООП. Инкапсуляция. Наследование. Полиморфизм. -
Создание классов и объектов в Python. Свойства класса. Декораторы классов. -
Инкапсуляция. -
Методы классов. Инициализация экземпляров класса. Статические и динамические методы -
Проверка типа объекта. Полиморфизм. -
Наследование. Иерархия классов. Механизм наследования. -
Расширение методов. Использование методов наследников в базовом классе. -
Возможности объектно-ориентированного программирования в VBA.
ПРАКТИЧЕСКИЕ ЗАДАНИЯ
Вариант 1
Составить класс для описания плоских геометрических фигур: круга, квадрата, прямоугольника. Предусмотреть методы для создания объектов, перемещения на плоскости, изменения размеров и вращения на заданный угол.
Записать программу на языке Python 3, демонстрирующую работу с этим классом.
Вариант 2
Составить описание класса для представления комплексных чисел. Обеспечить выполнение операций сложения, вычитания и умножения комплексных чисел.
Записать программу на языке Python 3, демонстрирующую работу с этим классом.
Вариант 3
Составить описание класса для объектов-векторов, задаваемых координатами их концов в трехмерном пространстве. Обеспечить операции сложения и вычитания векторов с получением нового вектора (суммы или разности), вычисления скалярного произведения двух векторов, длины вектора, косинуса угла между векторами.
Записать программу на языке Python 3, демонстрирующую работу с этим классом.
Вариант 4
Составить описание класса прямоугольников со сторонами, параллельными осям координат. Предусмотреть возможность перемещения прямоугольников на плоскости, изменение размеров, построение наименьшего прямоугольника, содержащего два заданных прямоугольника, и прямоугольника, являющегося общей частью (пересечением) двух прямоугольников.
Записать программу на языке Python 3, демонстрирующую работу с этим классом.
Вариант 5
Составить описание класса для определения одномерных массивов целых чисел (векторов). Предусмотреть следующие возможности: обращение к отдельному элементу массива с контролем выхода за пределы массива; выполнение операций поэлементного сложения и вычитания массивов с одинаковыми границами индексов; умножение и деление всех элементов массива на скаляр; вывод на экран элемента массива по заданному индексу.
Записать программу на языке Python 3, демонстрирующую работу с этим классом.
Вариант 6
Составить описание класса многочленов от одной переменной, задаваемых степенью многочлена и массивом коэффициентов. Предусмотреть методы, реализующие: вычисление значения многочлена для заданного аргумента; операцию сложения, вычитания и умножения многочленов с получением нового объекта-многочлена; вывод на экран описания многочлена.
Записать программу на языке Python 3, демонстрирующую работу с этим классом
Вариант 7
Составить описание класса, обеспечивающего представление матрицы произвольного размера с возможностью изменения числа строк и столбцов, а также вывода на экран подматрицы любого размера и всей матрицы.
Записать программу на языке Python 3, демонстрирующую работу с этим классом.
Вариант 8
Описать класс, реализующий тип данных «вещественная матрица» и работу с ними. Класс должен реализовывать следующие действия над матрицами: сложение, вычитание, умножение, деление (умножение и деление как на другую матрицу, так и на число); вычисление обратной и транспонированной матрицы; методы, реализующие проверку типа матрицы (квадратная, диагональная нулевая, единичная).
Записать программу на языке Python 3, демонстрирующую работу с этим классом
Вариант 9
Составить описание класса для определения одномерных массивов строк фиксированной длины. Предусмотреть следующие возможности: обращение к отдельным строкам массива по индексам; контроль выхода за пределы массива; выполнение операций поэлементного сцепления двух массивов с образованием нового массива; вывод на экран элемента массива по заданному индексу
Записать программу на языке Python 3, демонстрирующую работу с этим классом.
Вариант 10
Составить описание класса прямоугольников со сторонами, параллельными осям координат. Предусмотреть возможность перемещения прямоугольников на плоскости, изменение размеров, построение наименьшего прямоугольника, содержащего два заданных прямоугольника, и прямоугольника, являющегося общей частью (пересечением) двух прямоугольников.
Записать программу на языке Python 3, демонстрирующую работу с этим классом.
Пример: класс «Вектор на плоскости»
Двумерные векторы — очень полезный и важный геометрический объект. Векторы любой нужной размерности уже есть в библиотеке Numpy, но, если бы мы хотим реализовать двумерный вектор самостоятельно, можно это сделать, например, так:
class MyVector:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, other):
return MyVector(self.x + other.x, self.y + other.y)
def __sub__(self, other):
return MyVector(self.x - other.x, self.y - other.y)
def __mul__(self, other):
return MyVector(self.x * other, self.y * other)
def __rmul__(self, other):
return MyVector(self.x * other, self.y * other)
def __str__(self):
return 'MyVector({}, {})'.format(self.x, self.y)
v1 = MyVector(-2, 5)
v2 = MyVector(3, -4)
v_sum = v1 + v2
print(v_sum) # MyVector(1, 1)
v_mul = v1 * 1.5
print(v_mul) # MyVector(-3.0, 7.5)
v_rmul = -2 * v1
print(v_rmul) # MyVector(4, -10)
В этом примере определены методы __add__ и __sub__ для реализации классических операций сложения и вычитания векторов. Метод __mul__ реализует операцию умножения вектора на число
, а метод __rmul__ — операцию умножения числа на вектор. Для преобразования в строку используется метод __str__.
Литература.
-
Объектно-ориентированная методология программирования (http://www.math.rsu.ru/smalltalk/sml-a.ru.html) -
https://pythonworld.ru/osnovy/pep-8-rukovodstvo-po-napisaniyu-koda-na-python.html -
https://docs-python.ru/tutorial/pep-rukovodstvo-stilju-koda-python/razmetka-koda-pep/ -
https://pep8.ru/doc/pep8/ -