4.14 - Fixando conhecimento - Programa 2

1 resposta
T

Enunciado do exercício:

Programa 2
Classe: Porta Atributos: aberta, cor, dimensaoX, dimensaoY, dimensaoZ Métodos: void abre(), void fecha(),
void pinta(String s), boolean estaAberta()
Crie uma porta, abra e feche a mesma, pinte-a de diversas cores, altere suas dimensões e use o método
estaAberta para verificar se ela está aberta.

De acordo com o enunciado, queria saber se o código abaixo está correto:

Classe Porta

public class Porta {
    boolean aberta;
    String cor;
    double dimensaoX;
    double dimensaoY;
    double dimensaoZ;
    
    void abre(){
        if(aberta != true){
            this.aberta = true;
            System.out.println("Abrindo porta");
        }
    }
    
    void fecha(){
        if(aberta != false){
            this.aberta = false;
            System.out.println("Fechando porta");
        }
    }
    
    void pinta(String s){
        this.cor = s;
    }
    
    boolean estaAberta(){
        return aberta;
    }
    
    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("A porta é da cor " + cor + "\ndimensões:\nX: "
                         + dimensaoX + "\nY: " + dimensaoY + "\nZ: "
                         + dimensaoZ + "\n");        
    }
}

Classe Principal

public class Principal {
    public static void main(String[] args) {
        Porta p1 = new Porta();
        p1.pinta("Vermelha");
        p1.pinta("Amarela");
        p1.dimensaoX = 5.0;
        p1.dimensaoY = 8.5;
        p1.dimensaoZ = 7.5;
        p1.abre();
        p1.fecha();
        p1.Mostra(p1.estaAberta());
        p1.abre();
        p1.Mostra(p1.estaAberta());
        p1.fecha();
        p1.Mostra(p1.estaAberta());
    }
}

1 Resposta

marcos4ft

Algumas dicas:

  • Encapsule sua classe. Coloque as variaveis como private e crie os métodos gets e sets
  • Nesse caso, if(aberta != true), você pode apenas fazer if(!aberta), ja que a variavel aberta é booleana. E não faz sentido vc setar ela pra false, ja que só vai entrar no if se ela de fato for false
  • tenta seguir o padrão de nomeclatura. Nome de métodos sempre começam com letra minuscula.

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("A porta é da cor " + cor + "\ndimensões:\nX: " + dimensaoX + "\nY: " + dimensaoY + "\nZ: " + dimensaoZ + "\n"); }

No código acima, vc não precisa passar parametro pra ele, ja que a classe ja tem a variavel aberta. Veja que vc está passando como parametro, o próprio valor da variavel aberta

p1.Mostra(p1.estaAberta());

No mais, acho q é isso, qualquer dúvida estamos aí

Edit:
Desconsidera “E não faz sentido vc setar ela pra false, ja que só vai entrar no if se ela de fato for false”, agora q eu vi que vc ta setando o valor contrário :oops:

Criado 27 de abril de 2012
Ultima resposta 27 de abr. de 2012
Respostas 1
Participantes 2