close

FECHAR

Ir para a navegação Ir para a pesquisa

CLOS ( Inglês  Common Lisp Object System  - “ Common Lisp 's object system ”, pronunciado como inglês  see-loss [1] ) é um sistema de programação orientado a objetos que faz parte do Common Lisp  - o padrão da linguagem Lisp . Além disso, está embutido em outros dialetos como EuLisp ou Emacs Lisp [2] . Inicialmente proposto como um complemento, o CLOS foi adotado como parte do padrão ANSI CommonLisp.

O CLOS possui as seguintes características:

  • Despacho múltiplo (ou seja, o método a ser chamado é determinado por todos os argumentos, não apenas pelo primeiro), ou " multimétodos ".
  • Portanto, os métodos não são definidos dentro das classes. Eles são conceitualmente agrupados em "funções generalizadas".
  • O CLOS não oferece esconderijo. A ocultação é fornecida por outra parte do Common Lisp  , os pacotes.
  • A herança pode fazer com que os métodos da superclasse sejam combinados de várias maneiras à escolha do programador, não apenas substituindo-os simplesmente.
  • O CLOS é dinâmico, ou seja, não apenas o conteúdo, mas também a estrutura dos objetos podem mudar enquanto o programa está em execução. O CLOS suporta a alteração da estrutura de uma classe em tempo real (mesmo que já existam instâncias de uma determinada classe), bem como a alteração da classe de uma determinada instância usando o método CHANGE-CLASS.
  • Herança múltipla .

A maioria das implementações do Common Lisp suportam o protocolo metaobject descrito em The Art of the Metaobject Protocol [3] , mas não incluído no padrão.

Notas

  1. Peter Norvig. "Paradigmas de programação de inteligência artificial: estudos de caso em Common Lisp"
  2. "CLOS é o padrão. Muitos fornecedores oferecem CLOS. CLOS (ou partes dele) é usado para adicionar recursos orientados a objetos a outros dialetos Lisp, como EuLisp ou Emacs Lisp." página 110 Veitch
  3. Parte do livro que descreve diretamente o Protocolo MetaObject Arquivado do original em 21 de janeiro de 2013.

Literatura

  • Handbook of Programming Languages ​​(HPL), Volume 4: Functional and Logic Programming Languages/Editor Peter H. Salus. - Macmillan Technical Publishing, 1998. - 250 p. — ISBN 1-57870-011-6 . , Jim Veitch, em CLOS, pp. 107-158