Uma das técnicas mais usadas no desenvolvimento de software é a refatoração . Ela consiste em executar uma série de pequenos passos que visam deixar o código mais claro, mais bonito, mais elegante. Normalmente o resultado de uma refatoração é um projeto mais simples e de fácil manutenção. Muitas vezes a refatoração leva a criação de abstrações e generalizações no código. Um exemplo simples: vamos supor que estejamos programando a classe de dados Pessoa . Essa classe contém atributos como nome, peso, idade, idioma que fala. Num segundo momento eu percebo que preciso inserir gatos no meu sistema. Então crio a classe Gato com os atributos nome, peso, sexo e cor do pelo. Em seguida percebo que criei uma ambigüidade. Ambas as classes Gato e Pessoa possuem atributos em comum. Através de uma refatoração, crio a classe Animal com os atributos em comum (nome, peso, sexo) e faço com que as classes Gato e Pessoa ``herdem'' as propriedades de animais. A idéia de extrair abstrações é a...