| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/04/2010 14:49:03
|
VantuilJose
JavaChild
![[Avatar]](/images/avatar/ca5b658462069fbcf6db37967b8c9cec.jpg)
Membro desde: 15/09/2008 11:47:53
Mensagens: 101
Offline
|
Blz galera?
Aqui tô com o seguinte problema:
Tenho uma classe Forma e algumas filhas: Quadrado, Circulo, Triangulo.
Tenho também um Jframe onde há uma toolbox onde você pode selecionar a forma que quer desenhar, e um PanelDesenho que é uma classe capaz de desenhar essas formas, (O método de desenho está na classe Forma(abstrato), e as outras classe o implementam...).
Vou ter que criar um se pra cada Forma? Queria uma jeito que, quando o usuário fosse desenhar no PanelDesenho eu instanciasse a forma correta, e, quando criar novas formas (Estrela por exemplo), não precise alterar a classe PanelDesenho adicionando mais if's pra ela saber qual forma desenhar..
Alguma sugestão? Padrão de Projeto? Gambiarra?
Valeu,
|
Vantuil Oliveira
Tecnólogo em Análise e Desenvolvimento de Sistemas - IFMG Bambuí
Mestrando em Ciência da Computação - UFOP
-
"I am the maniac serial killer that knows where you live who will maintain your code!" |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/04/2010 15:23:37
|
juniorsatanas
GUJ Master
![[Avatar]](/images/avatar/e80d4e20bea58e20d925e45e6fb7aab8.jpg)
Membro desde: 20/05/2007 01:08:24
Mensagens: 1864
Localização: web2ajax@gmail.com
Offline
|
posta a imagem desse projeto aqui.. fiquei curioso..
|
Cheque Mate em 6 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/04/2010 17:41:53
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Online
|
O ideal é criar uma classe para cada sim. O padrão de projeto para evitar os ifs é o strategy.
Você pode ver mais detalhes de Java 2D no meu site (link na minha assinatura).
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/04/2010 18:08:28
|
VantuilJose
JavaChild
![[Avatar]](/images/avatar/ca5b658462069fbcf6db37967b8c9cec.jpg)
Membro desde: 15/09/2008 11:47:53
Mensagens: 101
Offline
|
Junior, aqui, não sei se é bem isso que vc quer... heheeh TEm um esboço idiota do sistema... É basicamente isso.. Preciso de saber como vou fazer, se, cada Forma sabe desenhar a se mesma e eu não ter que ficar panelDesenho.setForma("Quadrado"), e na classe PanelDesennho não ter que fazer um monte de if, quando o usuário estiver desenhando a imagem..  Se quiser ver o diagrama de classes eu envio, e, basicamente é o que desecrevi no post... Cada classe que herda forma tem que implementar o método drawYourselg(Graphics g), onde elas se desenham no Graphics que eu passar... ViniGodoy, vou dar uma olhada no Strategy e no seu site, eu já estava ciente que é inviável não fazer uma classe para cada forma, mas quero deixar o sistema o mais extensível possível, e permitir que a adição de uma forma posteriormente altere o menor numero possível de classes... valeu pessoal..
This message was edited 1 time. Last update was at 25/04/2010 18:25:47
|
Vantuil Oliveira
Tecnólogo em Análise e Desenvolvimento de Sistemas - IFMG Bambuí
Mestrando em Ciência da Computação - UFOP
-
"I am the maniac serial killer that knows where you live who will maintain your code!" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/04/2010 18:42:46
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Online
|
Justamente fazer uma classe para cada forma é o que vai tornar seu sistema extensível.
Isso através do polimorfismo.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/04/2010 19:43:26
|
VantuilJose
JavaChild
![[Avatar]](/images/avatar/ca5b658462069fbcf6db37967b8c9cec.jpg)
Membro desde: 15/09/2008 11:47:53
Mensagens: 101
Offline
|
Tudo bem ViniGodoy, mas quando o usuário arrastar o mouse eu terei de desenhar a forma que ele selecionou, aí vou fazer um if? Tipo vou ter um Eram esses if's e a adição de outros que desejo evitar... entenderam?
This message was edited 1 time. Last update was at 25/04/2010 19:57:59
|
Vantuil Oliveira
Tecnólogo em Análise e Desenvolvimento de Sistemas - IFMG Bambuí
Mestrando em Ciência da Computação - UFOP
-
"I am the maniac serial killer that knows where you live who will maintain your code!" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/04/2010 19:55:24
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Online
|
Realmente, vc não precisa desses ifs.
Essa variável forma não deveria ser uma String, e sim uma classe, que permita que vc crie as formas por polimorfismo.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/04/2010 20:16:40
|
VantuilJose
JavaChild
![[Avatar]](/images/avatar/ca5b658462069fbcf6db37967b8c9cec.jpg)
Membro desde: 15/09/2008 11:47:53
Mensagens: 101
Offline
|
Mas eu teria que fazer isso com reflection certo?
ou estou sendo ignorante?
|
Vantuil Oliveira
Tecnólogo em Análise e Desenvolvimento de Sistemas - IFMG Bambuí
Mestrando em Ciência da Computação - UFOP
-
"I am the maniac serial killer that knows where you live who will maintain your code!" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/04/2010 20:20:24
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Online
|
Não, o código do seu botão ficaria:
E, na hora que o usuário soltar o mouse:
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/04/2010 20:30:25
|
VantuilJose
JavaChild
![[Avatar]](/images/avatar/ca5b658462069fbcf6db37967b8c9cec.jpg)
Membro desde: 15/09/2008 11:47:53
Mensagens: 101
Offline
|
ViniGodoy,
Isso é Abstract Factory?
Dei uma olhada lá no seu site, muito bom o material. Você tem algum tutorial, ou links que me ajudem a desenhar as formas na tela? está funcionando perfeitamente com imagens menores, mas com imagens muito grande, (imagem de fundo), fica bem lento, já que tenho que desenhar a imagem nop drag do componente....
|
Vantuil Oliveira
Tecnólogo em Análise e Desenvolvimento de Sistemas - IFMG Bambuí
Mestrando em Ciência da Computação - UFOP
-
"I am the maniac serial killer that knows where you live who will maintain your code!" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/04/2010 00:05:51
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Online
|
Isso é o factory method. E, por incrível que pareça, fábricas assim também são parte do padrão Strategy.
O abstract factory é quando vc tem diversas fábricas para componentes relacionados, numa mesma classe.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
|
|