Boa tarde,
Eu estou fazendo um exercício da apostila FJ11 da Caelum que diz o seguinte:
Programa 3
Classe: Casa Atributos: cor, porta1, porta2, porta3 Método: void pinta(String s), int quantasPortasEstaoAbertas()
Crie uma casa e pinte-a. Crie três portas e coloque-as na casa; abra e feche as mesmas como desejar.
Utilize o método quantasPortasEstaoAbertas para imprimir o número de portas abertas.
Eu já tinha criado uma classe Porta em um exercício anterior, então procurei reutilizar a mesma. Abaixo estão as classes que criei:
public class Porta {
public boolean aberta;
private String cor;
public int portaAberta;
double dimensaoX;
double dimensaoY;
double dimensaoZ;
public void abre(){
if(aberta != true){
this.aberta = true;
portaAberta++;
System.out.println("Abrindo porta "+portaAberta);
}
}
public void fecha(){
if(aberta != false){
this.aberta = false;
portaAberta--;
System.out.println("Fechando porta "+portaAberta);
}
}
public void pinta(String s){
this.cor = s;
System.out.println("A porta é da cor "+ cor);
}
public boolean estaAberta(){
return aberta;
}
public void Mostra(boolean _aberta){
this.aberta = _aberta;
if(this.aberta == true){
System.out.println("A porta está aberta");
}
else {
System.out.println("A porta está fechada");
}
System.out.print("\ndimensões:\nX: " + dimensaoX + "\nY: "
+ dimensaoY + "\nZ: " + dimensaoZ + "\n");
}
}
public class Casa {
String cor;
Porta porta;
int portas;
public void pinta(String s){
cor = s;
}
public int quantasPortasEstaoAbertas(int q){
portas = q;
return portas;
}
public void mostraPorta(int i){
portas = i;
System.out.println(portas+" portas estao abertas");
}
}
public class Principal {
public static void main(String[] args) {
Casa casa = new Casa();
Porta porta1 = new Porta();
Porta porta2 = new Porta();
casa.porta = porta1;
casa.porta = porta2;
porta1.abre();
porta1.fecha();
porta1.abre();
porta2.abre();
casa.mostraPorta(casa.porta.portaAberta);
}
}
Resultado:
Abrindo porta 1
Fechando porta 0
Abrindo porta 1
Abrindo porta 1
1 portas estao abertas
Não entendi como posso usar o método quantasPortasEstaoAbertas(int) para imprimir o número de portas abertas.
O problema é que o resultado deveria mostrar que 2 portas estão abertas, mas o programa considera a variável "portaAberta" diferente para cada objeto do tipo Porta que foi criado. Como faço?