Common Lisp Object System

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

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ências

  • 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 (1998). Handbook of Programming Languages. 4, Functional and Logic Programming Languages 1 ed. [S.l.]: Peter H. Salus. pp. 107–158, A History and Description of CLOS. ISBN 1-57870-011-6 

Literatura

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.