# Activity Solution: # 1. Create an activity folder and an activity.py file inside of it. # 2. Create an abstract class called Animal that has the following abstract methods: # a. eat(food) # b. make_sound() from abc import ABC, abstractmethod class Animal(ABC): @abstractmethod def eat(self, food): pass @abstractmethod def make_sound(self): pass # 3. Create two classes that implements the Animal class called Cat and Dog with each of the following properties and methods: # a. Properties: # - name # - breed # - age # b. Methods: # - getters and setters # - implementation of abstract methods # - call() class Dog(Animal): def __init__(self, name, breed, age): super().__init__() self._name = name self._breed = breed def get_breed(self): return self._breed def get_age(self): return self._age def set_name(self, name): self._name = name def set_breed(self, breed): self._breed = breed def eat(self, food): print(f"Eaten {food}") def make_sound(self): print(f"Bark! Woof! Arf!") def call(self): print(f"Here {self._name}!") class Cat(Animal): def __init__(self, name, breed, age): super().__init__() self._name = name self._breed = breed def get_name(self): return self._name def get_breed(self): return self._breed def get_age(self): return self._age def set_breed(self, breed): self._breed = breed def eat(self, food): print(f"Serve me {food}") def make_sound(self): print(f"Miaow! Nyaw! Nyaaaaa!") def call(self): print(f"{self._name}, come on!") # Test Cases: dog1 = Dog("Isis", "Dalmatian", 15) dog1.eat("Steak") dog1.make_sound() dog1.call() cat1 = Cat("Puss", "Persian", 4) cat1.eat("Tuna") cat1.make_sound() cat1.call() # Update your local session git repository and push to git with the commit message of Add activity code s04. # Add the repo link in Boodle for s04.