JavaFX Script
Classes, binding e outros elementos

Fábio Nogueira de Lucena
Instituto de Informática (UFG)
Graduação em En...
Visão geral de recursos
“avançados”
Classe
Sobrescrever para 1 objeto
Binding:
permite associar variável ao
valor de uma expressão
Binding


                        ã é




  Binding expressions são automaticamente
reavaliadas quando suas dependências m...
Binding


                         ã é




  Binding expressions são automaticamente
reavaliadas quando suas dependências ...
Binding




  Binding expressions são automaticamente
reavaliadas quando suas dependências mudam
Binding


    Á      í

    Á      í



     Lembre-se: binding expressions são
reavaliadas quando suas dependências mudam
O que está acontecendo?


      O runtime de JavaFX “sabe” que o valor de
      a deve ser atualizado sempre que o valor
 ...
Mais um exemplo...
var x = 1;
def dobro = bind 2 * x;
def msg = bind "O dobro de {x} é {dobro}";
println(msg);
x = 2;
prin...
Binding (if)


          Á         í

          Á         í

 O binding depende, neste exemplo, da condição, do
corpo do t...
Binding (if)

                                 á
        Á       í

        Á       í


 O binding depende, neste exemplo,...
Binding (for)




  O binding depende apenas da variável fim
Binding (for)
var fim = 1;
var passo = 1;
var y = 3;
var seq = bind [1..fim step passo];
def s = bind for (x in seq where ...
Binding (block)




   z depende de aux, que depende de x e y
        OU SEJA, z depende de x e y
Binding (function)
    Pode existir binding para uma função
    A função pode ser non-bound ou bound

                DEPE...
Binding (non-bound function)




     O binding de resultado depende de x e y
Quando x ou y mudar, fazAlgo é executada e o...
Binding (bound function)




    O binding de resultado depende de k*x+y
Quando x ou y ou k mudar, fazAlgo é executada e o...
Binding (object literal)
Variável com binding para object literal depende da união
 das dependências de todas as expressõe...
Binding (object literal)




     O binding de a depende de varNome
Quando varNome mudar, uma nova instância é
   criada e...
Binding (object literal)




   O binding de a não depende de varNome
  Quando varNome mudar, apenas o valor de
          ...
Binding bidirecional


      Binding bidirecional acrescente
               with inverse
 ao final da expressão envolvendo ...
Binding bidirecional




  O binding de y depende de a e vice-versa
     Quando a mudar y também muda
     Quanto y mudar ...
Variável (function)
var operacao : function(:Byte, :Byte) : Byte;
var add = function(x:Byte, y:Byte) { x + y };
var sub = ...
Variável (function)




          Qual o resultado?
Variável (function)




  Inferência de tipos tornou desnecessário
 indicar o tipo da variável f, ao contrário do
     exe...
Triggers
Considerações finais
Nem tudo de JavaFX foi abordado
  Tratamento de exceções
  Classes (herança múltipla, init, postinit, ...
Próximos SlideShares
Carregando em…5
×

Javafx Avancado

1.646 visualizações

Publicada em

Publicada em: Tecnologia, Negócios
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.646
No SlideShare
0
A partir de incorporações
0
Número de incorporações
19
Ações
Compartilhamentos
0
Downloads
94
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide


























































  • Javafx Avancado

    1. 1. JavaFX Script Classes, binding e outros elementos Fábio Nogueira de Lucena Instituto de Informática (UFG) Graduação em Engenharia de Software http://engenhariadesoftware.inf.br
    2. 2. Visão geral de recursos “avançados”
    3. 3. Classe
    4. 4. Sobrescrever para 1 objeto
    5. 5. Binding: permite associar variável ao valor de uma expressão
    6. 6. Binding ã é Binding expressions são automaticamente reavaliadas quando suas dependências mudam
    7. 7. Binding ã é Binding expressions são automaticamente reavaliadas quando suas dependências mudam
    8. 8. Binding Binding expressions são automaticamente reavaliadas quando suas dependências mudam
    9. 9. Binding Á í Á í Lembre-se: binding expressions são reavaliadas quando suas dependências mudam
    10. 10. O que está acontecendo? O runtime de JavaFX “sabe” que o valor de a deve ser atualizado sempre que o valor da expressão pi * raio * raio for alterado, ou seja, sempre que pi ou o valor de raio for alterado. Quando isto ocorre, o runtime reavalia a expressão e o resultado é depositado na variável a!
    11. 11. Mais um exemplo... var x = 1; def dobro = bind 2 * x; def msg = bind "O dobro de {x} é {dobro}"; println(msg); x = 2; println(msg); Lembre-se: binding expressions são reavaliadas quando suas dependências mudam
    12. 12. Binding (if) Á í Á í O binding depende, neste exemplo, da condição, do corpo do then e do else, ou seja, das variáveis r e pi
    13. 13. Binding (if) á Á í Á í O binding depende, neste exemplo, da condição, do corpo do then e do else, ou seja, nas variáveis r e pi
    14. 14. Binding (for) O binding depende apenas da variável fim
    15. 15. Binding (for) var fim = 1; var passo = 1; var y = 3; var seq = bind [1..fim step passo]; def s = bind for (x in seq where x<y) x; println(s); // [ 1 ] fim = 2; println(s); // [ 1 2 ] passo = 2; println(s); // [ 1 ] y = -1; println(s); // [ ] seq depende de fim e de passo s depende de seq e y
    16. 16. Binding (block) z depende de aux, que depende de x e y OU SEJA, z depende de x e y
    17. 17. Binding (function) Pode existir binding para uma função A função pode ser non-bound ou bound DEPENDÊNCIA Binding para non-bound function: argumentos Binding para bound function: bloco
    18. 18. Binding (non-bound function) O binding de resultado depende de x e y Quando x ou y mudar, fazAlgo é executada e o valor obtido é depositado em resultado
    19. 19. Binding (bound function) O binding de resultado depende de k*x+y Quando x ou y ou k mudar, fazAlgo é executada e o valor obtido depositado em resultado
    20. 20. Binding (object literal) Variável com binding para object literal depende da união das dependências de todas as expressões do lado direito das variáveis de instância. Não inclui dependências de variáveis de instâncias para as quais há binding. Quando ocorre mudança, cria-se uma nova instância!
    21. 21. Binding (object literal) O binding de a depende de varNome Quando varNome mudar, uma nova instância é criada e passa a ser referenciada por a
    22. 22. Binding (object literal) O binding de a não depende de varNome Quando varNome mudar, apenas o valor de a.nome é alterado.
    23. 23. Binding bidirecional Binding bidirecional acrescente with inverse ao final da expressão envolvendo o binding
    24. 24. Binding bidirecional O binding de y depende de a e vice-versa Quando a mudar y também muda Quanto y mudar a também muda
    25. 25. Variável (function) var operacao : function(:Byte, :Byte) : Byte; var add = function(x:Byte, y:Byte) { x + y }; var sub = function(x:Byte, y:Byte) { x - y }; var pro = function(x:Byte, y:Byte) { x * y }; var div = function(x:Byte, y:Byte) { x / y }; var ops = [ add, sub, pro, div ]; for (op in ops) { println(op(10,2)); } Qual o resultado?
    26. 26. Variável (function) Qual o resultado?
    27. 27. Variável (function) Inferência de tipos tornou desnecessário indicar o tipo da variável f, ao contrário do exemplo anterior (tipo explicitado)
    28. 28. Triggers
    29. 29. Considerações finais Nem tudo de JavaFX foi abordado Tratamento de exceções Classes (herança múltipla, init, postinit, ...) Organização do código em packages, classes,... Modificadores de acesso: public-init, public-read, ... Visão geral é suficiente para “aprofundar”

    ×