The Common Lisp Object System (CLOS) is the facility for object-oriented programming which is part of ANSI Common Lisp. CLOS is a dynamic object system which differs radically from the OOP facilities found in more static languages such as C++ or Java. CLOS was inspired by earlier Lisp object systems such as MIT Flavors and CommonLOOPS, although it is more general than either.

PropertyValue
dbpprop:abstract
  • The Common Lisp Object System (CLOS) is the facility for object-oriented programming which is part of ANSI Common Lisp. CLOS is a dynamic object system which differs radically from the OOP facilities found in more static languages such as C++ or Java. CLOS was inspired by earlier Lisp object systems such as MIT Flavors and CommonLOOPS, although it is more general than either. Originally proposed as an add-on, CLOS was adopted as part of the ANSI standard for Common Lisp and has been adapted into other Lisp dialects like EuLisp or Emacs Lisp.
  • Das Common Lisp Object System ist die objektorientierte Erweiterung der Programmiersprache Common Lisp. Es hat seine Ursprünge in Loops und Flavors, und ist im ANSI-Standard für Common Lisp spezifiziert. CLOS wird (optional) durch das Metaobject Protocol implementiert. Das MOP ist nicht standardisiert, viele Implementierungen halten sich aber im groben an die Spezifizierung aus dem Buch The Art of Metaobject Protocol, welches oft einfach als AMOP bezeichnet wird.
  • CLOS es el acrónimo inglés de Common Lisp Object System y es una extensión de ANSI Common Lisp para permitir la programación orientada a objetos que ha sido adoptada por otros dialectos de Lisp como EuLisp o Emacs Lisp. Inicialmente fue propuesta como un añadido del lenguaje, pero posteriormente CLOS fue adoptado como parte de estándar ANSI de Common Lisp. CLOS es un lenguaje de programación dinámico dirigido a objetos que difiere mucho de lo que podemos encontrar en lenguajes de programación estáticos orientados a objetos como C++ o Java. CLOS está inspirado en sistemas Lisp orientados a objetos anteriores como MIT Flavors o Common LOOPS, aunque es más genérico que éstos. Precisamente la generalidad de CLOS es la carácterística más difícil de obtener, aunque crear un sistema OO en Lisp es fácil: Conseguir que Lisp sea orientado a objetos es fácil: se puede hacer en tan sólo dos páginas de código (Paul Graham, 1994). Pero hacer que Lisp sea orientado a objetos y a la vez tan extensible y flexible como el resto de sistema Lisp es más complicado. A pesar de que CLOS es un completo sistema de orientado a objetos, CLOS se implementa siguiendo el modelo de la programación orientada a objetos. La implementación orientada a objetos de CLOS se conoce como CLOS Metaobject Protocol o MOP y permite que el sistema sea extensible y personalizable. CLOS es un sistema de resolución múltiple. Esto significa que los métodos se pueden distinguir según los tipos de todos los argumentos. Muchos lenguajes OO son de resolución simple, sus métodos sólo se distinguen con el primer argumento. Los métodos en CLOS se agrupan en funciones genéricas, colecciones de métodos con el mismo nombre y estructura de argumentos, pero con argumentos de tipos diferentes. Como los sistemas OO en muchos lenguajes dinámicos, CLOS no provee encapsulamiento. Cualquier miembro de datos (o slot) puede ser accedido utilizando la función slot-value. Los programadores de CL utilizan la herramienta de empaquetamiento para declarar qué funciones o estructuras de datos se quiere exportar. Aparte de los métodos normales ("primarios"), también existen métodos :before, :after y :around. Éstos modifican el orden en que los métodos se ejecutan en una clase derivada. Un método :around puede especificar si el método primario es ejecutado por completo. Además el programador puede ajustar si todos los posibles métodos primarios a lo largo de la jerarquía de clases deberían ser llamados o únicamente el que más se parezca. CLOS permite herencia múltiple. Cuando el orden por defecto en que los métodos se ejecutan en herencia mútiple no es correcto, el programador puede resolver el problema del diamante especificando el orden de combinación de los métodos. CLOS es dinámico, no sólo los contenidos, sino también las estructuras de los objetos se pueden modificar en tiempo de ejecución. CLOS soporta la carga de definiciones de clases al vuelo (incluso cuando las instancias de las clases ya existen) así como el cambio de los miembros de la clase de una instancia dada a través del operador change-class. CLOS no es un lenguaje basado en prototipos, las clases tienen que ser definidas antes de que los objetos puedan ser instanciados como miembros de esa clase. Fuera del estándar ANSI, hay una extensión de CLOS ampliamente utilizada llamada MOP o protocolo de meta-objetos. EL MOP define un interfaz estándar para apuntalar las implementaciones de CLOS, tratando a las propias clasescomo instancias de metaclases y permite la definición de nuevas metaclases y la modificación del comportamiento cásico. La flexibilidad de las CLOS-MOP adelanta la Programación Orientada a Aspectos que fue desarrollada más tarde por algunos de los mismos ingenieros, como Gregor Kiczales.
  • Le Common Lisp Object System, souvent abrégé en CLOS (prononcé 'si-lauss'), est l'ensemble des primitives présentes dans le langage de programmation Common Lisp pour construire un programme orienté objet. Il existe également une version de CLOS pour le langage Scheme, nommée TinyClos.
  • Common Lisp Object System(コモン リスプ オブジェクトシステム、略称 CLOS)は、ANSI Common Lisp (CL) の一部をなすオブジェクト指向プログラミング機能であり、他の類似の言語(EuLisp や Emacs Lisp)にも導入されている。当初アドオンとして提案され、ANSIの標準に組み込まれた。CLOS は動的オブジェクトシステムであり、C++やJavaのような静的なオブジェクト指向言語とは大きく異なる。初期のLISPオブジェクトシステム(MIT Flavors や Common LOOPS)に影響されているが、より汎用的である。この汎用性を持たせることが難しい点である。 LISPにオブジェクト指向を導入することは簡単である。2ページ程度のコードがあれば実現できる(Graham, 1994)。オブジェクト指向LISPを柔軟で拡張性に富んだものにするのはもっと難しい。CLOS は完全なオブジェクトシステムであり、オブジェクト指向風に実装されている。CLOS のオブジェクト指向実装は CLOS Metaobject Protocol (MOP) と呼ばれ、これによってカスタマイズや拡張が可能となっている。 CLOS は多重ディスパッチシステムである。すなわち、引数のデータ型によってメソッドを用意できる。多くのオブジェクト指向言語は単一ディスパッチであり、メソッドは第一引数のデータ型でしか多重化できない。CLOS のメソッドは総称関数にグループ化される。総称関数は同じ名前と引数構造を持つ(ただし個々の引数のデータ型が異なる)メソッドを集めたものである。 多くの動的オブジェクト指向言語(Pythonなど)と同様、CLOS ではカプセル化が行われない。任意のデータ(スロット)に slot-value 関数でアクセス可能である。CL のプログラマはパッケージ機能を使って外部に見せるデータ構造や関数を宣言する。 通常のメソッド以外に、:before メソッド、:after メソッド、:around メソッドがある。これらは派生クラスで実行するメソッドの順序を変更する。:around メソッドは主メソッドを実行するかしないかを指定できる。また、クラス階層上の全ての主メソッドを呼び出すか、それとも最も近い主メソッドだけを実行するかを選択することもできる。 CLOS は多重継承を許している。多重継承でメソッドが実行されるデフォルトの順序が正しくない場合、菱形継承問題をメソッドの組み合わせを指定することで解決できる。 CLOS は動的であり、オブジェクトの内容だけでなく「構造」を実行時に変更できる。CLOS は実行時に(既にそのクラスがインスタンスを持っていても)クラス定義を変更でき、インスタンスが属するクラスを change-class で変更できる。 CLOS はプロトタイプベースではない。インスタンスをあるクラスのメンバーとして作成するには事前にそのクラスを定義しなければならない。 ANSI 標準の範囲外だが、CLOS の実装に広く採用されている拡張としてメタオブジェクトプロトコル(MOP)がある。MOP は CLOS 実装基盤に標準インタフェースを定義し、クラスをメタクラスのインスタンスとして扱い、新たなメタクラスを定義したり、基底クラスの振る舞いを修正したりできる。CLOS MOP はアスペクト指向プログラミングの先取りとも言え、実際同じ技術者(Gregor Kiczales など)が関わっている。
  • Common Lisp Object System (CLOS) - zorientowane obiektowo rozszerzenie do Common Lisp, oparte na funkcjach ogólnych, dziedziczeniu wielokrotnym, kombinacji metod deklaracyjnych i protokole metaobiektowym. Pochodna CommonLoops, oparta na opracowanym przez Symbolics języku FLAVORS (Lisp z funkcjami obiektowymi) i LOOPS (Lisp Object-Oriented Programming System) firmy Xerox.
  • 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, ainad 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.
  • CLOS (англ. Common Lisp Object System — «объектная система Common Lisp’а») — мощная система объектно-ориентированного программирования, являющаяся частью Common Lisp — стандарта языка Лисп. Кроме того, её встраивают в другие диалекты, такие как EuLisp или Emacs Lisp. Вначале предложенная как дополнение, CLOS была принята в качестве части стандарта ANSI CommonLisp. CLOS имеет следующие особенности: Множественная диспетчеризация (то есть вызываемый метод определяется всеми аргументами, а не только первым), или «мультиметоды». Поэтому методы не определяются внутри классов. Они концептуально группируются в «обобщённые методы». CLOS не обеспечивает сокрытия. Сокрытие обеспечивается другой частью Common Lisp — пакетами. Наследование может приводить к тому, что методы суперклассов комбинируются различными способами по выбору программиста, а не только простым переопределением. CLOS является динамическим, то есть не только содержимое, но и структура объектов может меняться во время работы программы. CLOS поддерживает изменение структуры класса на лету (даже если экземпляры данного класса уже существуют), равно как и смену класса данного экземпляра с помощью метода CHANGE-CLASS. CLOS поддерживает множественное наследование и нестандартизированный метаобъектный протокол.
dbpprop:hasPhotoCollection
dbpprop:reference
rdfs:comment
  • The Common Lisp Object System (CLOS) is the facility for object-oriented programming which is part of ANSI Common Lisp. CLOS is a dynamic object system which differs radically from the OOP facilities found in more static languages such as C++ or Java. CLOS was inspired by earlier Lisp object systems such as MIT Flavors and CommonLOOPS, although it is more general than either.
  • Das Common Lisp Object System ist die objektorientierte Erweiterung der Programmiersprache Common Lisp. Es hat seine Ursprünge in Loops und Flavors, und ist im ANSI-Standard für Common Lisp spezifiziert. CLOS wird (optional) durch das Metaobject Protocol implementiert. Das MOP ist nicht standardisiert, viele Implementierungen halten sich aber im groben an die Spezifizierung aus dem Buch The Art of Metaobject Protocol, welches oft einfach als AMOP bezeichnet wird.
  • CLOS es el acrónimo inglés de Common Lisp Object System y es una extensión de ANSI Common Lisp para permitir la programación orientada a objetos que ha sido adoptada por otros dialectos de Lisp como EuLisp o Emacs Lisp. Inicialmente fue propuesta como un añadido del lenguaje, pero posteriormente CLOS fue adoptado como parte de estándar ANSI de Common Lisp.
  • Le Common Lisp Object System, souvent abrégé en CLOS (prononcé 'si-lauss'), est l'ensemble des primitives présentes dans le langage de programmation Common Lisp pour construire un programme orienté objet. Il existe également une version de CLOS pour le langage Scheme, nommée TinyClos.
  • Common Lisp Object System (CLOS) - zorientowane obiektowo rozszerzenie do Common Lisp, oparte na funkcjach ogólnych, dziedziczeniu wielokrotnym, kombinacji metod deklaracyjnych i protokole metaobiektowym. Pochodna CommonLoops, oparta na opracowanym przez Symbolics języku FLAVORS (Lisp z funkcjami obiektowymi) i LOOPS (Lisp Object-Oriented Programming System) firmy Xerox.
  • 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, ainad que seja mais genérico.
  • CLOS (англ. Common Lisp Object System — «объектная система Common Lisp’а») — мощная система объектно-ориентированного программирования, являющаяся частью Common Lisp — стандарта языка Лисп. Кроме того, её встраивают в другие диалекты, такие как EuLisp или Emacs Lisp.
rdfs:label
  • Common Lisp Object System
  • Common Lisp Object System
  • CLOS
  • Common Lisp Object System
  • Common Lisp Object System
  • Common Lisp Object System
  • Common Lisp Object System
  • CLOS
owl:sameAs
skos:subject
foaf:page
is dbpprop:influenced of
is dbpprop:influencedBy of
is dbpprop:redirect of