Buenas... Me remito a la entrega CU00652B del manual de programación en Java para no expertos.
"Verifica con la calculadora si este valor es correcto y trata de razonar sobre por qué se obtiene este valor y no otro. Crea también distintos objetos de tipo Deposito y utiliza sus métodos. En el caso de resultados numéricos, comprueba si los resultados que te ofrece el ordenador son correctos comparándolos con los resultados que te ofrece una calculadora."
Si, obtengo como resultado el mismo valor.
Coinciden con los cálculos hechos con la calculadora debido a que es la sumatoria del volumen de los 3 depósitos.
Consultas:(Incluyo el código escrito en el ejercicio de referencia.)
public class Deposito{
private float diametro;
private float altura;
private String idDeposito;
// Constructor sin parámetros auxiliares.
public Deposito(){
this(0,0,"");
}
//Constructor de la clase que pide los parámetros necesarios
public Deposito (float valor_diametro, float valor_altura, String valor_idDeposito) {
if (valor_diametro > 0 && valor_altura > 0) {
diametro = valor_diametro;
altura = valor_altura;
idDeposito = valor_idDeposito;
} else {
diametro = 10;
altura = 5;
idDeposito = "000";
System.out.println ("Creado depósito con valores por defecto diametro 10 metros altura 5 metros id 000" );
}
}
public void setValoresDeposito (String valor_idDeposito, float valor_diametro, float valor_altura) {
idDeposito = valor_idDeposito;
diametro = valor_diametro;
altura = valor_altura;
if (idDeposito !="" && valor_diametro > 0 && valor_altura > 0) {
} else {
System.out.println ("Valores no admisibles. No se han establecido valores para el depósito");
//Deposito (0.0f, 0.0f, ""); Esto no es posible. Un constructor no es un método y por tanto no podemos llamarlo
idDeposito = "";
diametro = 0;
altura = 0;
}
}
public float getDiametro () { return diametro; } //Método de acceso
public float getAltura () { return altura; } //Método de acceso
public String getIdDeposito () { return idDeposito; } //Método de acceso
public float valorCapacidad () { //Método tipo función
float capacidad;
float pi = 3.1416f; //Si no incluimos la f el compilador considera que 3.1416 es double
capacidad = pi * (diametro/2) * (diametro/2) * altura;
return capacidad;
}
}
Puntualmente dentro del setter:
public void setValoresDeposito (String valor_idDeposito, float valor_diametro, float valor_altura) {
idDeposito = valor_idDeposito;
diametro = valor_diametro;
altura = valor_altura;
if (idDeposito !="" && valor_diametro > 0 && valor_altura > 0) {
} else {
System.out.println ("Valores no admisibles. No se han establecido valores para el depósito");
//Deposito (0.0f, 0.0f, ""); Esto no es posible. Un constructor no es un método y por tanto no podemos llamarlo
idDeposito = "";
diametro = 0;
altura = 0;
}
}
1. En la condición del if se utiliza el operador lógico && (and) pero no debería ser || (or)?
Si sólo el diámetro o la altura es igual a 0 no sería un error?
Es decir, como está expresado el condicional sería posible que algunos de los dos valores mencionados fuese igual a 0 y daría por válido el depósito.
(ídem para el constructor.)
2. Y desde mi ignorancia, el setter puede ejecutarse sin previa creación del objeto?
Entiendo que no. Y si primero se crea el objeto, por el constructor los valores no serían 0 siendo innecesario el condicional, es así?
Disculpas si estoy diciendo alguna burrada pero siento que necesario consultarlo para aprender

Gracias mil, saludos. Edu.