[RESOLVIDO] Exercicio FJ-11 4.14 - PARTE 3

Galera to aqui conseguindo quase 100% do exercicio e fiquei preso em uma parte.

Vejam só.

public class Porta {

    boolean aberta;
    String cor;

    void abre() {
        aberta = true;
    }

    void fecha() {
        aberta = false;
    }

    void pinta(String s) {
        this.cor = s;
    }

    void texto() {
         System.out.println("Porta de Cor: " + this.cor);
        
    }

    void estaAberta() {
        
        
        if (aberta == true) {
            System.out.println("Esta aberta!");
        } else  {
            System.out.println("Esta fechada!");
        }
        
    }
}

Até ai beleza, então o código pra rodar.

public class TesteCasa {

    public static void main(String[] args) {

        Casa novaCasa = new Casa();
        novaCasa.cores("Branca");
        novaCasa.textoCasa();

        Porta porta1 = new Porta();
        porta1.pinta("Preto");
        porta1.texto();
        porta1.abre();
        porta1.estaAberta();

        Porta porta2 = new Porta();
        porta2.pinta("Azul");
        porta2.texto();
        porta2.fecha();
        porta2.estaAberta();

        Porta porta3 = new Porta();
        porta3.pinta("Vermelho");
        porta3.texto();
        porta3.fecha();
        porta3.estaAberta();
        
        

    }
}

Ai também ta beleza, ai vem o final do problema.

3) Utilize o metodo quantasPortasEstaoAbertas para imprimir o número de portas abertas.

Rs, juro que estou embananado.

Alguem pode ajudar?

Abraço

Se eu entendi o que vc quer vc pode criar um list e add as abertas:

[code]static List lista = new ArrayList();

void abre() {
aberta = true;
lista.add(aberta);
}

void fecha(){

aberta = false;
lista.remove(lista.size()-1);

}

int quantasPortasEstaoAbertas(){

return lista.size() -1;

}[/code]

obs: fiz o cod aqui no Guj se estiver errado alguem ai corrija =D

vocë também pode utilizar uma variável estática para contar o número de portas abertas

public class Porta {

	public static int portasAbertas = 0;
	
    boolean aberta;
    String cor;

    void abre() {
        aberta = true;
        portasAbertas++;
    }

    void fecha() {
        aberta = false;
    }

    void pinta(String s) {
        this.cor = s;
    }

    void texto() {
         System.out.println("Porta de Cor: " + this.cor);
        
    }

    void estaAberta() {        
        
        if (aberta == true) {
            System.out.println("Esta aberta!");
        } else  {
            System.out.println("Esta fechada!");
        }
        
    }
    
    int quantasPortasEstaoAbertas() {
    	return portasAbertas;
    }
}

public class TesteCasa {

    public static void main(String[] args) {

        Porta porta1 = new Porta();
        porta1.pinta("Preto");
        porta1.texto();
        porta1.abre();
        porta1.estaAberta();

        Porta porta2 = new Porta();
        porta2.pinta("Azul");
        porta2.texto();
        porta2.fecha();
        porta2.estaAberta();

        Porta porta3 = new Porta();
        porta3.pinta("Vermelho");
        porta3.texto();
        porta3.fecha();
        porta3.estaAberta();
        
        System.out.println(porta3.quantasPortasEstaoAbertas());
        
    }
}

dica:

não é necessário:

if (aberta == true) { 

faça somente:

if (aberta) { 

aberta já é um atributo booleano!

[quote=Gerson da S. Lima]vocë também pode utilizar uma variável estática para contar o número de portas abertas

[code]
void abre() {
aberta = true;
portasAbertas++;
}

void fecha() {
    aberta = false;
}

[/code][/quote]

Convém actualizar também quando fecha a porta :slight_smile:

void fecha() { aberta = false; portasAbertas--; }

Além de que neste momento nada impede que se tente abrir uma porta já aberta.

[code]
void abre() {
if (aberta){
System.out.println(“Não pode abrir uma porta já aberta!”);
} else {
aberta = true;
portasAbertas++;
}
}

void fecha() {
    if (aberta){
         aberta = false;
          portasAbertas--;
    } else {
           System.out.println("Não pode fechar uma porta já fechada!");  
    }
}[/code]

Ae grato pelo auxilio de todos, claro, faz total sentido.

Gostei muito do exemplo simples do Gerson, funcionou corretamente.

E pmlm, valeu pela dica, com certeza um dia eu vou precisar usar isso.

Abraço e grato a todos que ajudaram.

Oi pessoal, alguem poderia colocar o método estaAberto em boolean para que eu possa ver como ficaria? Eu tb estou resolvendo esse exercicio e fiz do msm jeito que está no enunciado, porém a apostila pede para que crie o método estaAberta como boolean.