Unit 9

Source Code

import parent
import child
import animal
import vehicle
import mathtools
import grandparent
import mother
import mro

def main():
    done = False
    print("Welcome to the Main Function")
    while not done:
        print("Menu")
        print("E1 - Example 1")
        choice = input("Choice: ")
        match choice:
            case "E1":
                example1()
            case "E2":
                example2()
            case "E3":
                example3()
            case "E4":
                example4()
            case "E5":
                example5()
            case "E6":
                example6()
            case "E7":
                example7()
            case "E8":
                example8()
            case "E9":
                example9()
            case "E10":
                example10()
            case "E11":
                example11()
            case "E12":
                example12()
            case "Q":
                print("Quitting!")
                done = True
            case _:
                print("Invalid, try again!")

# define Example 1 Function
def example1():
    p = parent.Parent()
    p.greet()

# define Example 2 Function
def example2():
    c = child.Child()
    c.greet()

# define Example 3 Function
def example3():
    dog = animal.Dog("Buddy")
    cat = animal.Cat("Whiskers")
    dog.speak()
    cat.speak()

# define Example 4 Function
def example4():
    my_car = vehicle.Car("Toyota", 4, "gasoline")
    my_car.info()

# define Example 5 Function
def example5():
    # Calling static methods without creating an object
    sum_result = mathtools.MathTools.add(5, 3)
    product_result = mathtools.MathTools.multiply(4, 6)

    print("Sum:", sum_result)
    print("Product:", product_result)

# define Example 6 Function
def example6():
    c = grandparent.Child()
    # I am the Child
    c.show_child()
    # I am the Parent
    c.show_parent()
    # I am the Grandparent
    c.show_grandparent()

# define Example 7 Function
def example7():
    c = mother.Child()
    # I am the Child
    c.show_child()
    # I am the Mother
    c.show_mother()
    # I am the Father
    c.show_father()

# define Example 8 Function
def example8():
    a = mro.A()
    a.show()

# define Example 9 Function
def example9():
    b = mro.B()
    b.show()

# define Example 10 Function
def example10():
    c = mro.C()
    c.show()

# define Example 11 Function
def example11():
    d = mro.D()
    d.show()

# define Example 12 Function
def example12():
    e = mro.E()
    e.show()

# do not remove!
main()

parent.py

class Parent:
    def __init__(self):
        print("Parent constructor")

    def greet(self):
        print("Hello from Parent")

child.py

import parent

class Child(parent.Parent):
    def __init__(self):
        # calls Parent constructor
        super().__init__()
        print("Child constructor")

    # method overriding
    def greet(self):
        print("Hello from Child")

animal.py

class Animal:
    def __init__(self, name):
        self.name = name

    def speak(self):
        print(self.name + " makes a sound")

class Dog(Animal):
    def speak(self):
        print(self.name + " says Woof!")

class Cat(Animal):
    def speak(self):
        print(self.name + " says Meow!")

vehicle.py

class Vehicle:
    def __init__(self, brand, wheels):
        self.brand = brand
        self.wheels = wheels

    def info(self):
        print(self.brand + " has " + str(self.wheels) + " wheels.")

class Car(Vehicle):
    def __init__(self, brand, wheels, fuel_type):
        super().__init__(brand, wheels)
        self.fuel_type = fuel_type

    def info(self):
        super().info()
        print("It runs on " + self.fuel_type)

mathtools.py

class MathTools:
    @staticmethod
    def add(x, y):
        return x + y

    @staticmethod
    def multiply(x, y):
        return x * y

grandparent.py

class Grandparent:
    def show_grandparent(self):
        print("I am the Grandparent")

class Parent(Grandparent):
    def show_parent(self):
        print("I am the Parent")

class Child(Parent):
    def show_child(self):
        print("I am the Child")

mother.py

class Mother:
    def show_mother(self):
        print("I am the Mother")

class Father:
    def show_father(self):
        print("I am the Father")

class Child(Mother, Father):
    def show_child(self):
        print("I am the Child")

mro.py

class A:
    def show(self):
        print("A.show()")

class B(A):
    def show(self):
        print("B.show()")

class C(A):
    def show(self):
        print("C.show()")

class D(B, C):
    pass

class E(C, B):
    pass

Last updated