Trabalho Polimorfismo

4 respostas
R

Preciso de ajuda para fazer esse trabalho,

  • public Shape next()
    O método acima possui uma variável do tipo Shape e
    chama o método nextInt(3) do atributo da instância. Esse
    método retorna um número que servirá para decidir qual das
    classes deve ser feito uma instância (Circle, Rectangle ou
    Triangle).

Deve ser retornado um objeto da classe escolhida.
Por fim, deve ser feito uma classe de teste que cria um
objeto da classe RandomGenerator e múltiplas variáveis do tipo
Shape.

Essas últimas são preenchidas através do retorno do
método next() do atributo da classe RandomGenerator. Por fim,
imprima na tela a saída do método draw() de cada uma das
instâncias de Shape criadas.

4 Respostas

edu_fernandes

Posta o que você já fez.

Obs.: Use a tag [code]

renzonuccitelli

Esses dois posts podem te ajudar:

Post 1
Post 2

R

//Classe Shape

import java.util.*;

  public class Shape {

  public void draw() {
      
    }
 }

//Classe Triangle

public class Triangle extends Shape {
  public void draw() {
    System.out.println("Estou desenhando um Triangle");
  }
}

//Classe  Square

public class Square extends Shape {

  public void draw() {
    System.out.println("Estou desenhando um Square");
  }
}

//Classe Circle

public class Circle extends Shape {

  public void draw() {
    System.out.println("Estou desenhando um Circle");
  }
}


//Classe RandomGenerator

public class RandomGenerator {
   RandomGenerator rand = new RandomGenerator();
  public Shape next() {
    switch(rand.nextInt(3)) {
      default:
      case 0: return new Circle();
      case 1: return new Square();
      case 2: return new Triangle();
    }
  }
}

// Classe TestaShapes

public class TestaShapes {
 // private static Test monitor = new Test();// Verificar... se precisa
  private static RandomGenerator rg = new RandomGenerator();
  
  public static void main(String[] args) {
   
      
      Shape[] s = new Shape[3];
    // Preenche o array com shapes:
    for(int i = 0; i < s.length; i++)
      s[i] = rg.next();
    // Faz chamadas a métodos polimórficos:
    for(int i = 0; i < s.length; i++)
      s[i].draw();
    /*monitor.expect(new Object[] {//Só copiei! Nem sei se precisamos dele
      new Test("%% (Circle¦Square¦Triangle)"
        + "\\.draw\\(\\)", s.length)
    });*/
  }
}
B

Vc esqueceu de colocar o [\code] no final do código. Segue abaixo para melhor visualização.

import java.util.*; 

public class Shape { 

public void draw() { 

} 
} 

//Classe Triangle 

public class Triangle extends Shape { 
public void draw() { 
System.out.println("Estou desenhando um Triangle"); 
} 
} 

//Classe Square 

public class Square extends Shape { 

public void draw() { 
System.out.println("Estou desenhando um Square"); 
} 
} 

//Classe Circle 

public class Circle extends Shape { 

public void draw() { 
System.out.println("Estou desenhando um Circle"); 
} 
} 


//Classe RandomGenerator 

public class RandomGenerator { 
RandomGenerator rand = new RandomGenerator(); 
public Shape next() { 
switch(rand.nextInt(3)) { 
default: 
case 0: return new Circle(); 
case 1: return new Square(); 
case 2: return new Triangle(); 
} 
} 
} 

// Classe TestaShapes 

public class TestaShapes { 
// private static Test monitor = new Test();// Verificar... se precisa 
private static RandomGenerator rg = new RandomGenerator(); 

public static void main(String[] args) { 


Shape[] s = new Shape[3]; 
// Preenche o array com shapes: 
for(int i = 0; i < s.length; i++) 
s[i] = rg.next(); 
// Faz chamadas a métodos polimórficos: 
for(int i = 0; i < s.length; i++) 
s[i].draw(); 
/*monitor.expect(new Object[] {//Só copiei! Nem sei se precisamos dele 
new Test("%% (Circle¦Square¦Triangle)" 
+ "\\.draw\\(\\)", s.length) 
});*/ 
} 
}
Criado 9 de novembro de 2010
Ultima resposta 10 de nov. de 2010
Respostas 4
Participantes 4