SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
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/

Mais conteúdo relacionado

Mais procurados

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é
 

Mais procurados (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#
 

Semelhante 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
 

Semelhante 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
 

Mais 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
 

Mais 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

Herbert James Drape. Erotismo y sensualidad.pptx
Herbert James Drape. Erotismo y sensualidad.pptxHerbert James Drape. Erotismo y sensualidad.pptx
Herbert James Drape. Erotismo y sensualidad.pptxArs Erótica
 
21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf
21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf
21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdfceeabarcia
 
plan espacios inspiradores para nivel primaria
plan espacios inspiradores para nivel primariaplan espacios inspiradores para nivel primaria
plan espacios inspiradores para nivel primariaElizabeth252489
 
Kirpi-el-erizo libro descargar pdf 1 link
Kirpi-el-erizo libro descargar pdf 1 linkKirpi-el-erizo libro descargar pdf 1 link
Kirpi-el-erizo libro descargar pdf 1 linkMaximilianoMaldonado17
 
PROGRAMACIÓN CURRICULAR ANUAL DE CIENCIA Y TECNOLOGÍA
PROGRAMACIÓN CURRICULAR ANUAL DE CIENCIA Y TECNOLOGÍAPROGRAMACIÓN CURRICULAR ANUAL DE CIENCIA Y TECNOLOGÍA
PROGRAMACIÓN CURRICULAR ANUAL DE CIENCIA Y TECNOLOGÍAJoaqunSolrzano
 
Xardín de San Carlos (A Coruña) IES Monelos
Xardín de San Carlos (A Coruña) IES MonelosXardín de San Carlos (A Coruña) IES Monelos
Xardín de San Carlos (A Coruña) IES MonelosAgrela Elvixeo
 
ficha de aplicacion para estudiantes El agua para niños de primaria
ficha de aplicacion para estudiantes El agua para niños de primariaficha de aplicacion para estudiantes El agua para niños de primaria
ficha de aplicacion para estudiantes El agua para niños de primariamichel carlos Capillo Dominguez
 
UNIDAD DE APRENDIZAJE MARZO 2024.docx para educacion
UNIDAD DE APRENDIZAJE MARZO 2024.docx para educacionUNIDAD DE APRENDIZAJE MARZO 2024.docx para educacion
UNIDAD DE APRENDIZAJE MARZO 2024.docx para educacionCarolVigo1
 
Tema 4 Rocas sedimentarias, características y clasificación
Tema 4 Rocas sedimentarias, características y clasificaciónTema 4 Rocas sedimentarias, características y clasificación
Tema 4 Rocas sedimentarias, características y clasificaciónIES Vicent Andres Estelles
 
Presentación: Actividad de Diálogos adolescentes.pptx
Presentación: Actividad de  Diálogos adolescentes.pptxPresentación: Actividad de  Diálogos adolescentes.pptx
Presentación: Actividad de Diálogos adolescentes.pptxNabel Paulino Guerra Huaranca
 
PPT Protocolo de desregulación emocional.pptx
PPT Protocolo de desregulación emocional.pptxPPT Protocolo de desregulación emocional.pptx
PPT Protocolo de desregulación emocional.pptxKarenSepulveda23
 
U2_EA2_descargable TICS PRESENCIAL 2.pdf
U2_EA2_descargable TICS PRESENCIAL 2.pdfU2_EA2_descargable TICS PRESENCIAL 2.pdf
U2_EA2_descargable TICS PRESENCIAL 2.pdfJavier Correa
 
EL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLA
EL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLAEL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLA
EL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
Adoración sin fin al Dios Creador por sus bendiciones
Adoración sin fin al Dios Creador por sus bendicionesAdoración sin fin al Dios Creador por sus bendiciones
Adoración sin fin al Dios Creador por sus bendicionesAlejandrino Halire Ccahuana
 
Anna Llenas Serra. El monstruo de colores. Doctor de emociones.pdf
Anna Llenas Serra. El monstruo de colores. Doctor de emociones.pdfAnna Llenas Serra. El monstruo de colores. Doctor de emociones.pdf
Anna Llenas Serra. El monstruo de colores. Doctor de emociones.pdfSaraGabrielaPrezPonc
 
1ro Programación Anual D.P.C.C ACTUALIZADO
1ro Programación Anual D.P.C.C ACTUALIZADO1ro Programación Anual D.P.C.C ACTUALIZADO
1ro Programación Anual D.P.C.C ACTUALIZADODJElvitt
 
5°-CARPETA PEDAGÓGICA 2024-MAESTRAS DE PRIMARIA PERÚ-978387435.doc
5°-CARPETA PEDAGÓGICA 2024-MAESTRAS DE PRIMARIA PERÚ-978387435.doc5°-CARPETA PEDAGÓGICA 2024-MAESTRAS DE PRIMARIA PERÚ-978387435.doc
5°-CARPETA PEDAGÓGICA 2024-MAESTRAS DE PRIMARIA PERÚ-978387435.docGLADYSPASTOR
 
Revista digital primer ciclo 2024 colección ediba
Revista digital primer ciclo 2024 colección edibaRevista digital primer ciclo 2024 colección ediba
Revista digital primer ciclo 2024 colección edibaTatiTerlecky1
 
La Congregación de Jesús y María, conocida también como los Eudistas, fue fun...
La Congregación de Jesús y María, conocida también como los Eudistas, fue fun...La Congregación de Jesús y María, conocida también como los Eudistas, fue fun...
La Congregación de Jesús y María, conocida también como los Eudistas, fue fun...Unidad de Espiritualidad Eudista
 

Último (20)

Herbert James Drape. Erotismo y sensualidad.pptx
Herbert James Drape. Erotismo y sensualidad.pptxHerbert James Drape. Erotismo y sensualidad.pptx
Herbert James Drape. Erotismo y sensualidad.pptx
 
21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf
21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf
21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf
 
plan espacios inspiradores para nivel primaria
plan espacios inspiradores para nivel primariaplan espacios inspiradores para nivel primaria
plan espacios inspiradores para nivel primaria
 
Kirpi-el-erizo libro descargar pdf 1 link
Kirpi-el-erizo libro descargar pdf 1 linkKirpi-el-erizo libro descargar pdf 1 link
Kirpi-el-erizo libro descargar pdf 1 link
 
PROGRAMACIÓN CURRICULAR ANUAL DE CIENCIA Y TECNOLOGÍA
PROGRAMACIÓN CURRICULAR ANUAL DE CIENCIA Y TECNOLOGÍAPROGRAMACIÓN CURRICULAR ANUAL DE CIENCIA Y TECNOLOGÍA
PROGRAMACIÓN CURRICULAR ANUAL DE CIENCIA Y TECNOLOGÍA
 
Xardín de San Carlos (A Coruña) IES Monelos
Xardín de San Carlos (A Coruña) IES MonelosXardín de San Carlos (A Coruña) IES Monelos
Xardín de San Carlos (A Coruña) IES Monelos
 
ficha de aplicacion para estudiantes El agua para niños de primaria
ficha de aplicacion para estudiantes El agua para niños de primariaficha de aplicacion para estudiantes El agua para niños de primaria
ficha de aplicacion para estudiantes El agua para niños de primaria
 
UNIDAD DE APRENDIZAJE MARZO 2024.docx para educacion
UNIDAD DE APRENDIZAJE MARZO 2024.docx para educacionUNIDAD DE APRENDIZAJE MARZO 2024.docx para educacion
UNIDAD DE APRENDIZAJE MARZO 2024.docx para educacion
 
Tema 4 Rocas sedimentarias, características y clasificación
Tema 4 Rocas sedimentarias, características y clasificaciónTema 4 Rocas sedimentarias, características y clasificación
Tema 4 Rocas sedimentarias, características y clasificación
 
Tema 6.- La identidad visual corporativa y el naming.pdf
Tema 6.- La identidad visual corporativa y el naming.pdfTema 6.- La identidad visual corporativa y el naming.pdf
Tema 6.- La identidad visual corporativa y el naming.pdf
 
Presentación: Actividad de Diálogos adolescentes.pptx
Presentación: Actividad de  Diálogos adolescentes.pptxPresentación: Actividad de  Diálogos adolescentes.pptx
Presentación: Actividad de Diálogos adolescentes.pptx
 
PPT Protocolo de desregulación emocional.pptx
PPT Protocolo de desregulación emocional.pptxPPT Protocolo de desregulación emocional.pptx
PPT Protocolo de desregulación emocional.pptx
 
U2_EA2_descargable TICS PRESENCIAL 2.pdf
U2_EA2_descargable TICS PRESENCIAL 2.pdfU2_EA2_descargable TICS PRESENCIAL 2.pdf
U2_EA2_descargable TICS PRESENCIAL 2.pdf
 
EL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLA
EL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLAEL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLA
EL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLA
 
Adoración sin fin al Dios Creador por sus bendiciones
Adoración sin fin al Dios Creador por sus bendicionesAdoración sin fin al Dios Creador por sus bendiciones
Adoración sin fin al Dios Creador por sus bendiciones
 
Anna Llenas Serra. El monstruo de colores. Doctor de emociones.pdf
Anna Llenas Serra. El monstruo de colores. Doctor de emociones.pdfAnna Llenas Serra. El monstruo de colores. Doctor de emociones.pdf
Anna Llenas Serra. El monstruo de colores. Doctor de emociones.pdf
 
1ro Programación Anual D.P.C.C ACTUALIZADO
1ro Programación Anual D.P.C.C ACTUALIZADO1ro Programación Anual D.P.C.C ACTUALIZADO
1ro Programación Anual D.P.C.C ACTUALIZADO
 
5°-CARPETA PEDAGÓGICA 2024-MAESTRAS DE PRIMARIA PERÚ-978387435.doc
5°-CARPETA PEDAGÓGICA 2024-MAESTRAS DE PRIMARIA PERÚ-978387435.doc5°-CARPETA PEDAGÓGICA 2024-MAESTRAS DE PRIMARIA PERÚ-978387435.doc
5°-CARPETA PEDAGÓGICA 2024-MAESTRAS DE PRIMARIA PERÚ-978387435.doc
 
Revista digital primer ciclo 2024 colección ediba
Revista digital primer ciclo 2024 colección edibaRevista digital primer ciclo 2024 colección ediba
Revista digital primer ciclo 2024 colección ediba
 
La Congregación de Jesús y María, conocida también como los Eudistas, fue fun...
La Congregación de Jesús y María, conocida también como los Eudistas, fue fun...La Congregación de Jesús y María, conocida también como los Eudistas, fue fun...
La Congregación de Jesús y María, conocida también como los Eudistas, fue fun...
 

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/