Loading ...
Sorry, an error occurred while loading the content.
 

Re: [riojug] Design em Java

Expand Messages
  • Leandro Augusto Moreira Pinto
    Java já embutiu essa bizarrice na própria API padrão, ela utiliza UnsupportedOperationException para implementar métodos opcionais . Para mim, isso é
    Message 1 of 11 , Apr 3, 2005
      Java já embutiu essa bizarrice na própria API padrão, ela utiliza
      UnsupportedOperationException para implementar métodos "opcionais".
      Para mim, isso é bacalhau, mas na API padrão do Java, você vai
      encontrar vários métodos implementados assim.
      Ter um método em uma subclasse que não funciona é no mínimo estranho.
      Uma subclasse tem que ser o que a superclasse é. Ela tem que responder
      a todas as mensagens que podem ser enviadas para a superclasse, desta
      forma podemos implementar um polimofirmo seguro.
      O que eu faço já que algumas interfaces do Java possuem esses métodos
      "opcionais" é utilizar UnsupportedOperationException em métodos da API
      que te informem que isso é uma das opções válidas, mas eu evito ao
      máximo. Eu não invento as minhas interfaces com essa coisa estranha.
      Métodos opcionais para mim, são aqueles que podem não fazer nada, como
      os métodos dos listeners dos vários widgets do Swing e AWT. Se eles
      não fizerem nada, tudo bem, não causam danos. Isso sim é ser opcional.
      Geralmente as pessoas falam de contrato sem prestar atenção que violar
      o contrato não é feito apenas quando o compilador diz que tem erro de
      compilação, como por exemplo modificar o tipo de valor de retorno de
      um método, diminuir a visibilidade de um método, lançar uma exceção
      checada que o método da superclasse não lançava, etc.. Mas a violação
      de contrato também é feita, quando não implementamos o que está
      escrito na documentação.

      Eu não entendi direito o seu problema, logo, não estou sugerindo uma
      sugestão, mas essa solução de sobrescrever o getValue não está legal.
      Provavelmente esse método é utilizado na implementação do JSlider,
      você vai acabar parando o JSlider.

      Será que você não pode continuar retornando o valor * 10 e resolver
      isso no código que utiliza o JSlider? Vc pode fornecer o código que
      utiliza esse JSlider?

      Abraços,
      Leandro.


      On Apr 3, 2005 12:30 PM, Marcelo Paes Augusto
      <marcpaeslistas@...> wrote:
      >
      > Em C# eu nao mato o polimorfismo nao... eu só "escondo o metodo" se eu
      > der um typecast pra classe de cima ele volta a ser visivel... (ou seja..
      > nao resolve... mas ajuda! )
      >
      > Herdar de JPanel ou Componente vai me dar um trabaaaaalho :( hehehe
      >
      > Eu só queria mesmo era q nao desse pra chamar o get value... vou acabar
      > dando um override no getValue e reimplementando ele pra disparar uma
      > excessao. O Nome dela vai ser NaoPodeChamarEsseMetodoException :)
      >
      > Valeu pela ajuda :)
      >
      > Marcelo Paes
      >
      > -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
      > Rio Java Users Group www.riojug.org
      > E-mail dos Moderadores riojug-owner@yahoogroups.com
      >
      > Patrocínio: Quality Software, SENAC-Rio CIT, Locaweb
      > Apoio: Java Magazine, SQL Magazine
      > -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
      > Participe também das outras listas do RioJUG:
      > SCJP (groups.yahoo.com/group/scjp_riojug)
      > SCWCD (groups.yahoo.com/group/scwcd_riojug)
      > -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
      > Yahoo! Groups Links
      >
      >
      >
      >
      >
    • Marcelo Paes Augusto
      Eu tava brincando qto a excecao... :) O codigo ta no primeiro email q mandei... o getValue nao eh usado para desenho nem nada nao... eh apenas para o usuario
      Message 2 of 11 , Apr 3, 2005
        Eu tava brincando qto a excecao... :)

        O codigo ta no primeiro email q mandei... o getValue nao eh usado para
        desenho nem nada nao... eh apenas para o usuario poder pegar o valor
        selecionado.

        Q a solucao esta ruim eu tb falei no primeiro email... por isso q pedi a
        opniao do pessoal, de como poderia fazer e tal.

        A solucao mais bonita seria eu criar um componente novo sem herdar do
        JSlider... pois nao existe como eu fazer ele retornar um float em vez de
        um int.

        Logico q eu posso resolver isso de fora do JSlider... mas isso é errado,
        pois qq pessoa q usasse esse componente esperaria q os valores sejam o q
        esta sendo mostrado na tela.

        Marcelo Paes

        Leandro Augusto Moreira Pinto wrote:

        > Java já embutiu essa bizarrice na própria API padrão, ela utiliza
        > UnsupportedOperationException para implementar métodos "opcionais".
        > Para mim, isso é bacalhau, mas na API padrão do Java, você vai
        > encontrar vários métodos implementados assim.
        > Ter um método em uma subclasse que não funciona é no mínimo estranho.
        > Uma subclasse tem que ser o que a superclasse é. Ela tem que responder
        > a todas as mensagens que podem ser enviadas para a superclasse, desta
        > forma podemos implementar um polimofirmo seguro.
        > O que eu faço já que algumas interfaces do Java possuem esses métodos
        > "opcionais" é utilizar UnsupportedOperationException em métodos da API
        > que te informem que isso é uma das opções válidas, mas eu evito ao
        > máximo. Eu não invento as minhas interfaces com essa coisa estranha.
        > Métodos opcionais para mim, são aqueles que podem não fazer nada, como
        > os métodos dos listeners dos vários widgets do Swing e AWT. Se eles
        > não fizerem nada, tudo bem, não causam danos. Isso sim é ser opcional.
        > Geralmente as pessoas falam de contrato sem prestar atenção que violar
        > o contrato não é feito apenas quando o compilador diz que tem erro de
        > compilação, como por exemplo modificar o tipo de valor de retorno de
        > um método, diminuir a visibilidade de um método, lançar uma exceção
        > checada que o método da superclasse não lançava, etc.. Mas a violação
        > de contrato também é feita, quando não implementamos o que está
        > escrito na documentação.
        >
        > Eu não entendi direito o seu problema, logo, não estou sugerindo uma
        > sugestão, mas essa solução de sobrescrever o getValue não está legal.
        > Provavelmente esse método é utilizado na implementação do JSlider,
        > você vai acabar parando o JSlider.
        >
        > Será que você não pode continuar retornando o valor * 10 e resolver
        > isso no código que utiliza o JSlider? Vc pode fornecer o código que
        > utiliza esse JSlider?
        >
        > Abraços,
        > Leandro.
      • Phillip Calçado
        Olá, A critério de informação, alguns autores suportam a herança onde você omite funcionaldiades da classe mãe. É o descendant hiding para o Meyer. É
        Message 3 of 11 , Apr 3, 2005
          Olá,

          A critério de informação, alguns autores suportam a herança onde você
          omite funcionaldiades da classe mãe. É o descendant hiding para o
          Meyer.

          É uma característica estranha e baseada num conceito de "System
          Validity" muito relativo...

          Essa é mais uma característica OO não muito popular que muitas
          linguagens não implementam, como Java.

          []s

          On Apr 3, 2005 1:45 PM, Marcelo Paes Augusto
          <marcpaeslistas@...> wrote:
          > Eu tava brincando qto a excecao... :)
          >
          > O codigo ta no primeiro email q mandei... o getValue nao eh usado para
          > desenho nem nada nao... eh apenas para o usuario poder pegar o valor
          > selecionado.
          >
          > Q a solucao esta ruim eu tb falei no primeiro email... por isso q pedi a
          > opniao do pessoal, de como poderia fazer e tal.
          >
          > A solucao mais bonita seria eu criar um componente novo sem herdar do
          > JSlider... pois nao existe como eu fazer ele retornar um float em vez de
          > um int.
          >
          > Logico q eu posso resolver isso de fora do JSlider... mas isso é errado,
          > pois qq pessoa q usasse esse componente esperaria q os valores sejam o q
          > esta sendo mostrado na tela.
          >
          > Marcelo Paes
          >
          >
          > Leandro Augusto Moreira Pinto wrote:
          >
          > > Java já embutiu essa bizarrice na própria API padrão, ela utiliza
          > > UnsupportedOperationException para implementar métodos "opcionais".
          > > Para mim, isso é bacalhau, mas na API padrão do Java, você vai
          > > encontrar vários métodos implementados assim.
          > > Ter um método em uma subclasse que não funciona é no mínimo estranho.
          > > Uma subclasse tem que ser o que a superclasse é. Ela tem que responder
          > > a todas as mensagens que podem ser enviadas para a superclasse, desta
          > > forma podemos implementar um polimofirmo seguro.
          > > O que eu faço já que algumas interfaces do Java possuem esses métodos
          > > "opcionais" é utilizar UnsupportedOperationException em métodos da API
          > > que te informem que isso é uma das opções válidas, mas eu evito ao
          > > máximo. Eu não invento as minhas interfaces com essa coisa estranha.
          > > Métodos opcionais para mim, são aqueles que podem não fazer nada, como
          > > os métodos dos listeners dos vários widgets do Swing e AWT. Se eles
          > > não fizerem nada, tudo bem, não causam danos. Isso sim é ser opcional.
          > > Geralmente as pessoas falam de contrato sem prestar atenção que violar
          > > o contrato não é feito apenas quando o compilador diz que tem erro de
          > > compilação, como por exemplo modificar o tipo de valor de retorno de
          > > um método, diminuir a visibilidade de um método, lançar uma exceção
          > > checada que o método da superclasse não lançava, etc.. Mas a violação
          > > de contrato também é feita, quando não implementamos o que está
          > > escrito na documentação.
          > >
          > > Eu não entendi direito o seu problema, logo, não estou sugerindo uma
          > > sugestão, mas essa solução de sobrescrever o getValue não está legal.
          > > Provavelmente esse método é utilizado na implementação do JSlider,
          > > você vai acabar parando o JSlider.
          > >
          > > Será que você não pode continuar retornando o valor * 10 e resolver
          > > isso no código que utiliza o JSlider? Vc pode fornecer o código que
          > > utiliza esse JSlider?
          > >
          > > Abraços,
          > > Leandro.
          >
          >
          >
          > -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
          > Rio Java Users Group www.riojug.org
          > E-mail dos Moderadores riojug-owner@yahoogroups.com
          >
          > Patrocínio: Quality Software, SENAC-Rio CIT, Locaweb
          > Apoio: Java Magazine, SQL Magazine
          > -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
          > Participe também das outras listas do RioJUG:
          > SCJP (groups.yahoo.com/group/scjp_riojug)
          > SCWCD (groups.yahoo.com/group/scwcd_riojug)
          > -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
          >
          >
          > ________________________________
          > Yahoo! Groups Links
          >
          >
          > To visit your group on the web, go to:
          > http://groups.yahoo.com/group/riojug/
          >
          > To unsubscribe from this group, send an email to:
          > riojug-unsubscribe@yahoogroups.com
          >
          > Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.


          --
          Phillip Calçado
          ICQ: 1110nine38six5
          M$N: pcalcado@...
          http://www.jablo.com.br/blogs/page/pcalcado
          http://www.jroller.com/page/pcalcado
          Crux Sacra Sit Mihi Lux
        • Ary Junior
          Ja q o problema e so retornar os valores sendo exibidos: public class JSliderNumerico extends JSlider { private double[] valores; public JSliderNumerico(double
          Message 4 of 11 , Apr 3, 2005
            Ja q o problema e so retornar os valores sendo exibidos:

            public class JSliderNumerico extends JSlider {
            private double[] valores;

            public JSliderNumerico(double min, double max, int qtdValores,
            String formato) {
            super(0, qtdValores-1);
            Hashtable table = new Hashtable();
            double incremento = (max-min)/(qtdValores-1);
            valores = new double[qtdValores];
            DecimalFormat df = new DecimalFormat(formato);
            JLabel label;
            for (int i=0; i<qtdValores; i++){
            label = new JLabel(df.format(min));
            label.setFont(new Font("Arial", Font.PLAIN, 10));
            table.put(new Integer(i), label);
            valores[i] = min;
            min += incremento;
            }
            setLabelTable(table);
            }

            public double getValorNumerico() {
            return valores[this.getValue()];
            }

            }

            Desta forma o JSliderNumerico pode ser tratado como um JSlider... a nova
            classe possui um novo construtor proprio para trabalhar com qualquer
            intervalo de valores e ainda retornar o valor preciso pelo metodo
            getValorNumerico()... Note q ha o polimorfismo e nem foi necessario o
            shadow do C#, o metodo getValue() existe e pode conviver pacificamente
            com a classe derivada... Vc pode utilizar o JSliderNumerico assim:

            ...
            JSliderNumerico jsn = new JSliderNumerico(-3.345, 1.798, 10,
            "#,##0.000;(#,##0.000)");
            ...
            double valor = jsn.getValorNumerico();
            ...

            []s

            Ary Junior


            Marcelo Paes Augusto wrote:

            > Eu tava brincando qto a excecao... :)
            >
            > O codigo ta no primeiro email q mandei... o getValue nao eh usado para
            > desenho nem nada nao... eh apenas para o usuario poder pegar o valor
            > selecionado.
            >
            > Q a solucao esta ruim eu tb falei no primeiro email... por isso q pedi a
            > opniao do pessoal, de como poderia fazer e tal.
            >
            > A solucao mais bonita seria eu criar um componente novo sem herdar do
            > JSlider... pois nao existe como eu fazer ele retornar um float em vez de
            > um int.
            >
            > Logico q eu posso resolver isso de fora do JSlider... mas isso é errado,
            > pois qq pessoa q usasse esse componente esperaria q os valores sejam o q
            > esta sendo mostrado na tela.
            >
            > Marcelo Paes
            >
            > Leandro Augusto Moreira Pinto wrote:
            >
            > > Java já embutiu essa bizarrice na própria API padrão, ela utiliza
            > > UnsupportedOperationException para implementar métodos "opcionais".
            > > Para mim, isso é bacalhau, mas na API padrão do Java, você vai
            > > encontrar vários métodos implementados assim.
            > > Ter um método em uma subclasse que não funciona é no mínimo estranho.
            > > Uma subclasse tem que ser o que a superclasse é. Ela tem que responder
            > > a todas as mensagens que podem ser enviadas para a superclasse, desta
            > > forma podemos implementar um polimofirmo seguro.
            > > O que eu faço já que algumas interfaces do Java possuem esses métodos
            > > "opcionais" é utilizar UnsupportedOperationException em métodos da API
            > > que te informem que isso é uma das opções válidas, mas eu evito ao
            > > máximo. Eu não invento as minhas interfaces com essa coisa estranha.
            > > Métodos opcionais para mim, são aqueles que podem não fazer nada, como
            > > os métodos dos listeners dos vários widgets do Swing e AWT. Se eles
            > > não fizerem nada, tudo bem, não causam danos. Isso sim é ser opcional.
            > > Geralmente as pessoas falam de contrato sem prestar atenção que violar
            > > o contrato não é feito apenas quando o compilador diz que tem erro de
            > > compilação, como por exemplo modificar o tipo de valor de retorno de
            > > um método, diminuir a visibilidade de um método, lançar uma exceção
            > > checada que o método da superclasse não lançava, etc.. Mas a violação
            > > de contrato também é feita, quando não implementamos o que está
            > > escrito na documentação.
            > >
            > > Eu não entendi direito o seu problema, logo, não estou sugerindo uma
            > > sugestão, mas essa solução de sobrescrever o getValue não está legal.
            > > Provavelmente esse método é utilizado na implementação do JSlider,
            > > você vai acabar parando o JSlider.
            > >
            > > Será que você não pode continuar retornando o valor * 10 e resolver
            > > isso no código que utiliza o JSlider? Vc pode fornecer o código que
            > > utiliza esse JSlider?
            > >
            > > Abraços,
            > > Leandro.
            >
            >
            >
            > -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
            > Rio Java Users Group www.riojug.org
            > E-mail dos Moderadores riojug-owner@yahoogroups.com
            >
            > Patrocínio: Quality Software, SENAC-Rio CIT, Locaweb
            > Apoio: Java Magazine, SQL Magazine
            > -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
            > Participe também das outras listas do RioJUG:
            > SCJP (groups.yahoo.com/group/scjp_riojug)
            > SCWCD (groups.yahoo.com/group/scwcd_riojug)
            > -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
            >
            >
            > ------------------------------------------------------------------------
            > *Yahoo! Groups Links*
            >
            > * To visit your group on the web, go to:
            > http://groups.yahoo.com/group/riojug/
            >
            > * To unsubscribe from this group, send an email to:
            > riojug-unsubscribe@yahoogroups.com
            > <mailto:riojug-unsubscribe@yahoogroups.com?subject=Unsubscribe>
            >
            > * Your use of Yahoo! Groups is subject to the Yahoo! Terms of
            > Service <http://docs.yahoo.com/info/terms/>.
            >
            >
          • Marcelo Paes Augusto
            Nao vi mta diferenca para a minha implementacao...So 2: 1 - Está mais completa :) 2 - Achei tb q assim fica mais claro pro cara q esta usando, q o getValue
            Message 5 of 11 , Apr 3, 2005
              Nao vi mta diferenca para a minha implementacao...So 2:
              1 - Está mais completa :)
              2 - Achei tb q assim fica mais claro pro cara q esta usando, q o
              getValue nao retornara o valor numerico. Isso por uma diferenca sutil: o
              fato da qtd de valores estar sendo passada no construtor.

              Melhora um pouco!

              Valeu ! :)

              Marcelo

              Ary Junior wrote:

              > Ja q o problema e so retornar os valores sendo exibidos:
              >
              > public class JSliderNumerico extends JSlider {
              > private double[] valores;
              >
              > public JSliderNumerico(double min, double max, int qtdValores,
              > String formato) {
              > super(0, qtdValores-1);
              > Hashtable table = new Hashtable();
              > double incremento = (max-min)/(qtdValores-1);
              > valores = new double[qtdValores];
              > DecimalFormat df = new DecimalFormat(formato);
              > JLabel label;
              > for (int i=0; i<qtdValores; i++){
              > label = new JLabel(df.format(min));
              > label.setFont(new Font("Arial", Font.PLAIN, 10));
              > table.put(new Integer(i), label);
              > valores[i] = min;
              > min += incremento;
              > }
              > setLabelTable(table);
              > }
              >
              > public double getValorNumerico() {
              > return valores[this.getValue()];
              > }
              >
              > }
              >
              > Desta forma o JSliderNumerico pode ser tratado como um JSlider... a nova
              > classe possui um novo construtor proprio para trabalhar com qualquer
              > intervalo de valores e ainda retornar o valor preciso pelo metodo
              > getValorNumerico()... Note q ha o polimorfismo e nem foi necessario o
              > shadow do C#, o metodo getValue() existe e pode conviver pacificamente
              > com a classe derivada... Vc pode utilizar o JSliderNumerico assim:
              >
              > ...
              > JSliderNumerico jsn = new JSliderNumerico(-3.345, 1.798, 10,
              > "#,##0.000;(#,##0.000)");
              > ...
              > double valor = jsn.getValorNumerico();
              > ...
              >
              > []s
              >
              > Ary Junior
            • Ary Junior
              Por nada... mas existem diferencas consideraveis: 1 - Eu soube utilizar a OO com o Java e vc nao... tanto q colocou o C# no meio... 2 - Vc retira apenas uma
              Message 6 of 11 , Apr 3, 2005
                Por nada... mas existem diferencas consideraveis:

                1 - Eu soube utilizar a OO com o Java e vc nao... tanto q colocou o C#
                no meio...
                2 - Vc retira apenas uma casa decimal multiplicando por 10, a minha
                classe pode exibir qualquer intervalo de numeros e retornar os valores
                correspondentes com a precisao do proprio "double"...
                3 - Na minha classe, como o objetivo de apenas exibir um intervalo de
                numeros e retornar o valor correspondente, vc pode definir a formatacao
                dos labels sem comprometer os valores associados...
                4 - A pessoa q for usar a minha classe sabera q nao e preciso utilizar o
                getValue(), pois ele apenas retorna a posicao da opcao selecionada
                dentro do JSlider... para recuperar o valor numerico do item selecionado
                basta utilizar o metodo getValorNumerico()... sendo assim a definicao do
                metodo getValue() na classe basica continua funcional...

                Nao q o Java seja melhor do q o C# (eu nao tenho nenhuma experiencia com
                esta linguagem e nao posso opinar) e eu nao visto a camisa de nenhuma
                tecnologia pois nao se tratam de times de futebol... mas ao escolher uma
                para trabalhar, deve-se tentar fazer o melhor ou optar por outra... No
                momento eu nao posso optar, tenho q trabalhar com Java e estou muito
                satisfeito mesmo... espero ter ajudado e muito obrigado! Pois eu sempre
                aprendo tentando ajudar...

                []s

                Ary Junior

                Marcelo Paes Augusto wrote:

                > Nao vi mta diferenca para a minha implementacao...So 2:
                > 1 - Está mais completa :)
                > 2 - Achei tb q assim fica mais claro pro cara q esta usando, q o
                > getValue nao retornara o valor numerico. Isso por uma diferenca sutil: o
                > fato da qtd de valores estar sendo passada no construtor.
                >
                > Melhora um pouco!
                >
                > Valeu ! :)
                >
                > Marcelo
                >
                > Ary Junior wrote:
                >
                > > Ja q o problema e so retornar os valores sendo exibidos:
                > >
                > > public class JSliderNumerico extends JSlider {
                > > private double[] valores;
                > >
                > > public JSliderNumerico(double min, double max, int qtdValores,
                > > String formato) {
                > > super(0, qtdValores-1);
                > > Hashtable table = new Hashtable();
                > > double incremento = (max-min)/(qtdValores-1);
                > > valores = new double[qtdValores];
                > > DecimalFormat df = new DecimalFormat(formato);
                > > JLabel label;
                > > for (int i=0; i<qtdValores; i++){
                > > label = new JLabel(df.format(min));
                > > label.setFont(new Font("Arial", Font.PLAIN, 10));
                > > table.put(new Integer(i), label);
                > > valores[i] = min;
                > > min += incremento;
                > > }
                > > setLabelTable(table);
                > > }
                > >
                > > public double getValorNumerico() {
                > > return valores[this.getValue()];
                > > }
                > >
                > > }
                > >
                > > Desta forma o JSliderNumerico pode ser tratado como um JSlider... a nova
                > > classe possui um novo construtor proprio para trabalhar com qualquer
                > > intervalo de valores e ainda retornar o valor preciso pelo metodo
                > > getValorNumerico()... Note q ha o polimorfismo e nem foi necessario o
                > > shadow do C#, o metodo getValue() existe e pode conviver pacificamente
                > > com a classe derivada... Vc pode utilizar o JSliderNumerico assim:
                > >
                > > ...
                > > JSliderNumerico jsn = new JSliderNumerico(-3.345, 1.798, 10,
                > > "#,##0.000;(#,##0.000)");
                > > ...
                > > double valor = jsn.getValorNumerico();
                > > ...
                > >
                > > []s
                > >
                > > Ary Junior
                >
                >
                >
                >
                > -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
                > Rio Java Users Group www.riojug.org
                > E-mail dos Moderadores riojug-owner@yahoogroups.com
                >
                > Patrocínio: Quality Software, SENAC-Rio CIT, Locaweb
                > Apoio: Java Magazine, SQL Magazine
                > -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
                > Participe também das outras listas do RioJUG:
                > SCJP (groups.yahoo.com/group/scjp_riojug)
                > SCWCD (groups.yahoo.com/group/scwcd_riojug)
                > -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
                >
                >
                > ------------------------------------------------------------------------
                > *Yahoo! Groups Links*
                >
                > * To visit your group on the web, go to:
                > http://groups.yahoo.com/group/riojug/
                >
                > * To unsubscribe from this group, send an email to:
                > riojug-unsubscribe@yahoogroups.com
                > <mailto:riojug-unsubscribe@yahoogroups.com?subject=Unsubscribe>
                >
                > * Your use of Yahoo! Groups is subject to the Yahoo! Terms of
                > Service <http://docs.yahoo.com/info/terms/>.
                >
                >
              • Carlos Miranda
                Concordo com você Leandro. Isto violaria o Princípio da Substituição de Liskov: http://javaboutique.internet.com/tutorials/JavaOO/ Abçs, Carlos. Leandro
                Message 7 of 11 , Apr 4, 2005
                  Concordo com você Leandro.
                  Isto violaria o Princípio da Substituição de Liskov:
                   
                  Abçs,
                  Carlos.
                   


                  Leandro Augusto Moreira Pinto <leandroampinto@...> wrote:

                  Java já embutiu essa bizarrice na própria API padrão, ela utiliza
                  UnsupportedOperationException para implementar métodos "opcionais".
                  Para mim, isso é bacalhau, mas na API padrão do Java, você vai
                  encontrar vários métodos implementados assim.
                  Ter um método em uma subclasse que não funciona é no mínimo estranho.
                  Uma subclasse tem que ser o que a superclasse é. Ela tem que responder
                  a todas as mensagens que podem ser enviadas para a superclasse, desta
                  forma podemos implementar um polimofirmo seguro.
                  O que eu faço já que algumas interfaces do Java possuem esses métodos
                  "opcionais" é utilizar UnsupportedOperationException em métodos da API
                  que te informem que isso é uma das opções válidas, mas eu evito ao
                  máximo. Eu não invento as minhas interfaces com essa coisa estranha.
                  Métodos opcionais para mim, são aqueles que podem não fazer nada, como
                  os métodos dos listeners dos vários widgets do Swing e AWT. Se eles
                  não fizerem nada, tudo bem, não causam danos. Isso sim é ser opcional.
                  Geralmente as pessoas falam de contrato sem prestar atenção que violar
                  o contrato não é feito apenas quando o compilador diz que tem erro de
                  compilação, como por exemplo modificar o tipo de valor de retorno de
                  um método, diminuir a visibilidade de um método, lançar uma exceção
                  checada que o método da superclasse não lançava, etc.. Mas a violação
                  de contrato também é feita, quando não implementamos o que está
                  escrito na documentação.

                  Eu não entendi direito o seu problema, logo, não estou sugerindo uma
                  sugestão, mas essa solução de sobrescrever o getValue não está legal.
                  Provavelmente esse método é utilizado na implementação do JSlider,
                  você vai acabar parando o JSlider.

                  Será que você não pode continuar retornando o valor * 10 e resolver
                  isso no código que utiliza o JSlider? Vc pode fornecer o código que
                  utiliza esse JSlider?

                  Abraços,
                  Leandro.


                  On Apr 3, 2005 12:30 PM, Marcelo Paes Augusto
                  wrote:
                  >
                  > Em C# eu nao mato o polimorfismo nao... eu só "escondo o metodo" se eu
                  > der um typecast pra classe de cima ele volta a ser visivel... (ou seja..
                  > nao resolve... mas ajuda! )
                  >
                  > Herdar de JPanel ou Componente vai me dar um trabaaaaalho :( hehehe
                  >
                  > Eu só queria mesmo era q nao desse pra chamar o get value... vou acabar
                  > dando um override no getValue e reimplementando ele pra disparar uma
                  > excessao. O Nome dela vai ser NaoPodeChamarEsseMetodoException :)
                  >
                  > Valeu pela ajuda :)
                  >
                  > Marcelo Paes
                  >
                  > -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
                  > Rio Java Users Group www.riojug.org
                  > E-mail dos Moderadores riojug-owner@yahoogroups.com
                  >
                  > Patrocínio: Quality Software, SENAC-Rio CIT, Locaweb
                  > Apoio: Java Magazine, SQL Magazine
                  > -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
                  > Participe também das outras listas do RioJUG:
                  > SCJP (groups.yahoo.com/group/scjp_riojug)
                  > SCWCD (groups.yahoo.com/group/scwcd_riojug)
                  > -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
                  > Yahoo! Groups Links
                  >
                  >
                  >
                  >
                  >


                  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
                  Rio Java Users Group www.riojug.org
                  E-mail dos Moderadores riojug-owner@yahoogroups.com

                  Patrocínio: Quality Software, SENAC-Rio CIT, Locaweb
                  Apoio: Java Magazine, SQL Magazine
                  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
                  Participe também das outras listas do RioJUG:
                  SCJP (groups.yahoo.com/group/scjp_riojug)
                  SCWCD (groups.yahoo.com/group/scwcd_riojug)
                  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
                  Yahoo! Groups Links

                  <*> To visit your group on the web, go to:
                  http://groups.yahoo.com/group/riojug/

                  <*> To unsubscribe from this group, send an email to:
                  riojug-unsubscribe@yahoogroups.com

                  <*> Your use of Yahoo! Groups is subject to:
                  http://docs.yahoo.com/info/terms/





                  Yahoo! Acesso Grátis: Internet rápida e grátis. Instale o discador agora!

                Your message has been successfully submitted and would be delivered to recipients shortly.