Файл: Методические указания и варианты заданий для выполнения контрольной работы по дисциплине.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 11.01.2024

Просмотров: 46

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«ДОНСКОЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ (ДГТУ)»

Кафедра «Математика и информатика»








Методические указания

и варианты заданий для выполнения

контрольной работы по дисциплине:

«Объектно-ориентированное программирование»

для студентов заочной формы обучения
Направление подготовки 44.03.04 «Профессиональное обучение (по отраслям)», профиль «Информатика и вычислительная техника (Прикладная информатика)»

Ростов-на-Дону
2021
Составитель: доцент, к.т. наук Б.А. Акишин



Номер варианта контрольной работы должен совпадать с последней цифрой в зачетной книжке. Контрольная состоит из теоретического вопроса и практического задания на языке Python 3.

ТЕОРЕТИЧЕСКИЕ ВОПРОСЫ


  1. Технология программирования. Этапы развития технологии программирования. Жизненный цикл ПО и этапы его разработки

  2. Принцип модульности и основные понятия объектно-ориентированного программирования.

  3. Понятие классов, объектов. Объявление класса. Принципы ООП. Инкапсуляция. Наследование. Полиморфизм.

  4. Создание классов и объектов в Python. Свойства класса. Декораторы классов.

  5. Инкапсуляция.

  6. Методы классов. Инициализация экземпляров класса. Статические и динамические методы

  7. Проверка типа объекта. Полиморфизм.

  8. Наследование. Иерархия классов. Механизм наследования.

  9. Расширение методов. Использование методов наследников в базовом классе.

  10. Возможности объектно-ориентированного программирования в 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__.
Литература.

  1. Объектно-ориентированная методология программирования (http://www.math.rsu.ru/smalltalk/sml-a.ru.html)

  2. https://pythonworld.ru/osnovy/pep-8-rukovodstvo-po-napisaniyu-koda-na-python.html

  3. https://docs-python.ru/tutorial/pep-rukovodstvo-stilju-koda-python/razmetka-koda-pep/

  4. https://pep8.ru/doc/pep8/