Skip to main content
`Ctrl`+`K`

# Object-Oriented Programming

Read Inheritance before you start with the exercises.

## Abstract Animals

Create a class `Animal` encapsulating an animal. Members:

- variable `legs` (number of legs provided to the constructor),

- variable `weight` (weight of the animal provided to the constructor,

- function `is_lightweight` (returns `True` if weight is below 10 kg, `False` else),

- function `show_up` (show an ASCII art representation of the animal),

- function `say_something` (a virtual method).

The `show_up` method has to take into account the `legs` variable. Up to the number of legs we do not know anything about the animal’s appearance. Be creativ and print an abstract animal with the correct number of legs!

No idea? What about this 8-legged abstract animal:

    (########):
     //||||\\

Bonus: Everytime an `Animal` object is created a message ‘An animal with … legs is hiding somewhere.’

Test your code by creating and showing animals with 0, 1,…, 8 legs.

Solution:

    # your solution

## Dogs

Derive a class `Dog` from the `Animal` class (cf. exercise above). Implement a proper `say_something` method (‘Wau’, for instance) and reimplement `show_up` to show a dog instead of an abstract animal.

Note, that the constructor only takes the dog’s weight as argument. The constructor should call the base class’ constructor to set the correct number of legs (and show the bonus message, if implemented).

In your test code also check if the dog is lightweight.

Solution:

    # your solution

## Sitting Dog

Add methods `sit_down` and `stand_up` to your `Dog` class. Depending on which of both methods was called last, `show_up` shall show a sitting or a standing dog.

Solution:

    # your solution

## Fish

Derive a `Fish` class from `Animal`. Add a member function `to_sticks`. After calling this function once, `show_up` should show 10 fish sticks per kilogram of the fish instead of a live fish.

Don’t forget to implement `say_something` (maybe ‘Blub’ or, more realistic, ‘’).

Solution:

    # your solution