This is the implementation of the exercise shown in the book 99 Bottles of OOP A Practical Guide to Object-Oriented Design of Sandi Metz and Katrina Owen.
About the book:
This book creates a simple solution to the "99 Bottles of Beer" song problem, and then applies a series of refactorings to improve the design of the code.
What of the things I like of the book was using Open to extension, close to modification principle and Liskov Substitution principle from SOLID.