/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 ?
hmmm poderia ser 1 pouco + orientado a objetos… que tal criar um objeto porta ??
[code]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;
}
}[/code]
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
[code]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();
}
}[/code]
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)");
}
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
[code] 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(); [/code]
}