Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: toni_apr en 17 de Junio 2014, 15:01
-
Hola envío el ejercicio CU00638B para revisión.
Agradecería comentarios en cualquier sentido.
/**
* Descripción de la clase.
*
* @author (Toni)
* @version (0)
*/
public class Motor
{
// Variables de la intancia
int tipoBomba;
String tipoFluido;
String combustible;
/**
* Constructor para objetos de la clase Motor
*/
public Motor()
{
// Inicializa variables
tipoBomba = 0;
tipoFluido = "No hay establecido un valor definido para el tipo de bomba";
combustible = "DesConocido";
}
// A continuación los métodos setters.
public void setTipoBomba ( int valorTipoBomba ) {
tipoBomba = valorTipoBomba;
setTipoFluido ();
}
public void setCombustible (String valorCombustible ) {
combustible = valorCombustible;
}
private void setTipoFluido () {
switch ( tipoBomba ) {
case 0:
tipoFluido = "No hay establecido un valor definido para el tipo de bomba";
break;
case 1:
tipoFluido = "La bomba es una bomba de agua";
break;
case 2:
tipoFluido = "La bomba es una bomba de gasolina";
break;
case 3:
tipoFluido = "La bomba es una bomba de hormigón";
break;
case 4:
tipoFluido = "La bomba es una bomba de pasta alimenticia";
break;
default:
tipoFluido = "No existe un valor válido para este tipo de bomba";
break;
} // fin. switch
}
// A continuación los métodos getters
public int getTipoBomba () { return tipoBomba; }
public String getTipoFluido () { return tipoFluido; }
public String getCombustible () { return combustible; }
// A continuación métodos varios
public void dimeTipoMotor ( String quienLoPregunta ) {
System.out.println ( "Hola " + quienLoPregunta + ", mira. " + tipoFluido +
", y usa como combustible: " + combustible + "." );
if ( dimeSiMotorEsParaAgua () == true ) {
System.out.println ("Ah. Si el agua es para riego, hay que añadir el fertilizante." );
}
}// fin del procedimiento con un parámetro
private boolean dimeSiMotorEsParaAgua () {
boolean motorEsParaAgua = false;
if ( tipoBomba == 1 ) {
motorEsParaAgua = true;
}
return motorEsParaAgua;
}
}// fin de la clase
-
Todo parece que está bien, incluso veo que has introducido algunos toques "creativos", lo que deja claro que comprendes bien lo que estás haciendo. Lo más discutible en este código es este fragmento:
public void setTipoBomba ( int valorTipoBomba ) {
tipoBomba = valorTipoBomba;
setTipoFluido ();
}
Aquí se contraviene el principio de que un método se encargue de una tarea. Normalmente un método hace una cosa concreta: si establece el tipo de bomba no establece el tipo de fluido por ejemplo. Aunque en este caso concreto podría considerarse aceptable si consideras que el tipo de fluido depende del tipo de bomba. Pero si fuera así no te harían falta dos atributos de la clase, te bastaría un atributo y un método para poder saber el otro parámetro. En resumen está correcto pero cuando crees programas debes tener en cuenta el principio un método una tarea.
Saludos
-
Hola César, gracias por tu comentario.
Si, ahora que lo dices en tu nota, si, no había tenido en cuenta esa norma de < un método una tarea >.
Reconozco que me venía muy bien ponerlo todo junto. Pero tomo nota para el futuro.
Gracias.
Sal U2