[QUASE-RESOLVI]puxando o método de um tipo classe por outros metodos/classes[ajuda plz]

4 respostas
BrenoSalgado

e aí galera, sou novo no fórum..

estudei um poco de java por conta própria e agora to num curso na eibnet... então ocorreu o seguinte
hoje em uma das aulas tive um excercício que eu criaria a classe Formas, que teria um método abstrato desenhar
criaria uma classe Medidas que seria usado como tipo de dado(Medidas m;)
e depois objetos como circulo que iam desenvolver o desenhar()

tive duvida na aula, depois consegui fisgar um pouco, cheguei em casa querendo refazer pra aprofundar, mas no meu objeto circulo não to conseguindo fazer o setRaio....

aí vai o código simplificado..

classe medidas
public class Medidas {

	public static final double PI = 3.1415;
	
	private double raio;

            public double getRaio() {
		return raio;
	}
	
	public void setRaio(double raio) {
		this.raio = raio;
	}
formas
public abstract class Formas {

	Medidas m;
	
//	construtor
	public Formas(){
		
	}
	
	public Medidas getMedidas() {
		return m;
	}
	
	public void setMedidas(Medidas m){
		this.m = m;
	}

e aqui onde eu empaquei

public abstract class Circulo extends Formas{

		
	public Medidas setRaio(double raio){
		
	}

no set tentei enfiar de tudo quanto é jeito... tipo
Formas().setRaio(raio)

não to lembrando mais :/

se pudessem me explicar o que eu tenho que fazer e porquê(opcional :P) eu agradeceria muito!

4 Respostas

BrenoSalgado

opa, consegui sacar agora...

tive que fazer getMedidas().setRaio(numero);

agora vai eu acho :b

-------------------///------------------------

então, na IDE ficou tudo certo depois disso...

public static void main(String[] args) {
		
		Medidas m = new Medidas();
		Circulo c = new Circulo();
		
		c.setRaio(2.0);
		System.out.println(c.getRaio());
		c.desenhar();

tava tudo bonitinho mas na hora de rodar deu esse erro...

Exception in thread "main" java.lang.NullPointerException
at br.com.formas.modelos.Circulo.setRaio(Circulo.java:7)
at br.com.formas.main.DemoFormas.main(DemoFormas.java:12)

B

Dica 1: NullPointerException acontece somente quando alguém esqueceu de instanciar e atribuir um objeto à uma variável.

Dica 2: Tente fazer os programas sem usar gets e sets.

BrenoSalgado

opa, valeu pelas dicas bruno :slight_smile:

descobri mais ou menos o que houve…

na classe formas se eu não instanciar Medidas ele vai dar nullpointer…
MAS se não me engano o excercício era sobre usar Medidas como um tipo de dado complexo, ou será que eu to viajando…

pq eu tive impressão que apenas se criava a classe, importava e usava-se ela como um tipo de dado, sem precisar instanciar
mas talvez só tive a impressão errada, vcs que conhecem mais por favor me dêem uma luz

B

BrenoSalgado:
opa, valeu pelas dicas bruno :slight_smile:

descobri mais ou menos o que houve…

na classe formas se eu não instanciar Medidas ele vai dar nullpointer…
MAS se não me engano o excercício era sobre usar Medidas como um tipo de dado complexo, ou será que eu to viajando…

pq eu tive impressão que apenas se criava a classe, importava e usava-se ela como um tipo de dado, sem precisar instanciar
mas talvez só tive a impressão errada, vcs que conhecem mais por favor me dêem uma luz

Tipo de dado complexo: Qualquer estrutura que agregue mais de um tipo de dados simples.

Classes são somente moldes dos quais objetos serão criados. Objetos não existirão até os instanciemos.

Quanto ao exercício:

Forma é um conceito abstrato do qual você pode tirar formas concretas, como Círculo, Quadrado, Triângulo. Dessa maneira, Círculo é um Forma, Quadrado é uma Forma, Triângulo é uma Forma.

Com esse texto já podemos tirar que Forma será pelo menos uma classe abstrata, e que Círculo, Quadrado e Triângulo são classes concretas que especializam o conceito de forma, portanto usamos a palavra-chave extends.

Outra parte é que Forma tem o método encarregado de desenhar sua própria forma. Porém, Forma é abstrato, e só podemos desenhar formas concretas. Desse jeito, quem tem a implementação de desenhar a si mesmo são Círculo, Quadrado e Triângulo. Os três terão seus próprios métodos desenhar que implementarão aquele definido em Forma.

Quanto à medida, metro, centímetro, quilômetro são medidas de distância, raio é somente uma propriedade da forma, no caso, somente do Círculo. Quadrado terá as medidas dos seus lados(que como é um quadrado, são todas a mesma), e triângulo tem a medida de seus três lados (e se quiser também, de seus ângulos internos).

Com isso você terá atributos diferentes que podem estar dentro de cada forma, e todos são medidas:

Medida raio;

Medida lado;

Medida ângulo;

E medida sempre tem um valor e uma unidade de medida para ela. Esses são os dois atributos da classe Medida.

Criado 11 de setembro de 2008
Ultima resposta 12 de set. de 2008
Respostas 4
Participantes 2