quantasPortasEstaoAbertas();

2 respostas
R

/3) 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.
/

public class Casa{


  String cor ;
  int porta1;
  int porta2;
  int porta3;

   public void Pinta (String S){
     this.cor = S;
  }

   int portaAberta ( int passavalor){
     return 1; 
  }

   int portaFechada(int passavalor){
     return 0;
  }

   void quantasPortasEstaoAbertas(){
     int soma = porta1+ porta2+ porta3;
     if( soma == 0){
        System.out.println ( " Todas as portas estão fechadas");
     }
     else{ 
        System.out.println ( soma+"  estão abertas ");
     }
  }

}

teste>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>L`^ZV(

public class TesteCasa {
   public static void main ( String [ ] args ){
  
     Casa c1 = new Casa ();
     
     c1.porta1= c1.portaAberta(c1.porta1);
     c1.porta2 = c1.portaFechada(c1.porta2);
     c1.porta3 = c1.portaFechada(c1.porta3);
  
     String [] color = { "Blue  " ,"Vermelha", "Azul" ,"Cinza", "Amarela " };
     c1.Pinta( color [1]);
     System.out.println ("===> Casa Criada  <========( passo 1 )====");
     System.out.println (" A cor da casa é :"+ c1.cor);
     c1.quantasPortasEstaoAbertas();
     System.out.println( " Esse é número de portas abertas na casa!");
  	
  

  
  }

}

Opaa pesssoal fiz esse programinha ae… sou iniciante gostaria de saber se essa é a forma mais simples e certa e se estar certo ?

2 Respostas

Lavieri
hmmm poderia ser 1 pouco + orientado a objetos... que tal criar um objeto porta ??
public class Porta {
    private boolean aberta = false;
    
    public Porta() {
    }
    
    public void abrir() {
        this.aberta = true;
    }
    
    public void fechar() {
        this.aberta = false;
    }

    public boolean isAberta() {
        return aberta;
    }

    public boolean isFechada() {
        return !aberta;
    }
}

Por padrão cria 1 casa com 3 portas, mais vc pode criar um casa com quantas portas quiser...

Caso preciso alterar a quantidade de portas, depois da casa criada, use Collection no lugar de Array

public class Casa {
    private String color;
    private Porta[] portas = new Porta[3];
    
    public Casa() {
         this(3);
    }
    
    public Casa(int numeroDePortas) {
         portas = new Porta[numeroDePortas];
         for(int i = 0; i < portas.length ; i++)
            porta[i] = new Porta();
    }

    //.... outros métodos
   
    //use fecharPorta(1) para fechar a 1° porta e fecharPorta(3) para a terceira...
    public void fecharPorta(int numero) {
        portas[numero-1].fechar();
    }
    
    public void abrirPorta(int numero) {
        portas[numer-1].abrir();
    }
    
    public int quantidadeDePortasAbertas() {
        int portasAbertas = 0;
        for(Porta porta : portas)
            if (porta.isAberta())
                 portasAbertas++;
        return portasAbertas;
    }

    public int quantidadeDePortasFechadas() {
        return portas.length - quantidadeDePortasAbertas();
    }
}

assim seu teste seria facil...

public static void main ( String [ ] args ){ 
    Casa casa = new Casa();
    casa.abrirPorta(1);
    casa.abrirPorta(3);
    System.out.print("A casa está com ");
    System.out.print(casa.quantidadeDePortasAbertas());
    System.out.println(" porta(s) aberta(s)");
}
R

Lavieri também sou iniciante em java, dei uma olhada no teu código vi que você utiliza bem os recursos de orientação à objeto, gostaria
que você me explicasse um parte do teu código que fiquei com dúvida, segue o trecho a baixo comentado com as duvidas

private Porta[] portas = new Porta[3];   // aqui voce  define o tamanho do vetor  na memória certo?
      
    public Casa(int numeroDePortas) {  
         portas = new Porta[numeroDePortas];  // por que que nesse trecho você redefine o tamanho do mesmo vetor, sendo que você ja tinha definido no escopo da classe, ou estou enganado?

    for(int i = 0; i < portas.length ; i++)  
            porta[i] = new Porta();
}
Criado 2 de março de 2009
Ultima resposta 18 de abr. de 2014
Respostas 2
Participantes 3