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.
importjava.util.*;publicclassShape{publicvoiddraw(){}}//Classe TrianglepublicclassTriangleextendsShape{publicvoiddraw(){System.out.println("Estou desenhando um Triangle");}}//Classe SquarepublicclassSquareextendsShape{publicvoiddraw(){System.out.println("Estou desenhando um Square");}}//Classe CirclepublicclassCircleextendsShape{publicvoiddraw(){System.out.println("Estou desenhando um Circle");}}//Classe RandomGeneratorpublicclassRandomGenerator{RandomGeneratorrand=newRandomGenerator();publicShapenext(){switch(rand.nextInt(3)){default:case0:returnnewCircle();case1:returnnewSquare();case2:returnnewTriangle();}}}// Classe TestaShapespublicclassTestaShapes{// private static Test monitor = new Test();// Verificar... se precisaprivatestaticRandomGeneratorrg=newRandomGenerator();publicstaticvoidmain(String[]args){Shape[]s=newShape[3];// Preenche o array com shapes:for(inti=0;i<s.length;i++)s[i]=rg.next();// Faz chamadas a métodos polimórficos:for(inti=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
Binnho
Vc esqueceu de colocar o [\code] no final do código. Segue abaixo para melhor visualização.
importjava.util.*;publicclassShape{publicvoiddraw(){}}//Classe Triangle publicclassTriangleextendsShape{publicvoiddraw(){System.out.println("Estou desenhando um Triangle");}}//Classe Square publicclassSquareextendsShape{publicvoiddraw(){System.out.println("Estou desenhando um Square");}}//Classe Circle publicclassCircleextendsShape{publicvoiddraw(){System.out.println("Estou desenhando um Circle");}}//Classe RandomGenerator publicclassRandomGenerator{RandomGeneratorrand=newRandomGenerator();publicShapenext(){switch(rand.nextInt(3)){default:case0:returnnewCircle();case1:returnnewSquare();case2:returnnewTriangle();}}}// Classe TestaShapes publicclassTestaShapes{// private static Test monitor = new Test();// Verificar... se precisa privatestaticRandomGeneratorrg=newRandomGenerator();publicstaticvoidmain(String[]args){Shape[]s=newShape[3];// Preenche o array com shapes: for(inti=0;i<s.length;i++)s[i]=rg.next();// Faz chamadas a métodos polimórficos: for(inti=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) });*/}}