Scheme

Disponível somente no TrabalhosFeitos
  • Páginas : 31 (7739 palavras )
  • Download(s) : 0
  • Publicado : 21 de outubro de 2011
Ler documento completo
Amostra do texto
Capítulo 6- Introdução à programação OO em Scheme
Objectos, mensagens, métodos e classes Objectos e heranças Objectos com história; classe-caixa Objectos com história; classe-coleccao Abstracções com objectos - classe-pilha Exercícios e exemplos
Classe-fila Classe-lista-circular Projecto - Jogo de Dados Projecto - Vidas

Na programação orientada por objectos, os objectos são entidadesmodulares que respondem a mensagens. Para cada mensagem, o objecto tem previsto um método, através do qual lhe responde. A partir de um objecto é possível derivar um novo objecto. Diz-se que este novo objecto envia mensagens para o objecto que esteve na sua origem. Também é habitual dizer-se que o novo objecto herda, total ou parcialmente, os métodos daquele objecto. O grande interesse da programaçãoorientada por objectos reside, em grande parte, na modularidade que apresenta, pois cada objecto surge como se fosse um módulo, e no reaproveitamento de código existente que este paradigma de programação oferece. O Scheme não é, propriamente, uma linguagem vocacionada para a programação orientada por objectos, característica que é mais notória em linguagens como Java, C++, Smalltalk ou Simula, maspermite, com relativa facilidade, introduzir os conceitos deste importante paradigma de programação.

1- Objectos, mensagens, métodos e classes Um objecto reage a um certo conjunto de mensagens, tendo para cada uma delas um método. Por exemplo, um objecto flor poderá reagir às mensagens identifica, duracao e cor, dispondo para tal dos métodos respectivos. À mensagem identifica, reage o objecto comum método que devolve o nome que lhe está associado. O método, correspondente à mensagem duracao, devolve o tempo médio de vida da flor, enquanto que o método cor devolverá a cor dessa flor. Em Scheme, uma objecto flor, com a identificação cravo, de cor amarelo, e com a duração média de 20-dias, é facilmente implementado através de um procedimento que se designa por flor-11.
(define flor-1(lambda msg (let ((m (car msg))) (cond ((equal? m 'identifica) 'cravo) ((equal? m 'duracao) '20-dias) ((equal? m 'cor) 'amarelo)))))

identifica duracao cor

flor-1 método-1 método-2 método-3

Nos comandos que se seguem, exemplifica-se o envio de mensagens ao objecto flor-1 e as respostas dadas pelos métodos respectivos. a (flor-1 'identifica)
O procedimento flor-1 foi definido de forma a poderreceber um número não fixo de argumentos, funcionalidade que não se justificava neste caso, mas que será extremamente útil na definição de outros objectos e que, por isso, já foi aqui adoptada
1

Capítulo 6- Introdução à programação OO em Scheme

2

cravo

a (flor-1 'duracao)
20-dias

a (flor-1 'cor)
amarelo

Para evitar a reescrita de um objecto flor sempre que for necessário umnovo objecto com estas características, define-se uma classe de objectos através do procedimento com a designação classe-flor. Uma chamada a este procedimento cria um objecto flor, dizendo-se que este objecto é uma instância de classe-flor.
(define classe-flor (lambda (nome tempo-vida cor) (lambda msg (let ((m (car msg))) (cond ((equal? m 'identifica) nome) ((equal? m 'duracao) tempo-vida)((equal? m 'cor) cor))))))

classe-flor identifica duracao cor método-1 método-2 método-3

Naturalmente, o procedimento classe-flor tem como parâmetros as três características com que se definem estes objectos e devolve, por cada chamada, um procedimento semelhante ao designado por flor-1. a (define igual-a-flor-1 (classe-flor 'cravo '20-dias 'amarelo))
flor-1

a (igual-a-flor-1 'identifica)cravo

a (define flor-rosa (classe-flor 'rosa '8-dias 'vermelha)) flor-rosa a (flor-rosa 'identifica)
rosa

2- Objectos e heranças Também se podem criar objectos a partir de objectos de outras classes. Como exemplo, vai-se definir a classe-flor-perfumada que cria objectos com os métodos já considerados em classe-flor, e ainda o método perfume, que devolve a caracterização da fragrância...
tracking img