Seguinte galera acabei de fazer esse exercício que estava na apostila de java da caelum:
Programa3
Classe:CasaAtributos:cor,porta1,porta2,porta3Método:voidpinta(Strings),intquantasPortasEstaoAbertas()
Crie uma casa e pinte-a.Crie trêsportas 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.
Resolvi da seguinte maneira:
[code]class exercício_4_14_3 {
String cor;
int porta1;
int porta2;
int porta3;
void pinta(String casacor) {
casacor = "Alaranjada";
}
public int abre(int passavalor) {
return 1;
}
public int fecha(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 + " Portas estão abertas");
}
}
}
[/code]
[code]class exercício_4_14_3_testa {
public static void main(String[] args) {
exercício_4_14_3 casa = new exercício_4_14_3();
casa.cor = "Azul";
casa.porta1 = casa.fecha(casa.porta1);
casa.porta2 = casa.fecha(casa.porta2);
casa.porta3 = casa.abre(casa.porta3);
casa.quantasPortasEstaoAbertas();
}
}[/code]
O código funcionou certinho (não coloquei excessões caso seja uma porta aberta (Está), duas ou mais (Estão)…mas enfim) porém fiquei com algumas dúvidas.
1 - Eu usei o “return”, pelo que eu entendi o return (se for o caso) me retorna para a variavel local “passavalor” o valor 1 que por sua vez é passado para a variável porta1 (por exemplo) é isso que acontece ?
2 - porta1 é uma variável e nesse caso um atributo da classe lass exercício_4_14_3 certo ? se for isso mesmo…tentei chamar o metodo “fecha” da seguinte maneira: casa.porta1.fecha() ou mesmo casa.porta1.fecha(casa.porta1) mas o seguinte erro apareceu:
exercÝcio_4_14_3_testa.java:6: int cannot be dereferenced
casa.porta1.fecha(casa.porta1) = casa.fecha(casa.porta1);
3 - pensei na seguinte possibilidade: seria meu atributo porta1 que pertence ao objeto casa que estaria chamando o método “fecha” e isso não é possível, correto ? E da forma que eu estava chamando o método, como pelo que parece eh o atributo porta1 que o chama, o método não saberia a qual atributo de qual objeto dar o retorno…correto ? dai vem esse erro…algo ± assim pessoal ?
4 - apenas objetos podem chamar métodos ?
5 - esta correto fazer da seguinte forma: casa.porta3 = casa.abre(casa.porta3); ? ou existe uma forma correta ou melhor de se fazer isso ?
Galera desculpem-me pelo monte de dúvidas mas nas férias não tenho a quem perguntar…ai é o pessoal do guj que sofre =P
Abraços


