Os 3 Principais Elementos da Programação Orientada a Objetos (POO) e a Prática dos Princípios SOLID: Da História às Técnicas Avançadas de Projeto