An introduction to OOP using TDD practices