Dúvidas sobre classe, objetos, métodos, atributos, etc

Bom Dia pessoALL,



Estou iniciando em Java e ainda tenho muitas dúvidas, por isso eu resolvi mostrar um exemplo de um programa e ao lado colocar o que realmente me deixa confusa…





class ClasseSuper {

int x, y;

void mostraValores(){ qual a função do void aqui?..

System.out.println("valor de x = "+ x +", valor de y = "+ y);

}

// Como posso imprimir x e y se eles ainda não receberam valor nenhum?..

}





class ClasseSub extends ClasseSuper {

// A classe ClasseSub é uma subclasse de ClasseSuper.

int z;

void mostraZ()

System.out.println("valor de z = " + z);

} // Fim de mostraZ() mostraZ seria um método dessa classe certo?..



void soma(){ Outro método?..

System.out.println(

"x + y + z = "+ (x + y + z));

} // Fim de soma()

} // Fim de class ClasseSub.



class DemoHeranca {

public static void main(String args[]){

ClasseSuper objSuper = new ClasseSuper();

ClasseSub objSub = new ClasseSub();



// Usando a superclasse.

objSuper.x = 20;

objSuper.y = 30;

System.out.println("Valores de objSuper: ");

objSuper.mostraValores(); // não entendi o que foi feito aqui…

System.out.println();



// A subclasse tem acesso a todos os membros public da superclasse.

objSub.x = 5;

objSub.y = 6;

objSub.z = 7;



System.out.println("Valores de objSub: ");

objSub.mostraValores();

objSub.mostraZ();

System.out.println();



System.out.println("Soma x + y + z em objSub: ");

objSub.soma();

} // Fim de main()

} // Fim de class DemoHeranca.





Com certeza são dúvidas bobas, mas imagine só para quem não entende nada de programação mas que precisa fazer prova disso…



Gostaria muito que alguém de boa vontade me ajudasse nessa situação.



Desde já agradeço




Cátia :slight_smile:

olha so…



class ClasseSuper {

int x, y;

void mostraValores(){ qual a função do void aqui?..

System.out.println("valor de x = "+ x +", valor de y = "+ y);

}

// Como posso imprimir x e y se eles ainda não receberam valor nenhum?..

}



–> O void significa que esse método não retorna nenhum valor. E qto a imprimir os valores de x e y, sera impresso os valores default para variaveis do tipo int (zero)



class ClasseSub extends ClasseSuper {

// A classe ClasseSub é uma subclasse de ClasseSuper.

int z;

void mostraZ()

System.out.println("valor de z = " + z);

} // Fim de mostraZ() mostraZ seria um método dessa classe certo?..



void soma(){ Outro método?..

System.out.println(

"x + y + z = "+ (x + y + z));

} // Fim de soma()

} // Fim de class ClasseSub.



—> Ambos mostraZ() e soma() são métodos da ClasseSub, pois a palvra chave void so pode ser especificada em definição de métodos



class DemoHeranca {

public static void main(String args[]){

ClasseSuper objSuper = new ClasseSuper();

ClasseSub objSub = new ClasseSub();



// Usando a superclasse.

objSuper.x = 20;

objSuper.y = 30;

System.out.println("Valores de objSuper: ");

objSuper.mostraValores(); // não entendi o que foi feito aqui…

System.out.println();



—> Nessa linha :

objSuper.mostraValores(); // não entendi o que foi feito aqui…

você esta chamando o metodo mostraValores() do objeto objSuper q foi criado logo acima…



// A subclasse tem acesso a todos os membros public da superclasse.

objSub.x = 5;

objSub.y = 6;

objSub.z = 7;



System.out.println("Valores de objSub: ");

objSub.mostraValores();

objSub.mostraZ();

System.out.println();



System.out.println("Soma x + y + z em objSub: ");

objSub.soma();

} // Fim de main()

} // Fim de class DemoHeranca.





Acho que eu postei uma resposta de maneira errada, por isso ela não apareceu aqui…



Bem, teria como alguém me explicar de alguma forma qual a função

de um método, do objeto e dos atribudos dentro de uma classe…



Essas dúvidas embolam na minha cabeça, acho que é por isso que eu não consigo achar uma lógica nos programas feito em Java…



Tenho achado tudo muito confuso…




Seu problema então é deficiência em orientação a objetos e não em JAVA, o JAVA em si é fácil de entender, tem sintaxe parecidissima com C e C++, se for implementar o mesmo programa orientado a objetos em C++ vc vai ter o mesmo problema, ou seja, OO. Estude mais OO pois o conceito não é tão fácil como parece, que vc entendendo OO a codificação ficará muito mais fácil de entender e de implementar.

…Eu até já li sobre Liguagem Orientada a Objeto, mas na prática eu não consigo assimilar isso ao programa:



Por exemplo:



Classe seria um molde (ex.:Classe Pessoa)

Objeto seria o que compões essa classe (Eu, você, ele…)

Atributos seria o que todos nós temos em comum (cabelo, pés, mãos)



E o método?.. O que seria?..

Cátia:



Você pode entender os atributos como sendo os substantivos relacionados a uma classe; E os métodos como os verbos.

Um exemplo: Classe ContaCorrente. Substantivos: Código, saldo, agência, etc. Verbos: Abrir, depositar, sacar, tirar saldo/extrato, fechar, etc.

Outro exemplo: Classe Animal. Substantivos: idade, altura, peso, nome, pais, filhos, etc. Verbos: nascer, morrer, comer, reproduzir, defecar, etc.

Outra forma de encarar, seria os atributos como o que uma classe tem e os atributos o que uma classe faz.



Espero que isso ajude,



Rafael Ubiratam Clemente Afonso

Java 2 Certified Programmer

[ Esta mensagem foi editada por: rucafonso em 03-04-2003 15:28 ]

Ajudou D+! (Inclusive nesse momento eu estou estudando para prova…)



Valeu!!!



Cátia