SlideShare una empresa de Scribd logo
1 de 33
Descargar para leer sin conexión
Curso de Doctorado: Tecnologías de 
Objetos 
Grupo IMO 
Área de Lenguajes y Sistemas Informáticos 
Departamento de Informática 
J. Baltasar García Perez­Schofield 
http://webs.uvigo.es/jbgarcia/
El modelo de orientación a objetos basado 
en prototipos
Orientación a objetos basada en prototipos 
➲ Existen dos corrientes principales: 
● Lenguajes orientados a objetos basados en clases: C++, 
Object Pascal, Java, Eiffel ... son los más utilizados por la 
industria. 
● Lenguajes orientados a objetos basados en prototipos: Self, 
Kevo, Poet/Mica, Cecil ... son todos ellos experimentales, es 
decir, no se utilizan en la industria. 
➲ En realidad, el modelo de prototipos engloba al de 
clases.
Terminología 
➲ Estado: los atributos (terminología SmallTalk) o datos 
miembro (terminología C++) de un objeto. En el caso de 
un coche, su color, su longitud, cilindrada, ... 
➲ Comportamiento: los métodos (SmallTalk) o funciones 
miembro (C++) de un objeto. En el caso de un coche, 
arrancar, acelerar, frenar, apagar. 
➲ Mensaje: ejecución de un método de un objeto. Si un 
objeto tiene un método f(), mandarle a O el mensaje f es lo 
mismo que ejecutar O.f()
Orientación a objetos basada en clases 
➲ Una clase es un “tipo” 
de objetos, es decir, un 
molde del que se 
obtienen nuevos 
objetos, que comparten 
similar comportamiento, 
cambiando el estado de 
los mismos.
Orientación a objetos basada en prototipos 
➲ No existen las clases. 
De hecho, todos los 
objetos son iguales en 
cuanto a categoría. 
➲ Los nuevos objetos se 
copian de otros ya 
existetntes. Algunos de 
ellos son prototipos.
Orientación a objetos basada en prototipos 
➲ Normalmente, en este 
tipo de lenguajes los 
objetos pueden 
modificarse, añadiendo 
o borrando métodos y 
atributos. 
➲ Cada objeto es 
independiente, no 
necesitando información 
extra de ningún tipo.
Herencia 
➲ La herencia en lenguajes basados en prototipos suele 
ser por delegación. 
● El objeto tiene uno o más aributos parent, de forma que 
cuando no puede responder a un mensaje, le reenvía éste a 
su padre. 
➲ En el caso de los lenguajes basados en clases, ésta 
suele presentarse como concatenación 
● El objeto está compuesto por las partes que define cada 
una de las clases de las que hereda.
Herencia mediante delegación 
➲ Existe una cadena de 
objetos apuntando a sus 
padres, hasta llegar a un 
objeto padre de todos.
Herencia por concatenación 
➲ Todos los atributos y métodos heredados están disponibles 
en el mismo objeto (si bien se necesita la clase para poder 
interpretarlos).
Respuesta a mensajes 
➲ Cuando un objeto no puede responder un mensaje, 
porque no posee el miembro (atributo o método), que 
se le pide, reenvía el mensaje al objeto que marca su 
atributo parent. 
➲ Las relaciones de herencia, en lugar de ser un caso 
aparte, pasan a ser un caso particular de las 
relaciones de composición.
Respuesta a mensajes 
➲ Ejemplo. Dados los objetos: 
object A 
method + foo() { 
System.console.write( “foo” ); 
return; 
} 
endObject 
object B : A 
endObject
Respuesta a mensajes 
➲ El mensaje: 
MSG B foo 
B.foo() 
➲ No encuentra el método foo() en el objeto B, así que 
se sigue el atributo parent, que apunta a A, que sí 
tiene ese método, y es ejecutado. 
➲ Si no se encontrara, entonces se produciría un error, 
que normalmente se traduce en una excepción. En 
este caso, la excepción producida sería “Método no 
encontrado”, o “Mensaje no entendido”.
Creación de Objetos 
➲ Al crearse los nuevos objetos mediante copia, no es 
necesario que existan los constructores de los 
lenguajes orientados a objetos basados en clases. 
➲ Los objetos no sólo definen los tipos de datos de los 
atributos, como en las clases, sino que además ya 
tienen un valor asociado.
Creación de Objetos 
➲ Por ejemplo: 
object Persona 
attribute + nombre = “Juan”; 
attribute + apellidos = “Nadie”; 
attribute + telefono = “906414141”; 
attribute + edad = 18; 
attribute + direccion = “cPercebe”; 
method + toString() { 
reference toret; 
toret = nombre.concat( apellidos ); 
return toret; 
} 
endObject
Creación de objetos 
➲ El objeto Persona es un prototipo que servirá para 
crear nuevos objetos, aunque no existe ninguna 
diferencia entre un prototipo y cualquier otro objeto. 
➲ Por ejemplo: 
p = Persona.copy( “PaulaMarquez” ); 
➲ Si se le envía el mensaje copy al objeto Persona, 
entonces se creará un nuevo objeto copia exacta de 
Persona, con el nombre “PaulaMarquez”, cuyos 
atributos serán modificados convenientemente.
Creación de objetos 
➲ Crear un objeto de Persona: 
p = Persona.copy( “PaulaMarquez” ); 
p.ponNombre( “Paula” ); 
p.ponApellidos( “Márquez Márquez” ); 
...
El modelo de prototipos incluye al de 
clases 
➲ Los objetos que sirven de prototipos son equivalentes 
a las clases de aquellos lenguajes orientados a 
objetos basados en clases. 
➲ La diferencia es que este modelo es mucho más 
flexible que el de clases. 
➲ Incluso una “clase” en este modelo puede modificarse, 
al no ser más que un objeto. 
➲ La delegación es un mecanismo altamente flexible, 
separando a los objetos de sus prototipos, como en 
los lenguajes basados en clases, pero no al 
comportamiento del estado.
Herencia dinámica 
➲ En el caso de estar implementada por delegación, se 
abre una nueva posibilidad: el hecho de poder 
cambiar el atributo (ya que, normalmente, es un 
atributo más) que señala al padre del objeto, hace que 
un objeto pueda ser “hijo” de varios objetos, 
dependiendo del momento de la ejecución. 
➲ El aprovechamiento de esta característica requiere 
cambiar ligeramente el tipo de programación.
Herencia dinámica 
➲ Es posible cambiar, en 
tiempo de ejecución, al 
“padre” de un objeto. 
➲ Es totalmente contrario 
a la corriente actual, que 
trata de detectar todos 
los errores posibles en 
tiempo de compilación.
Herencia dinámica 
➲ En el método insertar cuando el vector está vacío: 
object VectorVacio : Vector 
method + add( obj ) { 
super( obj ); 
parent = VectorUnElemento; 
return; 
} 
method + get(n) { 
return Nothing; 
} 
endObject
Herencia dinámica 
➲ En el método insertar de VectorUnElemento: 
object VectorUnElemento : Vector 
method + put(n, obj) { 
super( 1, obj ); 
parent = VectorNoVacio; 
return; 
} 
method + get(n) { 
return this.get( 1 ); 
} 
endObject
Herencia dinámica 
➲ En el método borrar de VectorNoVacio (que es necesario 
codificar en los otros dos): 
object VectorNoVacio : Vector 
method + delete(n) { 
super( n ); 
if ( this.size() < 2 ) { 
parent = VectorUnElemento; 
} 
return; 
} 
endObject
Herencia dinámica 
➲ Su principal ventaja reside en que los métodos 
pueden escribirse según el tipo del objeto. En 
ListaVacia, no es necesario que 
getNumeroElementos() consulte el tamaño de la lista, 
sólo debe devolver cero. Puede ayudar a solucionar 
errores y hacer el código más simple. 
➲ Su principal desventaja es que precise coordinar 
varios tipos para realizar una serie de tareas. Ésto 
puede conllevar errores y puede hacer las 
modificaciones de código más simples o más 
complicadas..
Lenguajes que siguen el modelo de 
orientación a objetos basado en 
prototipos 
➲ Self 
● Fue creado en los laboratorios de Sun, y muchas partes de 
su sistema son las precursoras de Java. 
● Fue el primero en implementar el modelo de prototipos, que 
también fue inventado por ellos. Self trata de ser todo lo 
dinámico que sea posible, haciendo el mínimo chequeo en 
tiempo de compilación posible. 
● http://research.sun.com/research/self/ 
➲ Io 
● Fue creado por uno de los desarrolladores de Self, 
siguiendo sus directrices principales. 
● http://www.iolanguage.com/
Lenguajes que siguen el modelo de 
orientación a objetos basado en 
prototipos 
➲ Kevo 
● Kevo fue desarrollado para una tesis doctoral, como una 
demostración de que un lenguaje orientado a objetos y 
basado en prototipos podía incorporar técnicas modernas 
como la comprobación de errores que realiza C++, por 
ejemplo, en tiempo de compilación. 
● Implementa herencia por concatenación. 
● Es menos flexible en tiempo de ejecución que Self o Io. 
● ftp://cs.uta.fi/pub/kevo
Lenguajes que siguen el modelo de 
orientación a objetos basado en 
prototipos 
➲ Cecil 
● Cecil fue desarrollado en la universida de Washington. 
Incorpora el concepto de objetos predicados, es decir, que 
mediante una condición inherente al objeto, y la herencia 
dinámica, es posible llevar el concepto de programación por 
contrato al nivel del objeto. 
● Es un lenguaje basado en prototipos. 
● http://www.cs.washington.edu/research/projects/cecil/www/c 
ecil.html
Lenguajes que siguen el modelo de 
orientación a objetos basado en 
prototipos 
➲ Zero. Aún en desarrollo, en la Universidad de Vigo. 
● Todavía no tiene lenguaje, sino sólo un ensamblador. 
● Simple, basado en prototipos. 
● Su principal característica es que incorporará persistencia. 
● http://trevinca.ei.uvigo.es/~jgarcia/TO/zero/
Lenguajes que siguen el modelo de 
orientación a objetos basado en 
prototipos 
➲ Otros lenguajes 
● http://www.programming­x. 
com/programming/prototype­based. 
html
Bibliografía 
➲ Sobre Self y el modelo de prototipos en general: 
● Cuesta, P., García Perez­Schofield, 
B., Cota, M. (1999). 
“Desarrollo de sistemas orientados a objetos basados en 
prototipos”. Actas del Congreso CICC' 99. Q. Roo, México. 
● Smith & Ungar (1995). “Programming as an experience, the 
inspiration for Self”. European Congress on Object­Oriented 
Programming, 1995. 
● Ungar & Smith. (1987). “Self: The power of simplicity”. Actas 
del OOPSLA.
Bibliografía 
➲ Sobre Self y el modelo de prototipos. Cuestiones 
prácticas sobre desarrollo de aplicaciones: 
● Ungar, Chambers et al. (1991). “Organizing 
programs without classes”. Lisp and Symbolic 
Computation 4(3), Kluwer Academic Publishers, 
June, 1991 
● Chambers, Ungar, Chang y Hözle. (1991). 
“Parents are Shared Parts: Inheritance and 
Encapsulation in Self”. Lisp and Symbolic 
Computation 4(3), Kluwer Academic Publishers, 
June, 1991
Bibliografía 
➲ Sobre Kevo y el modelo de prototipos: 
● Taivalsaari, Antero (1996). Classes Versus 
Prototypes: Some Philosophical and Historical 
Observations. ResearchIndex, The NECI 
Scientific Literature Digital Library: 
http://citeseer.nj.nec.com/taivalsaari96classes.html 
● Antero Taivalsaari (1996): On the Notion of 
Inheritance. ACM Comput. Surv. 28(3): 438­479 
● Antero Taivalsaari: Delegation versus 
Concatenation or Cloning is Inheritance too. 
OOPS Messenger 6(3): 20­49 
(1995) 
● Taivalsa, A., Kevo ­a 
prototype­based 
object­oriented 
language based on concatenation and 
module operations. University of Victoria 
Technical Report DCS­197­1R, 
Victoria, B.C.,
Curso de Doctorado: Tecnologías de 
Objetos 
Grupo IMO 
Área de Lenguajes y Sistemas Informáticos 
Departamento de Informática 
J. Baltasar García Perez­Schofield 
http://webs.uvigo.es/jbgarcia/

Más contenido relacionado

La actualidad más candente

Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)Sergio Sanchez
 
Presentacion progra
Presentacion prograPresentacion progra
Presentacion prograzeta2015
 
Introduccion a la Programacion Orientada a Objetos
Introduccion a la Programacion Orientada a ObjetosIntroduccion a la Programacion Orientada a Objetos
Introduccion a la Programacion Orientada a ObjetosAlexys González
 
Programaciom avanzada orientada a objetos
Programaciom avanzada orientada a objetosProgramaciom avanzada orientada a objetos
Programaciom avanzada orientada a objetosJonathan Macías
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a ObjetosJuan Carlos Riva
 
Introduccion a la Programacion Orientada a Objetos
Introduccion a la Programacion Orientada a ObjetosIntroduccion a la Programacion Orientada a Objetos
Introduccion a la Programacion Orientada a Objetosliberaunlibroupeg
 
Clase 3/4 Curso Introducción a Python 2012
Clase 3/4 Curso Introducción a Python 2012Clase 3/4 Curso Introducción a Python 2012
Clase 3/4 Curso Introducción a Python 2012Nahuel Defossé
 
Curso Java Inicial 4 Poo En Java
Curso Java Inicial   4 Poo En JavaCurso Java Inicial   4 Poo En Java
Curso Java Inicial 4 Poo En JavaEmilio Aviles Avila
 
Cuestionario
CuestionarioCuestionario
Cuestionariojpauly4
 
Clase 2/4 Curso Introducción a Python 2012
Clase 2/4 Curso Introducción a Python 2012Clase 2/4 Curso Introducción a Python 2012
Clase 2/4 Curso Introducción a Python 2012Nahuel Defossé
 

La actualidad más candente (20)

Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
 
Unidad 2 clases y objetos
Unidad 2 clases y objetosUnidad 2 clases y objetos
Unidad 2 clases y objetos
 
Presentacion progra
Presentacion prograPresentacion progra
Presentacion progra
 
Programación Orientada Objetos Java Unidad 1
Programación Orientada Objetos Java Unidad 1Programación Orientada Objetos Java Unidad 1
Programación Orientada Objetos Java Unidad 1
 
Introduccion a la Programacion Orientada a Objetos
Introduccion a la Programacion Orientada a ObjetosIntroduccion a la Programacion Orientada a Objetos
Introduccion a la Programacion Orientada a Objetos
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
Programaciom avanzada orientada a objetos
Programaciom avanzada orientada a objetosProgramaciom avanzada orientada a objetos
Programaciom avanzada orientada a objetos
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetos
 
Introduccion a la Programacion Orientada a Objetos
Introduccion a la Programacion Orientada a ObjetosIntroduccion a la Programacion Orientada a Objetos
Introduccion a la Programacion Orientada a Objetos
 
Unidad1 y 2
Unidad1 y 2Unidad1 y 2
Unidad1 y 2
 
Presentacion de clases en c#
Presentacion de clases en c#Presentacion de clases en c#
Presentacion de clases en c#
 
Poo3 java-0910
Poo3 java-0910Poo3 java-0910
Poo3 java-0910
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
Clase 3/4 Curso Introducción a Python 2012
Clase 3/4 Curso Introducción a Python 2012Clase 3/4 Curso Introducción a Python 2012
Clase 3/4 Curso Introducción a Python 2012
 
Programación con java en Eclipse
Programación con java en EclipseProgramación con java en Eclipse
Programación con java en Eclipse
 
Curso Java Inicial 4 Poo En Java
Curso Java Inicial   4 Poo En JavaCurso Java Inicial   4 Poo En Java
Curso Java Inicial 4 Poo En Java
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
Clase 2/4 Curso Introducción a Python 2012
Clase 2/4 Curso Introducción a Python 2012Clase 2/4 Curso Introducción a Python 2012
Clase 2/4 Curso Introducción a Python 2012
 
Manual de-java
Manual de-javaManual de-java
Manual de-java
 
Manual de c#
Manual de c#Manual de c#
Manual de c#
 

Similar a Curso de doctorado de Tecnología de Objetos: Sistemas Orientados a objetos y basados en prototipos

Lenguaje de programación orientada a objetos
Lenguaje de programación orientada a objetosLenguaje de programación orientada a objetos
Lenguaje de programación orientada a objetosAntonio Perez
 
Programacion orientada a objetos
Programacion orientada a objetosProgramacion orientada a objetos
Programacion orientada a objetosbetshycastillo
 
Programacion orientada a objetos
Programacion orientada a objetosProgramacion orientada a objetos
Programacion orientada a objetosbetshycastillo
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetosNanda Moran
 
Trabajo investigativo sobre la programación orientada a objetos y java
Trabajo investigativo sobre la programación orientada a objetos y javaTrabajo investigativo sobre la programación orientada a objetos y java
Trabajo investigativo sobre la programación orientada a objetos y javaJulio César Rojas Maza
 
Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes PO...
Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes PO...Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes PO...
Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes PO...Didier Granados
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetosCarlos Esteves
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetosCarlos Esteves
 
Unidad III epoo
Unidad III epooUnidad III epoo
Unidad III epoolhgarzonr
 
PROGRAMACIÓN ORIENTADA A OBJETOS
PROGRAMACIÓN ORIENTADA A OBJETOSPROGRAMACIÓN ORIENTADA A OBJETOS
PROGRAMACIÓN ORIENTADA A OBJETOSAngelCarrasquel3
 
Programacion estructurada en objetos
Programacion estructurada en objetosProgramacion estructurada en objetos
Programacion estructurada en objetosAngel Ordoñez
 
Programacion orientada a objetos
Programacion orientada a objetosProgramacion orientada a objetos
Programacion orientada a objetosxiomaracadenag
 
Paradigma de Programación Orientado a Objetos
Paradigma de Programación Orientado a ObjetosParadigma de Programación Orientado a Objetos
Paradigma de Programación Orientado a ObjetosAlberto Blumberg
 
Clase3 Programación Orientada a Objetos
Clase3 Programación Orientada a ObjetosClase3 Programación Orientada a Objetos
Clase3 Programación Orientada a Objetosdesimartinez
 
Programacion Orientada Objetos.pdf
Programacion Orientada Objetos.pdfProgramacion Orientada Objetos.pdf
Programacion Orientada Objetos.pdfSantiagoValenzuela24
 
Paradigma de Programación Orientada a Objetos
Paradigma de Programación Orientada a ObjetosParadigma de Programación Orientada a Objetos
Paradigma de Programación Orientada a ObjetosJose Sanchez
 

Similar a Curso de doctorado de Tecnología de Objetos: Sistemas Orientados a objetos y basados en prototipos (20)

Lenguaje de programación orientada a objetos
Lenguaje de programación orientada a objetosLenguaje de programación orientada a objetos
Lenguaje de programación orientada a objetos
 
Poo3
Poo3Poo3
Poo3
 
Programacion orientada a objetos
Programacion orientada a objetosProgramacion orientada a objetos
Programacion orientada a objetos
 
Programacion orientada a objetos
Programacion orientada a objetosProgramacion orientada a objetos
Programacion orientada a objetos
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Trabajo investigativo sobre la programación orientada a objetos y java
Trabajo investigativo sobre la programación orientada a objetos y javaTrabajo investigativo sobre la programación orientada a objetos y java
Trabajo investigativo sobre la programación orientada a objetos y java
 
Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes PO...
Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes PO...Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes PO...
Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes PO...
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Unidad III epoo
Unidad III epooUnidad III epoo
Unidad III epoo
 
Clase4_Python-CTIC
Clase4_Python-CTICClase4_Python-CTIC
Clase4_Python-CTIC
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetos
 
PROGRAMACIÓN ORIENTADA A OBJETOS
PROGRAMACIÓN ORIENTADA A OBJETOSPROGRAMACIÓN ORIENTADA A OBJETOS
PROGRAMACIÓN ORIENTADA A OBJETOS
 
Programacion estructurada en objetos
Programacion estructurada en objetosProgramacion estructurada en objetos
Programacion estructurada en objetos
 
Programacion orientada a objetos
Programacion orientada a objetosProgramacion orientada a objetos
Programacion orientada a objetos
 
Paradigma de Programación Orientado a Objetos
Paradigma de Programación Orientado a ObjetosParadigma de Programación Orientado a Objetos
Paradigma de Programación Orientado a Objetos
 
Clase3 Programación Orientada a Objetos
Clase3 Programación Orientada a ObjetosClase3 Programación Orientada a Objetos
Clase3 Programación Orientada a Objetos
 
Programacion Orientada Objetos.pdf
Programacion Orientada Objetos.pdfProgramacion Orientada Objetos.pdf
Programacion Orientada Objetos.pdf
 
Paradigma de Programación Orientada a Objetos
Paradigma de Programación Orientada a ObjetosParadigma de Programación Orientada a Objetos
Paradigma de Programación Orientada a Objetos
 
Unidad 1_Programacion Orientada a Objetos
Unidad 1_Programacion Orientada a ObjetosUnidad 1_Programacion Orientada a Objetos
Unidad 1_Programacion Orientada a Objetos
 

Más de Baltasar García Perez-Schofield

Post-graduate course: Object technology: Prototype-based object-oriented prog...
Post-graduate course: Object technology: Prototype-based object-oriented prog...Post-graduate course: Object technology: Prototype-based object-oriented prog...
Post-graduate course: Object technology: Prototype-based object-oriented prog...Baltasar García Perez-Schofield
 
Post-graduate course: Object technology: Implementation of object-oriented pr...
Post-graduate course: Object technology: Implementation of object-oriented pr...Post-graduate course: Object technology: Implementation of object-oriented pr...
Post-graduate course: Object technology: Implementation of object-oriented pr...Baltasar García Perez-Schofield
 
Learning object-oriented programming trough a visual tool at Cisti 2008
Learning object-oriented programming trough a visual tool at Cisti 2008Learning object-oriented programming trough a visual tool at Cisti 2008
Learning object-oriented programming trough a visual tool at Cisti 2008Baltasar García Perez-Schofield
 
Charla invitada en oviedo: Evolución del soporte de persistencia
Charla invitada en oviedo: Evolución del soporte de persistenciaCharla invitada en oviedo: Evolución del soporte de persistencia
Charla invitada en oviedo: Evolución del soporte de persistenciaBaltasar García Perez-Schofield
 

Más de Baltasar García Perez-Schofield (8)

Presentación ESEI para IES Lauro Olmo
Presentación ESEI para IES Lauro OlmoPresentación ESEI para IES Lauro Olmo
Presentación ESEI para IES Lauro Olmo
 
Post-graduate course: Object technology: Prototype-based object-oriented prog...
Post-graduate course: Object technology: Prototype-based object-oriented prog...Post-graduate course: Object technology: Prototype-based object-oriented prog...
Post-graduate course: Object technology: Prototype-based object-oriented prog...
 
Curso de doctorado Tecnología de Objetos: Persistencia.
Curso de doctorado Tecnología de Objetos: Persistencia.Curso de doctorado Tecnología de Objetos: Persistencia.
Curso de doctorado Tecnología de Objetos: Persistencia.
 
Post-graduate course: Object technology: Persistence.
Post-graduate course: Object technology: Persistence.Post-graduate course: Object technology: Persistence.
Post-graduate course: Object technology: Persistence.
 
Post-graduate course: Object technology: Implementation of object-oriented pr...
Post-graduate course: Object technology: Implementation of object-oriented pr...Post-graduate course: Object technology: Implementation of object-oriented pr...
Post-graduate course: Object technology: Implementation of object-oriented pr...
 
Learning object-oriented programming trough a visual tool at Cisti 2008
Learning object-oriented programming trough a visual tool at Cisti 2008Learning object-oriented programming trough a visual tool at Cisti 2008
Learning object-oriented programming trough a visual tool at Cisti 2008
 
Charla invitada en oviedo: Evolución del soporte de persistencia
Charla invitada en oviedo: Evolución del soporte de persistenciaCharla invitada en oviedo: Evolución del soporte de persistencia
Charla invitada en oviedo: Evolución del soporte de persistencia
 
Cp3-- A module support tool for C++
Cp3-- A module support tool for C++Cp3-- A module support tool for C++
Cp3-- A module support tool for C++
 

Último

Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PCCesarFernandez937857
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadAlejandrino Halire Ccahuana
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptELENA GALLARDO PAÚLS
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinavergarakarina022
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxPryhaSalam
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosCesarFernandez937857
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfMaryRotonda1
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 

Último (20)

Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PC
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdad
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karina
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos Básicos
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdf
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 

Curso de doctorado de Tecnología de Objetos: Sistemas Orientados a objetos y basados en prototipos

  • 1. Curso de Doctorado: Tecnologías de Objetos Grupo IMO Área de Lenguajes y Sistemas Informáticos Departamento de Informática J. Baltasar García Perez­Schofield http://webs.uvigo.es/jbgarcia/
  • 2. El modelo de orientación a objetos basado en prototipos
  • 3. Orientación a objetos basada en prototipos ➲ Existen dos corrientes principales: ● Lenguajes orientados a objetos basados en clases: C++, Object Pascal, Java, Eiffel ... son los más utilizados por la industria. ● Lenguajes orientados a objetos basados en prototipos: Self, Kevo, Poet/Mica, Cecil ... son todos ellos experimentales, es decir, no se utilizan en la industria. ➲ En realidad, el modelo de prototipos engloba al de clases.
  • 4. Terminología ➲ Estado: los atributos (terminología SmallTalk) o datos miembro (terminología C++) de un objeto. En el caso de un coche, su color, su longitud, cilindrada, ... ➲ Comportamiento: los métodos (SmallTalk) o funciones miembro (C++) de un objeto. En el caso de un coche, arrancar, acelerar, frenar, apagar. ➲ Mensaje: ejecución de un método de un objeto. Si un objeto tiene un método f(), mandarle a O el mensaje f es lo mismo que ejecutar O.f()
  • 5. Orientación a objetos basada en clases ➲ Una clase es un “tipo” de objetos, es decir, un molde del que se obtienen nuevos objetos, que comparten similar comportamiento, cambiando el estado de los mismos.
  • 6. Orientación a objetos basada en prototipos ➲ No existen las clases. De hecho, todos los objetos son iguales en cuanto a categoría. ➲ Los nuevos objetos se copian de otros ya existetntes. Algunos de ellos son prototipos.
  • 7. Orientación a objetos basada en prototipos ➲ Normalmente, en este tipo de lenguajes los objetos pueden modificarse, añadiendo o borrando métodos y atributos. ➲ Cada objeto es independiente, no necesitando información extra de ningún tipo.
  • 8. Herencia ➲ La herencia en lenguajes basados en prototipos suele ser por delegación. ● El objeto tiene uno o más aributos parent, de forma que cuando no puede responder a un mensaje, le reenvía éste a su padre. ➲ En el caso de los lenguajes basados en clases, ésta suele presentarse como concatenación ● El objeto está compuesto por las partes que define cada una de las clases de las que hereda.
  • 9. Herencia mediante delegación ➲ Existe una cadena de objetos apuntando a sus padres, hasta llegar a un objeto padre de todos.
  • 10. Herencia por concatenación ➲ Todos los atributos y métodos heredados están disponibles en el mismo objeto (si bien se necesita la clase para poder interpretarlos).
  • 11. Respuesta a mensajes ➲ Cuando un objeto no puede responder un mensaje, porque no posee el miembro (atributo o método), que se le pide, reenvía el mensaje al objeto que marca su atributo parent. ➲ Las relaciones de herencia, en lugar de ser un caso aparte, pasan a ser un caso particular de las relaciones de composición.
  • 12. Respuesta a mensajes ➲ Ejemplo. Dados los objetos: object A method + foo() { System.console.write( “foo” ); return; } endObject object B : A endObject
  • 13. Respuesta a mensajes ➲ El mensaje: MSG B foo B.foo() ➲ No encuentra el método foo() en el objeto B, así que se sigue el atributo parent, que apunta a A, que sí tiene ese método, y es ejecutado. ➲ Si no se encontrara, entonces se produciría un error, que normalmente se traduce en una excepción. En este caso, la excepción producida sería “Método no encontrado”, o “Mensaje no entendido”.
  • 14. Creación de Objetos ➲ Al crearse los nuevos objetos mediante copia, no es necesario que existan los constructores de los lenguajes orientados a objetos basados en clases. ➲ Los objetos no sólo definen los tipos de datos de los atributos, como en las clases, sino que además ya tienen un valor asociado.
  • 15. Creación de Objetos ➲ Por ejemplo: object Persona attribute + nombre = “Juan”; attribute + apellidos = “Nadie”; attribute + telefono = “906414141”; attribute + edad = 18; attribute + direccion = “cPercebe”; method + toString() { reference toret; toret = nombre.concat( apellidos ); return toret; } endObject
  • 16. Creación de objetos ➲ El objeto Persona es un prototipo que servirá para crear nuevos objetos, aunque no existe ninguna diferencia entre un prototipo y cualquier otro objeto. ➲ Por ejemplo: p = Persona.copy( “PaulaMarquez” ); ➲ Si se le envía el mensaje copy al objeto Persona, entonces se creará un nuevo objeto copia exacta de Persona, con el nombre “PaulaMarquez”, cuyos atributos serán modificados convenientemente.
  • 17. Creación de objetos ➲ Crear un objeto de Persona: p = Persona.copy( “PaulaMarquez” ); p.ponNombre( “Paula” ); p.ponApellidos( “Márquez Márquez” ); ...
  • 18. El modelo de prototipos incluye al de clases ➲ Los objetos que sirven de prototipos son equivalentes a las clases de aquellos lenguajes orientados a objetos basados en clases. ➲ La diferencia es que este modelo es mucho más flexible que el de clases. ➲ Incluso una “clase” en este modelo puede modificarse, al no ser más que un objeto. ➲ La delegación es un mecanismo altamente flexible, separando a los objetos de sus prototipos, como en los lenguajes basados en clases, pero no al comportamiento del estado.
  • 19. Herencia dinámica ➲ En el caso de estar implementada por delegación, se abre una nueva posibilidad: el hecho de poder cambiar el atributo (ya que, normalmente, es un atributo más) que señala al padre del objeto, hace que un objeto pueda ser “hijo” de varios objetos, dependiendo del momento de la ejecución. ➲ El aprovechamiento de esta característica requiere cambiar ligeramente el tipo de programación.
  • 20. Herencia dinámica ➲ Es posible cambiar, en tiempo de ejecución, al “padre” de un objeto. ➲ Es totalmente contrario a la corriente actual, que trata de detectar todos los errores posibles en tiempo de compilación.
  • 21. Herencia dinámica ➲ En el método insertar cuando el vector está vacío: object VectorVacio : Vector method + add( obj ) { super( obj ); parent = VectorUnElemento; return; } method + get(n) { return Nothing; } endObject
  • 22. Herencia dinámica ➲ En el método insertar de VectorUnElemento: object VectorUnElemento : Vector method + put(n, obj) { super( 1, obj ); parent = VectorNoVacio; return; } method + get(n) { return this.get( 1 ); } endObject
  • 23. Herencia dinámica ➲ En el método borrar de VectorNoVacio (que es necesario codificar en los otros dos): object VectorNoVacio : Vector method + delete(n) { super( n ); if ( this.size() < 2 ) { parent = VectorUnElemento; } return; } endObject
  • 24. Herencia dinámica ➲ Su principal ventaja reside en que los métodos pueden escribirse según el tipo del objeto. En ListaVacia, no es necesario que getNumeroElementos() consulte el tamaño de la lista, sólo debe devolver cero. Puede ayudar a solucionar errores y hacer el código más simple. ➲ Su principal desventaja es que precise coordinar varios tipos para realizar una serie de tareas. Ésto puede conllevar errores y puede hacer las modificaciones de código más simples o más complicadas..
  • 25. Lenguajes que siguen el modelo de orientación a objetos basado en prototipos ➲ Self ● Fue creado en los laboratorios de Sun, y muchas partes de su sistema son las precursoras de Java. ● Fue el primero en implementar el modelo de prototipos, que también fue inventado por ellos. Self trata de ser todo lo dinámico que sea posible, haciendo el mínimo chequeo en tiempo de compilación posible. ● http://research.sun.com/research/self/ ➲ Io ● Fue creado por uno de los desarrolladores de Self, siguiendo sus directrices principales. ● http://www.iolanguage.com/
  • 26. Lenguajes que siguen el modelo de orientación a objetos basado en prototipos ➲ Kevo ● Kevo fue desarrollado para una tesis doctoral, como una demostración de que un lenguaje orientado a objetos y basado en prototipos podía incorporar técnicas modernas como la comprobación de errores que realiza C++, por ejemplo, en tiempo de compilación. ● Implementa herencia por concatenación. ● Es menos flexible en tiempo de ejecución que Self o Io. ● ftp://cs.uta.fi/pub/kevo
  • 27. Lenguajes que siguen el modelo de orientación a objetos basado en prototipos ➲ Cecil ● Cecil fue desarrollado en la universida de Washington. Incorpora el concepto de objetos predicados, es decir, que mediante una condición inherente al objeto, y la herencia dinámica, es posible llevar el concepto de programación por contrato al nivel del objeto. ● Es un lenguaje basado en prototipos. ● http://www.cs.washington.edu/research/projects/cecil/www/c ecil.html
  • 28. Lenguajes que siguen el modelo de orientación a objetos basado en prototipos ➲ Zero. Aún en desarrollo, en la Universidad de Vigo. ● Todavía no tiene lenguaje, sino sólo un ensamblador. ● Simple, basado en prototipos. ● Su principal característica es que incorporará persistencia. ● http://trevinca.ei.uvigo.es/~jgarcia/TO/zero/
  • 29. Lenguajes que siguen el modelo de orientación a objetos basado en prototipos ➲ Otros lenguajes ● http://www.programming­x. com/programming/prototype­based. html
  • 30. Bibliografía ➲ Sobre Self y el modelo de prototipos en general: ● Cuesta, P., García Perez­Schofield, B., Cota, M. (1999). “Desarrollo de sistemas orientados a objetos basados en prototipos”. Actas del Congreso CICC' 99. Q. Roo, México. ● Smith & Ungar (1995). “Programming as an experience, the inspiration for Self”. European Congress on Object­Oriented Programming, 1995. ● Ungar & Smith. (1987). “Self: The power of simplicity”. Actas del OOPSLA.
  • 31. Bibliografía ➲ Sobre Self y el modelo de prototipos. Cuestiones prácticas sobre desarrollo de aplicaciones: ● Ungar, Chambers et al. (1991). “Organizing programs without classes”. Lisp and Symbolic Computation 4(3), Kluwer Academic Publishers, June, 1991 ● Chambers, Ungar, Chang y Hözle. (1991). “Parents are Shared Parts: Inheritance and Encapsulation in Self”. Lisp and Symbolic Computation 4(3), Kluwer Academic Publishers, June, 1991
  • 32. Bibliografía ➲ Sobre Kevo y el modelo de prototipos: ● Taivalsaari, Antero (1996). Classes Versus Prototypes: Some Philosophical and Historical Observations. ResearchIndex, The NECI Scientific Literature Digital Library: http://citeseer.nj.nec.com/taivalsaari96classes.html ● Antero Taivalsaari (1996): On the Notion of Inheritance. ACM Comput. Surv. 28(3): 438­479 ● Antero Taivalsaari: Delegation versus Concatenation or Cloning is Inheritance too. OOPS Messenger 6(3): 20­49 (1995) ● Taivalsa, A., Kevo ­a prototype­based object­oriented language based on concatenation and module operations. University of Victoria Technical Report DCS­197­1R, Victoria, B.C.,
  • 33. Curso de Doctorado: Tecnologías de Objetos Grupo IMO Área de Lenguajes y Sistemas Informáticos Departamento de Informática J. Baltasar García Perez­Schofield http://webs.uvigo.es/jbgarcia/