Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Pepote21 en 30 de Enero 2017, 12:30
-
Hola a todos. Os paso mi código en tres clases. Ejercicio CU00907C del tutorial de java avanzado.
Gracias.
package practicas.avanzadas;
import java.math.BigDecimal;
import java.math.RoundingMode;
/**
* Partiendo de un importe inicial y un porcentaje de impuestos a pagar,
* calcular el porcentaje total y el total a pagar
* @author pepote21
* @version 20170129
*/
public class E907_C {
private BigDecimal impInicial,porcImpuestos,impuesto,impFinal;
public E907_C(){
impInicial=BigDecimal.valueOf(0.0);
porcImpuestos=BigDecimal.valueOf(0.0);
impuesto=BigDecimal.valueOf(0.0);
impFinal=BigDecimal.valueOf(0.0);
}
public BigDecimal getImpInicial() {
return impInicial;
}
public void setImpInicial(BigDecimal impInicial) {
this.impInicial = impInicial;
}
public BigDecimal getPorcImpuestos() {
return porcImpuestos;
}
public void setPorcImpuestos(BigDecimal porcImpuestos) {
this.porcImpuestos = porcImpuestos;
}
public BigDecimal getImpuesto() {
return impuesto;
}
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);
}
public BigDecimal getImpFinal() {
return impFinal;
}
public void setImpFinal(BigDecimal impInicial,BigDecimal impuesto) {
impFinal = impInicial.add(impuesto);
impFinal=impFinal.setScale(2,RoundingMode.CEILING);
System.out.println("El importe final es: "+impFinal);
}
}
package practicas.avanzadas;
import java.math.BigDecimal;
import java.util.Scanner;
/**
* entrada de teclado para BigDecimal
* @author pepote21
* @version 20170129
*/
public class EntradaDeTecladoE907_C {
private BigDecimal entrada;
Scanner sc;
public EntradaDeTecladoE907_C(){
entrada=BigDecimal.valueOf(0.0);
sc=new Scanner(System.in);
}
public void setEntrada(){
entrada=BigDecimal.valueOf(sc.nextDouble());
}
public BigDecimal getEntrada(){
return entrada;
}
}
package practicas.avanzadas;
import java.math.BigDecimal;
/**
* principal para calculo de impuestos
* @author pepote21
* @version 20170129
*/
public class PrincipalE907_C {
public static void main(String[] args){
EntradaDeTecladoE907_C a=new EntradaDeTecladoE907_C();
E907_C b=new E907_C();
System.out.println("Por favor introduzca el importe inicial");
a.setEntrada();
BigDecimal impInicial=a.getEntrada();
System.out.println("Por favor introduzca el porcentaje de impuestos");
a.setEntrada();
BigDecimal porcImpuestos=a.getEntrada();
b.setPorcImpuestos(porcImpuestos);
b.setImpuesto(impInicial,porcImpuestos);
b.setImpFinal(impInicial,b.getImpuesto());
}
}
-
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=188
Salu2
-
Hola Ogramar, encantado de saludarte.
Sobre el error del nombre de clase ya me lo comentaste el ejercicio anterior y lo tengo en cuenta. Aunque encontrarás algún otro ejercicio ya hecho con el mismo error. Como sabras son errores de organización de carpetas pero que rectificaré.
Con respecto al primer curso de java, empecé muy verde y sigo muy verde, pero sigo estudiante mucho como sabreis.
Volveré a java que es lo que más me interesa; no sabía continuar con más temario, pero ahora estoy en css.
Gracias, un saludo a todos.