class Animal:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def speak(self):
        print(f"{self.name} издаёт звук.")


class Dog(Animal):
    species = "Canis lupus familiaris"

    def speak(self):
        print(f"{self.name} лает.")


class Cat(Animal):
    def speak(self):
        print(f"{self.name} мяукает.")


class Bird(Animal):
    def fly(self):
        print(f"{self.name} летит.")


class BankAccount:
    def __init__(self, balance):
        self.__balance = balance

    def get_balance(self):
        return self.__balance

    def set_balance(self, amount):
        if amount >= 0:
            self.__balance = amount
        else:
            print("Сумма не может быть отрицательной.")


if __name__ == "__main__":
    print("=== Создание объектов ===")

    # Ввод данных для собаки
    name = input("Введите имя собаки: ")
    age = int(input("Введите возраст собаки: "))
    dog = Dog(name, age)

    # Ввод данных для кошки
    name = input("Введите имя кошки: ")
    age = int(input("Введите возраст кошки: "))
    cat = Cat(name, age)

    # Ввод данных для птицы
    name = input("Введите имя птицы: ")
    age = int(input("Введите возраст птицы: "))
    bird = Bird(name, age)

    # Ввод данных для банковского счета
    balance = float(input("Введите начальный баланс счета: "))
    account = BankAccount(balance)

    print("\n=== Демонстрация работы ===")
    print(f"Собака: {dog.name}, возраст: {dog.age}")
    print(f"Кошка: {cat.name}, возраст: {cat.age}")
    print(f"Птица: {bird.name}, возраст: {bird.age}")

    dog.speak()
    cat.speak()
    bird.speak()
    bird.fly()

    print(f"Собака принадлежит к виду: {Dog.species}")

    print(f"Баланс счета: {account.get_balance()}")
    new_balance = float(input("Введите новую сумму для счета: "))
    account.set_balance(new_balance)
    print(f"Новый баланс: {account.get_balance()}")
