Common Lisp Object System

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa

O Common Lisp Object System (CLOS) é uma funcionalidade de programação orientada a objeto que faz parte do ANSI Common Lisp, e consiste de um sistema de objetos dinâmicos que difere radicalmente das funcionalidades encontradas em linguagens mais estáticas como C++ or Java. O CLOS foi inspirado em sistemas de objetos Lisp mais antigos como o MIT Flavors e o CommonLOOPS, ainda que seja mais genérico. Originalmente proposto como uma funcionalidade adicional, acabou sendo adotado pela norma ANSI do Common Lisp e tem sido adaptado em outros dialetos da linguagem como EuLisp e Emacs Lisp.

Funcionalidades[editar | editar código-fonte]

CLOS é um sistema de multimétodo, o que significa que os métodos podem ser especializados a partir dos tipos de seus argumentos. A maioria das linguagens orientadas a objeto são monométodo, o que significa que os métodos são especializados somente a partir do primeiro argumento. Métodos em CLOS são agrupados em funções genéricas; uma função genérica é uma coleção de métodos com o mesmo nome e estrutura de argumentos, diferindo somente nos tipos dos argumentos.

Assim como sistema orientados a objeto na maioria das linguagens dinâmicas, (como Python), o CLOS não impõe encapsulamento; qualquer membro pode ser acessado utilizando-se a função de acesso.

Além dos métodos normais, existem também os métodos :before, :after e :around. Eles modificam a ordem em que os métodos são executados na classe derivada. Um método :around pode especificar se um método pode ser executado.

O CLOS permite herança múltipla. Quando a ordem padrão em que os métodos são executados na herança múltipla não está correta, o programaador pode resolver o problema especificando a ordem manualmente.

Referência[editar | editar código-fonte]

  • Daniel G. Bobrow, Kenneth Kahn, Gregor Kiczales, Larry Masinter, Mark Stefik, Frank Zdybel. "CommonLoops: merging Lisp and object-oriented programming". 1986, Portland. Páginas 17 - 29 da Conference on Object Oriented Programming Systems Languages and Applications, ISSN 0362-1340.
  • Jim Veitch. Handbook of Programming Languages. 1. ed. [S.l.]: Peter H. Salus, 1998. 107-158, A History and Description of CLOS pp. vol. 4, Functional and Logic Programming Languages. ISBN 1-57870-011-6.

Literatura[editar | editar código-fonte]