Lab4 Ricardo Tominaga

aluno: Ricardo Itiro Sabota Tominaga
ano/sem: 2008/2o.
data do laboratório (num. da semana) : 04/11/2008 (6)

Introdução

Este laboratório teve por objetivo a introdução à linguagem de programação Ruby através da portabilização do código de um laboratório passado.

Desenvolvimento

Tipagem dinâmica

Uma das mais práticas características da linguagem Ruby é a tipagem dinâmica. Ela permite a determinação de um tipo em tempo de execução, ao contrário da tipagem estática, que determina um tipo em tempo de compilação. Algumas das vantagens da tipagem dinâmica que foram notadas durante a execução do laboratório:

  • Não há necessidade de determinar tipos de retorno;
  • Os tipos genéricos deixam de existir;
  • Não há classes nem métodos abstratos;
  • Não é necessário se declarar as variáveis nem especificar seus tipos;
  • Conseqüente redução de linhas de código.

Duas diferenças bem claras com relação ao código portabilizado são:

  • Eliminação da classe comportamento;
  • Eliminação da classe queue genérica.

No caso do comportamento, ele é definido apenas passando um objeto que possui o respectivo comportamento.

...
def initialize(nome,fila)
    @nome = nome
    @fila = fila
    @comportamento = Esforcado.new
  end
  attr_writer :comportamento
...

No caso da queue genérica, o tipo armazenado na fila é definido em runtime.

class Queue
  def initialize
    @fila ||= []
  end
  def queue(elem)
    @fila.push elem
  end
  def dequeue
    return @fila.shift
  end
end

Getters e Setters

A convenção sintática para se escrever getters e setters é muito comprimida, no bom sentido, pois é simples e ocupa, geralmente, uma linha de código, enquanto que em Java seriam necessárias três ou quatro linhas.

...
attr_reader :qualidade,:originalidade,:aluno
...

Exceções

O lançamento e o tratamento de exceções é tão bom quanto o do Java, com a vantagem que não é necessário instanciar classe alguma para se lançar exceções.

Lançando:

...
raise "USP nao tem Summa" if comportamentoo.is_a?(Summa)
...

Tratando:

...
begin alunos.last.comportamento = Burro.new
          rescue Exception => e
            puts "Erro: "+e
          end
...

Testes

Classe teste

A classe teste portabilizada é executada com sucesso.

teste1.jpg

Simulador

Execução de um exemplo no simulador.

teste2.jpg
teste3.jpg
teste4.jpg

Conclusão

Foi possível, através do desenvolvimento desse laboratório, ter um bom contato com a linguagem Ruby. Ela se mostrou uma ferramenta eficiente, pois apresenta alta produtividade e diversas facilidades, tanto pela sua sintaxe simples quanto pelo fato de ter tipagem dinâmica e ser funcional. Até mesmo em relação à linguagem Java, a linguagem Ruby consegue fazer frente. Isso pode ser percebido pela redução da quantidade de linhas de código do programa escrito nessa linguagem. A organização do código através de indentação o deixa bem organizado e legível, além de poupar o programador de digitar grande número de caracteres não alfanuméricos, os quais diminuem a velocidade de produção. Enfim, o autor gostaria de dizer que em princípio tinha um certo preconceito com relação a essa nova linguagem, mas no decorrer da sua utilização ela provou sua utilidade.

Add a New Comment
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License