Добавил:
Ученье свет а не ученье бутылки собирать Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

СР5

.docx
Скачиваний:
4
Добавлен:
28.12.2023
Размер:
444.59 Кб
Скачать

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

федеральное государственное автономное образовательное учреждение

высшего образования

«НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ

ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

Инженерная школа новых производственных технологий

Направление подготовки: 12.03.02 Оптотехника

ООП: Оптико-электронные приборы и системы

САМОСТОЯТЕЛЬНАЯ РАБОТА №5

дисциплина "Основы программирования на Python"

Выполнила:

студентка _________________

Проверил:

преподаватель _________________ В. Петровский

Томск - 2023

ЦЕЛЬ РАБОТЫ: обрести навыки применения объектно-ориентированного программирования.

ЗАДАНИЕ:

  1. Создать класс ThreeStates и определить у него поле state и метод hasstate. Атрибут state реализовать как приватный. В рамках метода реализовать переключение состояний: первое, второе, третье. Продолжительность первого состояния составляет 5 секунд, второго — 3 секунды, третьего — 2 секунды. Переключение между состояниями должно осуществляться только в указанном порядке (первое, второе, третье). Проверить работу примера, создав экземпляр и вызвав описанный метод.

  2. Реализовать класс Volume, в котором определить защищенные поля: length (длина), width (ширина) и height (высота). Значения данных атрибутов должны передаваться при создании экземпляра класса. Определить метод расчета, использовав формулу: длина*ширина*высота. Проверить работу метода.

  3. Реализовать базовый класс Employee, в котором определить атрибуты: name, patronymic, surname, salary. Последний атрибут должен быть защищенным и ссылаться на словарь, содержащий элементы: жалование и бонус, например, {"wage": wage, "bonus": bonus}. Создать класс Salary на базе класса Employee. В классе Salary реализовать методы получения полного имени сотрудника (get_full_name) и дохода с учетом премии (get_total_income). Создать экземпляры класса Salary, передать данные, проверить значения атрибутов, вызвать методы экземпляров.

  4. Реализуйте базовый класс Airplane. У данного класса должны быть следующие атрибуты: speed, color, name, is_jet (булево). А также методы: go, stop, direction, которые должны сообщать, что самолет летит, не летит, повернул в полете. Опишите несколько дочерних классов самолетов: FastAirplane, Biplane, ArmyAirplane. Добавьте в базовый класс метод show_speed, который должен показывать текущую скорость самолета. Для класса FastAirplane переопределите метод show_speed. При значении скорости свыше 1300 (FastAirplane) должно выводиться сообщение о сверхзвуковой скорости. Создайте экземпляры классов, передайте значения атрибутов. Выполните доступ к атрибутам, выведите результат. Выполните вызов методов и также покажите результат.

  5. Реализовать класс MathOperations. Определить в нем атрибуты first_num, second_num и метод calc. Метод выводит сообщение “Запуск операции”. Создать три дочерних класса my_sum (сложение), my_sub (вычитание), my_mult (умножение). В каждом из классов реализовать переопределение метода calc. Для каждого из классов метод должен выполнять математическую операцию, соответствующую названию класса. Создать экземпляры классов и проверить работу методов.

ХОД РАБОТЫ

  1. Класс ThreeStates: этот класс моделирует объект, который может находиться в одном из трех состояний, переходя из одного в другое по вызову метода hasstate. При создании экземпляра класса ThreeStates, в конструкторе __init__ инициализируется приватная переменная __state со значением. Метод hasstate проверяет текущее состояние объекта и в зависимости от этого состояния:

  • Печатает "Первое состояние", задерживается на 5 секунд с помощью time.sleep(5) и переходит в состояние 2.

  • Печатает "Второе состояние", задерживается на 3 секунды и переходит в состояние 3.

  • Печатает "Третье состояние", задерживается на 2 секунды и переходит обратно в состояние 1.

  1. Класс Volume: этот класс вычисляет объем параллелепипеда. Конструктор __init__ инициализирует приватные переменные, хранящие размеры: длину, ширину и высоту. Метод calculate_volume возвращает объем, вычисляемый путем перемножения этих значений.

  1. Класс Employee и Salary: класс Employee хранит информацию о сотруднике, а Salary расширяет Employee, добавляя функциональность для работы с зарплатой. Employee инициализирует общую информацию о сотруднике. Salary наследует эту информацию и добавляет методы: get_full_name для возврата полного имени сотрудника и get_total_income для расчета общего дохода (заработная плата плюс бонус).

  1. Класс Airplane и его производные классы: Airplane определяет базовые методы и свойства для самолетов, в то время как подклассы (FastAirplane, Biplane, ArmyAirplane) наследуют или модифицируют эти методы. Конструктор устанавливает атрибуты самолета. Методы класса, такие как go, stop, direction, и show_speed, выводят информацию о состоянии и поведении самолета. FastAirplane переопределяет метод show_speed, чтобы отобразить специальное сообщение для сверхзвуковых скоростей. Biplane и ArmyAirplane наследуют поведение Airplane без изменений.

  1. Классы MathOperations и его подклассы: эти классы демонстрируют полиморфизм в действии: один и тот же метод calc делает разные вещи в разных подклассах. MathOperations служит базовым классом, не делая ничего конкретного. Его подклассы my_sum, my_sub, my_mult реализуют метод calc для выполнения сложения, вычитания и умножения соответственно.

РЕЗУЛЬТАТЫ:

Таким образом, в данной работе был реализован код, который демонстрирует различные основные аспекты объектно-ориентированного подхода и Python-специфический синтаксис ООП.

Также были получены навыки работы с понимание инкапсуляции и управления внутренним состоянием объекта, использование условных выражений для контроля потока выполнения, с модулем time для приостановки исполнения кода, создание методов класса для взаимодействия с атрибутами объекта, понимание и применение наследования в ООП, работа со строками и словарями в Python, создание методов для форматирования данных и выполнения вычислений, понимание и применение наследования и полиморфизма.

Соседние файлы в предмете Основы программирования