A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Ruby (2/2) André Braga Patrícia Lustosa. Intro Peguem a aula de ontem em /~plvr para ter como referência para os exercícios de hoje.

Apresentações semelhantes


Apresentação em tema: "Ruby (2/2) André Braga Patrícia Lustosa. Intro Peguem a aula de ontem em /~plvr para ter como referência para os exercícios de hoje."— Transcrição da apresentação:

1 Ruby (2/2) André Braga Patrícia Lustosa

2 Intro Peguem a aula de ontem em /~plvr para ter como referência para os exercícios de hoje

3 Exercício Construa uma Expressão Regular para buscar por padrões que contenham a expressão “~if734” e que não tenham: – Nenhum número imediatamente após – Nenhum espaço em branco diretamente antes, mas haja algum outro dígito Faça um método para calcular o fatorial de um número usando a estrutura de controle times

4 Métodos 1)

5 Return Values Métodos retornam o valor do último statement avaliado Um return statement explícito também pode ser usado

6 Default Value Argument Valor default de um parâmetro pode ser especificado durante a definição de um método

7 Variable Length Argument List Último parâmetro de um método pode ser precedido por * indicando que mais de um parâmetro pode ser passado para a função Esses parâmetros são colecionados e um array é criado

8 Array Argument Asterístico (*) também pode ser usado para preceder um array passado como parâmetro para um método O array é expandido e os parâmetros são passados como se tivessem separados por vírgulas

9 Hash Argument Hash pode ser passado quando uma função é invocada Une o melhor dos dois mundos: paramêtros com nome e quantidade de parâmetros variável

10 Declarando Visibilidade Por default, todos os métodos são public O acesso pode ser restringido através dos métodos public, protected ou private – Não são palavras chave, mas sim métodos que operam na classe, alterando dinamicamente a visibilidade dos métodos

11 Declaring Visibility Se private for chamado sem argumentos, ele seta para private todos os métodos subsequentes

12 Declaring Visibility

13 Exercício Defina uma classe Funcionário que contém um construtor que recebe um nome e n dependentes (n >= 0) Crie um novo funcionário com 3 dependentes e imprima-os

14 Blocos 2)

15 O que são blocos? Funções (ou pedaçoes de código) anônimas Bloco como parâmetro para uma função – Realizar iterações passando elementos como parâmetro para a “função anônima”-parâmetro

16 Passando blocos yield()

17 Blocos com parâmetros yield() pode receber os parâmetros do bloco

18 Iteração each, map, select, reject Reject funciona da mesma forma

19 Map & ! new

20 Exercício 1 Faça um programa que crie uma PG com fator 7 de 15 números e: – Exclua os elementos menores que 36 – Crie um Hash com os elementos que sobrarem, onde a chave de cada elemento é o próprio valor no formato de String. – No final, imprima as chaves e valores do Hash. Dica: Vá no irb (Hash.methods ) ou no fxri para descorir métodos da classe Hash.

21 Exercício 2 Use o código da questão anterior de forma que ele seja passado como um bloco para uma outra função. Esse bloco deve receber como parâmetro a quantidade de elementos da PG, o fator e o valor mínimo.

22 Exceções 3)

23 Exception Class Exceções são implementadas como classes que herdam de Exception

24 Exception Handling

25 DSL 4)

26 Embedded DSL Embutir uma DSL em uma linguagem host pode ser usada para defini-la, no lugar de construir um compilador ou interpretador

27 Embedded DSL Embutir uma DSL em uma linguagem dinâmica é uma técnica conhecida – Sintaxe não-intrusiva – Habilidade de avaliar expressões a medida que elas aparecem no programa Em uma embedded DSL, o designer extende as construções da linguagem host com construções de domínio específico ao invés de construir um parser

28 Meta-modelos Meta-modelo define a sintaxe abstrata de uma DSL Uma linguagem de meta-modelagem pode ser considerada uma DSL para definir meta- modelos

29

30 Embedded DSL Essa abordagem para implementar uma DSL gasta menos tempo do que um gerador de parser – Não há necessidade de lidar com gramática ou árvore sintática abstrata Por outro lado, definir uma sintaxe abstrata arbitrária é impossível, porque há a limitação da sintaxe da linguagem host

31

32

33 Ruby on Rails 5)

34

35 Convention over Configuration Don’t Repeat Yourself (DRY) Agile Development Environment Práticas-padrão Adaptabilidade Geração de código Testes Recompilação, deploy…

36 Alguns pontos Migrations – Gerencia evolução de um schema (BD) Rake – Linguagem de “build” para Ruby – Automatiza tarefas: create e drop de tabelas, testes, atualiza arquivos de suporte, etc. Generator URL Routing – Permite expressões regulares

37 Scaffolding Cria “esqueleto” Prototipação rápida Padrões para: – Listar – Criar – Atualizar – Remover Lógica e template defaults


Carregar ppt "Ruby (2/2) André Braga Patrícia Lustosa. Intro Peguem a aula de ontem em /~plvr para ter como referência para os exercícios de hoje."

Apresentações semelhantes


Anúncios Google