Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: B4rduck en 29 de Noviembre 2014, 06:39
-
Hola!
Dando seguimiento al Curso "Java desde 0", quiero dejar para revisión el ejercicio del apartado que se enuncia en el asunto de este tema.
public class Rueda {
public String tipo;
public double grosor;
public double diametro;
public String marca;
// Constructor
public Rueda () {
tipo = "";
grosor = 0.0d;
diametro = 0.0d;
marca = "";
} // Cierre del constructor
// Métodos para establecer valores a los atributos.
public void setValorTipo (String valorTipo){
tipo = valorTipo;
}
public void setValorGrosor (double valorGrosor){
grosor = valorGrosor;
}
public void setValorDiametro (double valorDiametro){
diametro = valorDiametro;
}
public void setValorMarca (String valorMarca){
marca = valorMarca;
}
// Cierre de los métodos de asignación de valores a los atributos.
// Método para comprobación de las dimensiones de los objetos tipo "Rueda".
public void comprobarDimensiones (){
// If con else if y cláusula final else
if (diametro > 1.4){
System.out.println ("La rueda es para un vehículo grande");
}
else if (diametro <= 1.4 && diametro > 0.8) {
System.out.println ("La rueda es para un vehículo mediano");
}
else {
System.out.println ("La rueda es para un vehículo pequeño");
}
// If sencillo
if (diametro > 1.4 && grosor < 0.4 || diametro <= 1.4 && diametro > 0.8 && grosor < 0.25){
System.out.println ("El grosor para esta rueda es inferior al recomendado");
}
}
}
Desde ya, agradezco todos sus comentarios, sugerencias y por supuesto, la amabilidad de tomarse el tiempo para revisar mi trabajo.
Saludos!
-
Hola Arja!
Aunque tu programa funciona correctamente en relación a lo que pide el enunciado, (comprobar dimensiones) en tu código se pueden notar algunos puntos que se pueden corregir.
1ro: Declaras las variables como public. Lo correcto es declarar toda variable como private y no como public, mas adelante conforme avances en el curso veras en que circunstancias es preferible declarar una variable como public o private o protected, por ahora y mientras no domines este tema, acostúmbrate a declarar toda variable como private.
2do: En el constructor de la clase, a las variables de tipo double le agregas una "d" al final del valor inicial asignado, (diametro = 0.0d;) esto no es que sea incorrecto pero si es opcional, agregar o no agregar la "d" al final no afecta el funcionamiento del código, a diferencia de las variables de tipo float donde si es obligatorio incluir una "f" al final para que el compilador no arroje un error de tipo: incompatible types. interpretando que estamos intentando asignar un valor booleano (0.0) a una variable que espera un valor float. (0.0f) Esto te lo comento solo para que tengas conocimiento sobre el asunto, pero en tu codigo es opcional que uses 0.0 y/o 0.0d.
3ro: Los nombres que asignas a los métodos setters no son de un todo correctos, el nombre de un método set o un método get ha de ser exactamente el mismo nombre de la variable relacionada a este, mas el prefijo get o set ante puesto a el nombre de dicha variable.
Ejemplo: setDiametro(double valorDiametro); en lugar de setValorDiametro(double valorDiametro); para la variable diametro donde valorDiametro es el nombre de un parámetro requerido por este método y que no debe de tener relación con el nombre del método en si.
4to: No has incluido los métodos getters en este ejercicio, a parte de que el enunciado lo requiere, acostumbrarte a incluir los metodos getters correspondientes a cada clase, te ayudara mucho en tus futuros códigos, mi consejo es que siempre incluyas los métodos setter y getters correspondientes en todas las clases que diseñes.
En cuanto al uso de condicionales if else y if con else if, veo que lo has dominado muy bien en este ejercicio.
Corrige estos puntos en tus futuros ejercicios y continua adelante.
Saludos!
-
Es excelente Sniper, te agradezco tus observaciones! Y de haber comprendido los puntos señalados en tu respuesta anterior, creo haber realizados los cambio apegándome a ellos; aquí el código para que puedas revisarlo y si en un dado caso hiciese falta algo o se reflejase algo incorrecto, espero contar con tu valiosa ayuda para corregirlo.
public class Rueda {
private String tipo;
private double grosor;
private double diametro;
private String marca;
// Constructor
public Rueda(){
tipo = "";
grosor = 0.0;
diametro = 0.0;
marca = "";
} // Cierre del constructor
// Métodos para establecer valores a los atributos.
public void setTipo(String valorTipo){
tipo = valorTipo;
}
public void setGrosor(double valorGrosor){
grosor = valorGrosor;
}
public void setDiametro(double valorDiametro){
diametro = valorDiametro;
}
public void setMarca(String valorMarca){
marca = valorMarca;
}
// Cierre de los métodos de asignaci?n de valores a los atributos.
// Métodos para obtener los valores de los atributos
public String getTipo(){
return tipo;
}
public double getGrosor(){
return grosor;
}
public double getDiametro(){
return diametro;
}
public String getMarca(){
return marca;
} // Cierre de los métodos getters.
// Método para comprobación de las dimensiones de los objetos tipo "Rueda".
public void comprobarDimensiones(){
// If con else if y cl?usula final else
if(diametro > 1.4){
System.out.println("La rueda es para un vehículo grande");
}
else if(diametro <= 1.4 && diametro > 0.8){
System.out.println("La rueda es para un vehículo mediano");
}
else{
System.out.println("La rueda es para un vehículo peque?o");
}
// If sencillo
if(diametro > 1.4 && grosor < 0.4 || diametro <= 1.4 && diametro > 0.8 && grosor < 0.25){
System.out.println("El grosor para esta rueda es inferior al recomendado");
}
}
}
Desde ya, muy agradecido con tu apoyo!
Saludos!
-
Hola.Tengo una duda con respecto al ejercicio.¿Seria correcto poner el método para obtener los valores antes de los getters?Como en el siguiente código o ¿Estaría mal?
public class Rueda {
private String tipo;
private double grosor;
private double diametro;
private String marca;
public Rueda (){
tipo="";
grosor=0.00;
diametro=0.00;
marca="";
}
public void setTipo(String valorTipo){
tipo=valorTipo;
}
public void setGrosor(double valorGrosor){
grosor=valorGrosor;
}
public void setDiametro(double valorDiametro){
diametro=valorDiametro;
}
public void setMarca(String valorMarca){
marca=valorMarca;
}
public void comprobarDimensiones(){
if (diametro>1.4){
System.out.println("La rueda es para un vehiculo grande");
}
else if(diametro<=1.4 && diametro > 0.8){
System.out.println("La rueda es para un vehiculo mediano");
}
else{
System.out.println("La rueda es para un vehiculo pequeño");
}
if (diametro >1.4 && grosor < 0.4 || diametro <= 1.4 && diametro >0.8 && grosor <0.25){
System.out.println("El grosor para esta rueda es inferior al recomendado");
}
}
public String getTipo(){
return tipo;
}
public double getGrosor(){
return grosor;
}
public double getDiametro(){
return diametro;
}
public String getMarca(){
return marca;
}
}
-
Hola Rodrigo_avia.
Realmente no afecta al funcionamiento del programa donde situas los métodos setters y getters. Sin embargo es recomendable ponerlos juntos. Dependiendo de tus gustos o preferencias, o de lo te exijan en un puesto de trabajo, se pueden colocar antes o después del resto de métodos o funciones de la clase. No importa si pones antes los getters y después los setters o lo haces al revés. También puedes poner un método set y a continuación su método get, y así sucesivamente con cada atributo de la clase.
Personalmente yo normalmente establezco los métodos setters y getters tras la declaración de los constructores de la clase (salvo algún caso particular). Y suelo intercalarlos: establezco el set y el get para un atributo, después el del siguiente, etc etc. Todo ello con el fin de facilitar la lectura y comprensión del código.
Una vez dicho esto... sientete libre de hacerlo como prefieras.
Un saludo!
-
Ahora esta mucho mejor Arja ;)
Saludos!