Groovy - PowerPoint PPT Presentation

About This Presentation
Title:

Groovy

Description:

... Introdu o 2) Hist rico 5) Caracter sticas da Linguagem 6) Groovy Beans 6) Groovy vs Java 7) Frameworks (Grails, Griffon, Gaelyk) 8) ... – PowerPoint PPT presentation

Number of Views:116
Avg rating:3.0/5.0
Slides: 27
Provided by: Goog6235
Category:
Tags: grails | groovy

less

Transcript and Presenter's Notes

Title: Groovy


1
Groovy
  • Mateus Maso, Vanoir Zacaron, Vicente Coral, Lucas
    Just Meller

2
Tópicos
  • 1) Introdução
  • 2) Histórico
  • 5) Características da Linguagem
  • 6) Groovy Beans
  • 6) Groovy vs Java
  • 7) Frameworks (Grails, Griffon, Gaelyk)
  • 8) Exemplo de aplicação em Grails

3
Introdução
  • Groovy é uma linguagem ágil e dinâmica que roda
    sobre a JVM.
  • Groovy possui características de Python, Ruby e
    Smalltalk.
  • Groovy utiliza uma sintaxe similar à de Java, é
    compilada dinamicamente para bytecode Java, e
    integra-se com outros códigos e bibliotecas Java.
  • Assim como Java, Groovy também é Orientada a
    Objetos,porém também pode-se programar de forma
    procedural com a mesma.
  • Utiliza tipagem dinâmica, forte e duck.

4
Histórico
  •  A primeira menção ao Groovy foi vista no blog de
    James Strachan em Agosto de 2003
  •  
  • Em 2 de janeiro de 2007 foi publicada a primeira
    versão (1.0) do Groovy 
  •  
  •  Em dezembro de 2007 a versão 1.1 Final foi
    entregue e imediatamente se constituiu como
    Groovy 1.5 devido ao grande avanço obtido.
  •   
  • Groovy é uma linguagem ágil e dinâmica para a
    plataforma Java com muitas características
    inspiradas em linguagens como Python, Ruby e
    Smalltalk, disponibilizando-as para os
    desenvolvedores utlizando uma sintaxe similar à
    de Java GROOVY, 2009

5
Características da Linguagem
  • Def (Tipagem dinamica)
  • Closures
  • Methods Signature
  • Collections
  • Operators, Categories e Mixins

6
Def
  • O que é tipagem dinâmica?
  • Em Groovy também representada por def.
  • Usado para indicar que você não se importa ou não
    sabe o tipo de variável representado.
  • Groovy parser não acusa nenhum tipo de erro.
  • É possivel usar esta expressão tanto para
    variáveis locais, atributos de uma classe e
    retorno de método.
  • Reconhece void como um tipo de retorno vazio.
  • Regra importante "def" não é uma representação
    de "Object.

7
Exemplo Def
  • def dynamic  1 
  • dynamic  "Eu sou uma String guardada num tipo
    dinamico" int typed  2 typed  "Eu sou uma
    String guardada num tipo int estático??" //
    throws ClassCastExceptiondef name  "Joao"print
    ln name.toUpperCase() 
  • // nao precisa de castObject name  Joao"
  • Object name  "Maria"System.out.println(((String)
     name).toUpperCase()) 
  • // precisa de cast

8
Closures
  • O que são Closures?
  • "bloco de código" ou um ponteiro para método.
  • Pedaço de código definido e executado naquele
    ponto.
  • Possui algumas propriedades especiais
  •     - Variáveis implícitas "it", 
  •     - Passagem de argumentos
  •     - Consegue usar variáveis livres (fora da
    closure)
  •     - Parâmetro de método (mandar um método
    para um método)

9
Exemplo Closures
  • //Closure com variavel implícitadef closure1   
    print it  closure1("olá") //ola
  • //Closure com argumentodef closure2   a, b -gt 
  •     print ab 
  •  closure2(5, 7) //12

??????????????????????????????????????????????????
??????????????????????????????????????????????????
??????????????????????????????????????????????????
??????????????????????????????????????????????????
??????????????????????????????????????????????????
??????????????????????????????????????????????????
??????????????????????????????????????????????????
?????????
10
Exemplo Closures
  • //Closure como parametro de métododef list  'a'
    ,'b','c','d' def newList    def closure3  
     it.toUpperCase()  
  • list.collect(newList, closure3)//Equivalente
    alist.collect(newList)     
      it.toUpperCase()  println newList //"A",
    "B", "C", "D"????????????????

??????????????????????????????????????????????????
??????????????????????????????????????????????????
??????????????????????????????????????????????????
??????????????????????????????????????????????????
??????????????????????????????????????????????????
??????????????????????????????????????????????????
??????????????????????????????????????????????????
????????????????????
11
Method Signature
  •  
  •  
  • Como é invocado métodos?
  •  
  • Parêntesis "()" opcional
  • Múltiplos parâmetros (em lista)
  •  
  • Parâmetros com mapeamento
  •  
  • Declaração de throws opcional
  •  
  • Suporta duck typing

12
Exemplo Method Signature
  • class Duck      String nome 
      def quack(... args)  
  •         println "I am a Duck called
    nome args.length" 
  •        class Frog         String nome 
      def quack(... args)  
  •         println "I am a Frog called nome
    args.length" 
  •        def quackers  new Duck(nome "Donald
    "), new Frog(nome "Feioso") for (q in quackers
    )      q.quack 1, true, "Teste"?

13
Collections
  • Como são representadas as coleções?
  •  
  • Suporte nativo de lists, maps e ranges.
  •  
  • List 0, true, "Joao", ...
  •  
  • Map chave" "valor", ...?
  •  
  • Range -5..10? ou 'a'..'z'?
  •  
  • each, find, findAll, sort, collect

14
Exemplo Collections
  • def list  5, 6, 7, 8def map  "nome""Mateus"
    , "idade"19def range  0..10list.sort  it  
    //5, 6, 7, 8
  • map.find  key, value -gt 
  •     key  "nome"  value  "Mateus"
  •  //nomeMateus
  • list.findAll  value -gt value gt 6  //7, 8
  • range.each  println it  //conta ate 10

15
Operators, Categories e Mixins
  • Operadores especiais em Groovy
  • as e in
  • ?.             (null-safe)
  • .              (coleção)
  • ?             (condição)
  • e    (expressão regular)
  • Categories e Mixin em Groovy
  • Agregam funções e atributos para uma classe
  • Melhor uso em classes JDK e third-party (nao
    mexer no código)

16
Exemplo Operators, Categories e Mixins
  • interface Estudante     def estudar()
  • class Aluno implements Estudante  
      String nome    Integer idade 
      def estudar()  println "estudando.." Aluno
     aluno1  new Aluno(nome "Mateus", idade 19)Alu
    no aluno2  new Aluno(nome "Lucas", idade 20)Al
    uno aluno3  null

17
Exemplo Operators
  • //Operador .?println aluno3.nome //throws
    NullPointerExceptionprintln aluno3?.nome //ok//
    Operador .def alunos  aluno1, aluno2println 
    alunos.idade.sum() / alunos.size()
     //19.5//Operador inprintln aluno1 in Estudante
     //trueprintln aluno1 in Object  
     //true//Operador asdef estudante  
  • estudar println "estudante nao aluno
  •  as Estudante
  • estudante.estudar()

18
Exemplo Categories e Mixins
  • _at_Category(Aluno) class AlunoDorminhoco       
      def dormir()  println "zzzzz" _at_Mixin(Aluno
    Dorminhoco)class Aluno implements Estudante  
      ...
  • aluno1.dormir() //zzzzz

19
Groovy Beans vs Java Beans
  • Qual é a vantagem de usar Groovy Beans?
  • JavaBeans com sintaxe simplificada
  • Construtor dinâmico (mapa com valores)
  • Gera getter e setter sem precisar declarar
  • Listeners e forma de closures

20
Exemplo Groovy Beans
  • class Customer          Integer id      
      String name         void setName(String name) 
            this.name  "Senhor "name 
      Customer customer  new Customer()customer
    .id  1234              //setcustomer.name  ?"Ma
    nolo"       //setprintln customer.id          
      //get 1234println customer.name        
      //get Senhor Manolo

21
Groovy vs Java
  • Condição objeto null false, objeto com
    referencia true
  • Finalização com ponto e vírgula opcional
  • Return opcional
  • Switch com strings, ranges, etc.
  • Concatenar por dentro de strings
  • SwingBuilter simplifica a declaracao, o
    posicionamento e os eventos dos elementos Swing
    (Java)

22
Caracteristicas do Groovy inexistente no java
  • Closure.
  • Sintaxe nativa para listas e mapas.
  • Interação polifórmica no switch-case.
  • Tipo dinâmico ou estático são aceitáveis, por
    isso pode-seomitir o tipo na hora de declarar
    métodos ou variáveis.
  • Pode-se embutir expressões lógicas dentro de um
    String.
  • Sintaxe simplificada para escrever beans, com
    facilidade deadição e manipulação nas
    propriedades de eventos listeners.

23
Frameworks (utilizaçao)
  • Grails heavyweight web framework (MVC)
  •     http//grails.org/
  • Griffon desktop framework (MVC)
  •     http//griffon.codehaus.org/
  • Gaelyk lightweight web framework pra Google App
    Engine
  •     http//gaelyk.appspot.com/

24
Exemplo aplicação Grails
  • "Como fazer um Twitter em 5 minutos"

25
  • I can honestly say if someone had shown me
    the Programming Scala book by Martin Odersky, Lex
    Spoon Bill Venners back in 2003 Id probably
    have never created Groovy. James Strachan.

26
Referências
  • http//groovy.codehaus.org/
  • http//groovyconsole.appspot.com/
Write a Comment
User Comments (0)
About PowerShow.com