Buenas Pepote21 comento algunas cuestiones sobre el ejercicio
Un nombre de clase como E907_C no es un nombre adecuado. Los nombres de clase deben definir qué hace la clase y permitir hacer una referencia a "he creado un objeto de tipo ...". He creado un objeto de tipo E0907_C no es adecuado.
Tienes algunos errores de concepto. Por ejemplo:
public void setImpuesto(BigDecimal impInicial,BigDecimal porcImpuestos) {
impuesto=impInicial.multiply(porcImpuestos).divide(BigDecimal.valueOf(100));
impuesto=impuesto.setScale(2, RoundingMode.HALF_UP);
System.out.println("El impuesto a pagar es: "+impuesto);
}
No es un método bien definido desde el punto de vista de la programación orientada a objetos. Un método set se usa para establecer el valor del atributo de una clase. En este caso estás mezclando operaciones que no corresponden a un set con mostrar un mensaje por pantalla, etc.
Que el programa haga lo que se pretende no significa que esté bien diseñado.
Para hacer buenos diseños es recomendable repasar los conceptos y hacer los ejercicios del curso de Java básico:
http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188Salu2