💀
Второй курс РПО
Разработка программных модулей
Разработка программных модулей
  • Модели разработки
  • Ошибки и отладка программ
  • Средства разработки алгоритмов
    • Основные принципы и стадии тестирования
  • Сложностные классы
  • Эмуляторы операционных систем
  • Сложность сортировки
  • Уровни тестирования
  • Задание №1
  • Регрессионное тестирование
  • Тестирование «белым ящиком»
  • Как делать оценку сложности?
  • Алгоритмы и сложность
  • Тестирование "белым ящиком" №2
  • Сложность алгоритмов
  • Тестирование "белым ящиком" №3
  • Тестирование "Чёрным ящиком»" №1
  • Тестирование "Черным ящиком" №2
  • Оценка сложности эвристических алгоритмов
  • Принципы ООП
  • Тестирование "Черным ящиком" №3
  • КТ - В3
  • Модульное тестирование
    • С кодами
  • Модульное тестирование
  • Абстрактные классы и интерфейсы в Python
  • Структуры в Python по аналогии с C++
    • Диалоги гениев
  • Делегаты в Python
    • Ещё более не смешные диалоги
  • Регулярные выражения в Python от простого к сложному
  • Python: Коллекции
  • Параметризованные классы (шаблоны)
  • Указатели и операции со списками в Python
  • Интеграционное тестирование
  • Работа с классами. Перегрузка методов
  • Определение операций в классе.
  • Создание наследованных классов
  • Интеграционное тестирование
  • Работа с объектами через интерфейсы
  • Использование стандартных интерфейсов
  • Работа с типом данных "Структура"
  • Коллекции. Параметризованные классы
  • Использование регулярных выражений
  • Операции со списками
  • Что такое паттерны проектирования?
  • Шпаргалка по шаблонам проектирования
    • [Habr] Шпаргалка
  • UML-диаграммы проектирования
  • Использование основных шаблонов.
  • Использование каких то там шаблонов
  • 15-я Практическая
  • 16-я Практическая
  • Graphviz Online
  • 17-я Практическая
  • Введение в теорию программирования: Объектно-ориентированный подход
  • Документирование софта и стандарты
  • C# Ввод и вывод
  • Оптимизация кода: просто о главном
  • Автоматизация разработки технической документации
  • Автоматизированное документирование и первичные данные
  • ADO.NET что это?
Powered by GitBook
On this page
  • Пример 1: Наследование с добавлением нового метода
  • Объяснение
  • Тестирование
  • Пример 2: Наследование с добавлением новых свойств
  • Объяснение
  • Тестирование
  • Пример 3: Наследование с добавлением новых методов
  • Объяснение
  • Тестирование
  • Результаты

Создание наследованных классов

24.01.2025 - Практическая работа №7. Создание наследованных классов

Наследование в Python позволяет создавать новый класс на основе уже существующего. Новый класс (дочерний) может использовать все методы и свойства родительского класса, а также добавлять свои.


Пример 1: Наследование с добавлением нового метода

class Animal:  # Родительский класс "Животное"
    def __init__(self, name):
        self.name = name

    def speak(self):  # Метод, который может быть переопределён
        return f"{self.name} издаёт какой-то звук."

class Dog(Animal):  # Дочерний класс "Собака"
    def speak(self):  # Переопределяем метод speak
        return f"{self.name} говорит: Гав-гав!"

Объяснение

  • class Animal: — базовый класс для животных. У него есть имя и общий метод speak.

  • class Dog(Animal): — дочерний класс, который наследует от Animal, но переопределяет метод speak.

Тестирование

animal = Animal("Животное")  # Создаём объект базового класса
dog = Dog("Бобик")  # Создаём объект дочернего класса

print(animal.speak())  # Ожидаем: "Животное издаёт какой-то звук."
print(dog.speak())  # Ожидаем: "Бобик говорит: Гав-гав!"

Пример 2: Наследование с добавлением новых свойств

class Vehicle:  # Родительский класс "Транспортное средство"
    def __init__(self, brand, model):
        self.brand = brand
        self.model = model

    def description(self):
        return f"Марка: {self.brand}, Модель: {self.model}"

class Car(Vehicle):  # Дочерний класс "Автомобиль"
    def __init__(self, brand, model, doors):
        super().__init__(brand, model)  # Вызываем конструктор родительского класса
        self.doors = doors  # Новое свойство для машин

    def description(self):  # Переопределяем метод description
        return f"{super().description()}, Дверей: {self.doors}"

Объяснение

  • class Vehicle: — базовый класс для транспорта. У него есть свойства brand и model.

  • class Car(Vehicle): — дочерний класс, который добавляет новое свойство doors и переопределяет метод description.

Тестирование

vehicle = Vehicle("Generic", "Model X")  # Базовый транспорт
car = Car("Toyota", "Camry", 4)  # Автомобиль с 4 дверями

print(vehicle.description())  # Ожидаем: "Марка: Generic, Модель: Model X"
print(car.description())  # Ожидаем: "Марка: Toyota, Модель: Camry, Дверей: 4"

Пример 3: Наследование с добавлением новых методов

class Person:  # Родительский класс "Человек"
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def info(self):
        return f"Имя: {self.name}, Возраст: {self.age}"

class Student(Person):  # Дочерний класс "Студент"
    def __init__(self, name, age, grade):
        super().__init__(name, age)  # Вызываем конструктор родительского класса
        self.grade = grade  # Добавляем новое свойство

    def study(self):  # Новый метод
        return f"{self.name} учится на {self.grade} курсе."

Объяснение

  • class Person: — базовый класс, который хранит имя и возраст человека.

  • class Student(Person): — дочерний класс, который добавляет новое свойство grade (курс) и метод study.

Тестирование

person = Person("Иван", 30)  # Базовый человек
student = Student("Петя", 20, 2)  # Студент на 2 курсе

print(person.info())  # Ожидаем: "Имя: Иван, Возраст: 30"
print(student.info())  # Ожидаем: "Имя: Петя, Возраст: 20"
print(student.study())  # Ожидаем: "Петя учится на 2 курсе."

Результаты

  1. Пример 1: Класс Dog наследует Animal и переопределяет метод speak, делая поведение уникальным для собак.

  2. Пример 2: Класс Car наследует от Vehicle, добавляет свойство doors и модифицирует метод description.

  3. Пример 3: Класс Student расширяет базовый класс Person, добавляя метод study и новое свойство grade.

PreviousОпределение операций в классе.NextИнтеграционное тестирование

Last updated 4 months ago