SlideShare una empresa de Scribd logo
1 de 31
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/
Implementación de Lenguajes 
Orientados a Objetos
Terminología 
➲ Herencia: 
● Por concatenación: el nuevo objeto (B) se con-struye 
concatenando el objeto del que hereda (A) 
con el mismo objeto (B). 
● Por delegación: los objetos son independientes. 
Si un objeto B hereda de A, entonces, cuando no 
sea capaz de satisfacer un mensaje F, delegará 
(le pasará) ese mensaje F en el objeto A. 
➲ Comportamiento: El conjunto de métodos 
de un objeto (en muchos lenguajes, su 
clase). 
➲ Estado: los valores de los atributos de un 
objeto.
Implementación de Lenguajes 
Orientados a Objetos 
➲ Existen dos puntos de vista principales: 
● Integración de unas extensiones de orientación a 
objetos en un lenguaje tradicional, como C o 
Pascal. 
● Creación de un lenguaje totalmente nuevo. 
➲ Por otra parte, existen dos tipos principales 
de lenguajes orientados a objetos: 
● Aquellos basados en clases 
● Los que están basados en prototipos
Lenguajes basados en clases 
Extensión de un lenguaje 
tradicional para el soporte de 
extensiones de orientación a 
objetos
Implementación de Lenguajes 
Orientados a Objetos 
➲ Veremos la posibilidad de dotar a un 
lenguaje como C de unas extensiones de 
Orientación a objetos. 
➲ De hecho, la primera herramienta que 
Bjarne Stroustrup creó para poder compilar 
C++ (en aquel momento, “C con clases”), 
era un simple preprocesador.
Clases 
➲ La clase es una plantilla a partir de la cual 
se crean los objetos. 
class Coche { 
int numRuedas; 
int color; 
int combustible(); 
void arranca(); 
}; 
void Coche::arranca() { 
combustible--; 
}
Clases 
➲ La base de una clase es un registro (struct). 
➲ La única dificultad es que los registros no ad-miten 
métodos ... 
➲ ... pero puede simularse su pertenencia: 
struct Coche { 
int numRuedas; 
int color; 
int combustible; 
}v 
oid Coche_arranca(struct Coche &this) { 
this->combustible--; 
}
Métodos 
➲ Los métodos son funciones en C, que 
tienen un argumento this, que no es más 
que el objeto que está ejecutando ese 
método en un momento dado. 
➲ Es decir, this señala a la struct Coches 
apropiada para cada momento. 
➲ Así, todos los métodos tienen un argumento 
más del que declararíamos en nuestro “C 
con clases”.
Métodos estáticos 
➲ La única excepción a lo anterior son los 
métodos de clase o estáticos (notación 
C++). Éstos pertenecen a la clase, no al ob-jeto. 
En realidad, ésto significa que ese 
método, una vez traducido a función, NO 
posee un argumento extra llamado this.
Ejemplo de traducción 
➲ El siguiente programa: 
class Coche { 
public: 
int numRuedas; 
int color; 
int combustible; 
static void encontrarGasolinera(); 
void arranca(); 
}; 
//... 
int main(void) { 
Coche micoche; 
miCoche.color = 1; /* BLANCO */ 
micoche.arranca(); 
}
Ejemplo de traducción 
➲ Sería traducido como: 
struct Coche { 
int numRuedas; 
int color; 
}v 
oid Coche_encontrarGasolinera() { 
// ... 
}v 
oid Coche_arranca(struct Coche &this) { 
// ... 
}i 
nt main(void) 
{ 
struct Coche miCoche; 
miCoche.color = 1; /* BLANCO */ 
Coche_arranca(&miCoche); 
}
Compilación 
➲ Nótese que es posible, a pesar de todo, re-alizar 
una comprobación de tipos estricta 
como la que hace C++, en este preproce-sador 
de “C con clases” a C. 
➲ La comprobación estática de tipos, en tiem-po 
de compilación, es uno de los puntos 
más fuertes de C++, ya que es una forma 
de detectar errores antes de la ejecución de 
un programa. 
➲ Se pueden añadir fácilmente criterios de 
visibilidad (private, protected).
¿Qué quedaría por implementar? 
➲ La implementación que se ha presentado 
hasta ahora permite encapsulación direc-tamente, 
por lo que sería conveniente para 
la creación de TADS (Tipos Abstractos de 
Datos). 
➲ Podría implementarse la herencia de forma 
sencilla, (simplemente, añadiendo a una 
clase la definición de la clase de la que 
hereda), por concatenación. 
➲ Sin embargo, es más trabajoso soportar 
polimorfismo. Para ello, será necesaria una 
estructura como la vtable implementada en 
C++.
Lenguajes basados en clases 
Creación genérica de un lenguaje 
orientado a objetos desde cero
Clases y objetos 
➲ Será necesario distinguir, obligatoriamente, 
entre: 
● comportamiento (los métodos, que residirán en la 
clase, y la descripción de los atributos), y 
● el estado (los valores de los atributos, que re-sidirán 
en el objeto). 
➲ Es posible prescindir de las clases en tiem-po 
de ejecución, tal y como hace C++, o 
mantenerlas. 
➲ Si se mantienen, entonces esas estructuras 
son conocidas como metaobjetos.
Clases y objetos 
➲ Suponiendo la misma clase que la anterior: 
● Aunque no es necesario, los métodos pueden 
seguir implementándose como funciones del 
lenguaje al que se les pasa un puntero extra lla-mado 
this. 
● Existirá el objeto, con el estado, diferente, para 
cada objeto, y el metaobjeto, es decir, la clase, 
común a todos los objetos. 
● El metaobjeto es consultado para resolver las lla-madas 
a los atributos y métodos de los objetos
Representación esquemática de ob-jetos 
en memoria 
➲ El metaobjeto con-tiene 
los de-splazamientos 
de 
los atributos en el 
objeto y punteros a 
las funciones que 
actúan como 
métodos. 
➲ El objeto contiene 
únicamente el es-tado.
Representación esquemática de ob-jetos 
en memoria 
➲ Así, para resolver miCoche.color = 2;, 
● primero se busca la dirección de memoria que 
representa la referencia “miCoche”. 
● desde allí, se va a la metaclase (la información de 
la clase) “Coche”. 
● Se localiza el atributo “color”. 
● Se le suma a la referencia de “miCoche” el de-splazamiento 
de “color”. 
➲ Así, finalmente, se obtendría la traducción, 
si fuese lenguaje C, de “*((int *)miCoche 
+ 4) = 2;”
Tiempo de compilación o tiempo de 
ejecución 
➲ Lo anterior puede suceder en tiempo de 
compilación, o bien en tiempo de ejecución. 
● En compilación: - flexible, + comprobaciones. Sue-len 
ser lenguajes del tipo de C++. 
● En ejecución: + flexible, - comprobaciones. Sue-len 
ser lenguajes del tipo de SmallTalk, Python ... 
➲ Es todavía posible un tipo intermedio, como 
veremos, en el que un lenguaje como Self, 
basado en prototipos realiza comprobación 
estática de tipos al compilar. El ejemplo es 
Kevo.
Lenguajes basados en prototipos 
Creación genérica de un lenguaje 
orientado a objetos desde cero
Lenguajes basados en prototipos 
➲ Los lenguajes basados en prototipos no 
disponen de clases, sino que los nuevos 
objetos son copiados de otros objetos ya 
existentes. 
➲ Esos objetos son los prototipos. Sin embar-go, 
los nuevos objetos pueden ser modifi-cados 
al margen de los prototipos. 
➲ Es un modelo muy flexible y sencillo. 
➲ Engloba al modelo de clases.
Implementación 
➲ Puesto que cada objeto no depende de una 
clase y puede cambiar independientemente 
al margen del prototipo del que se copió, la 
estructura del objeto debe albergar no sólo 
el estado, sino también el comportamiento. 
● Métodos y atributos conviven en el mismo espacio 
en memoria para un objeto. 
➲ La herencia se implementa por delegación, 
si bien sería posible implementarla por con-catenación, 
como en Kevo.
Representación esquemática de ob-jetos 
en memoria 
➲ El objeto contiene 
métodos y atributos. 
➲ Cuando no puede 
satisfacer un men-saje, 
lo delega en su 
padre. 
➲ La herencia, por del-egación, 
puede ser 
dinámica.
Conclusiones
Modelos de Orientación a Objetos 
➲ Dos extremos del espectro de modelos ori-entados 
a objetos. 
● El modelo más restrictivo, en potencia, es el de 
clases. 
● Verificación de tipos en tiempo de compilación. 
● Herencia por concatenación. 
● El modelo más flexible, en potencia, es el de pro-totipos. 
● No hay casi comprobaciones en tiempo de compilación. 
● Herencia por delegación. 
➲ Sin embargo, es posible crear lenguajes 
que empleen modelos intermedios dentro 
de este rango.
Implementación 
➲ Las características que condicionan la im-plementación 
de un lenguaje son: 
● Herencia 
● Existencia de clases 
➲ Sin embargo, debe recordarse que es posi-ble 
separar la implementación en varias ca-pas. 
● es posible para un compilador de un lenguaje 
basado en clases generar código para una 
máquina virtual orientada a objetos y basada en 
prototipos.
Bibliografía 
➲ Bjarne Stroustrup, creador de C++: 
● Página personal 
● http://www.research.att.com/~bs/ 
● “El Lenguaje de programación C++” 
● http://www.research.att.com/~bs/3rd.html 
● “Diseño y evolución de C++” 
● http://www.research.att.com/~bs/dne.html 
● Otras publicaciones: 
● http://www.research.att.com/~bs/books.html 
➲ SmallTalk 
● Squeak: http://www.squeak.org/ 
● SmallTalk en general: http://www.esug.org/
Bibliografía 
➲ Self 
● Página web: http://research.sun.com/self/index.html 
● Implementación: 
http://research.sun.com/research/self/papers/elgin-thesis.html 
● Otros: 
http://research.sun.com/research/self/papers/papers.html 
➲ Kevo 
● http://burks.brighton.ac.uk/burks/foldoc/44/63.htm 
➲ Python 
● Lenguaje basado en clases, implementado sobre prototi-pos. 
● Página web: http://www.python.org/
Bibliografía 
➲ Búsqueda de artículos: 
● http://www.researchindex.com
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

2.1 caracteristicas de lenguajes de programación
2.1 caracteristicas de lenguajes de programación2.1 caracteristicas de lenguajes de programación
2.1 caracteristicas de lenguajes de programaciónoviedospablo
 
Cuestionario
CuestionarioCuestionario
Cuestionariojpauly4
 
Trabajo programación (caracteristicas, versiones y desarrolladores de c#)
Trabajo programación (caracteristicas, versiones y desarrolladores de c#)Trabajo programación (caracteristicas, versiones y desarrolladores de c#)
Trabajo programación (caracteristicas, versiones y desarrolladores de c#)Fidel_Angel
 
Reporte de visual c#(jose gonzalo estrada lopez)
Reporte de visual c#(jose gonzalo estrada lopez)Reporte de visual c#(jose gonzalo estrada lopez)
Reporte de visual c#(jose gonzalo estrada lopez)josegonzalo130
 
Presentacion progra
Presentacion prograPresentacion progra
Presentacion prograzeta2015
 
Programacion orientada a objetos 2
Programacion orientada a objetos 2Programacion orientada a objetos 2
Programacion orientada a objetos 2mellcv
 
Aprenda qt4
Aprenda qt4Aprenda qt4
Aprenda qt4skilltik
 
Estructura basica de un programa
Estructura basica de un programaEstructura basica de un programa
Estructura basica de un programaRay-kun Olivera
 
Investigacion sobre carga de metodos
Investigacion sobre carga de metodosInvestigacion sobre carga de metodos
Investigacion sobre carga de metodosArisRojas4
 

La actualidad más candente (17)

2.1 caracteristicas de lenguajes de programación
2.1 caracteristicas de lenguajes de programación2.1 caracteristicas de lenguajes de programación
2.1 caracteristicas de lenguajes de programación
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
Trabajo programación (caracteristicas, versiones y desarrolladores de c#)
Trabajo programación (caracteristicas, versiones y desarrolladores de c#)Trabajo programación (caracteristicas, versiones y desarrolladores de c#)
Trabajo programación (caracteristicas, versiones y desarrolladores de c#)
 
Reporte de visual c#(jose gonzalo estrada lopez)
Reporte de visual c#(jose gonzalo estrada lopez)Reporte de visual c#(jose gonzalo estrada lopez)
Reporte de visual c#(jose gonzalo estrada lopez)
 
Presentacion progra
Presentacion prograPresentacion progra
Presentacion progra
 
Programacion orientada a objetos 2
Programacion orientada a objetos 2Programacion orientada a objetos 2
Programacion orientada a objetos 2
 
C++
C++C++
C++
 
Programación con java en Eclipse
Programación con java en EclipseProgramación con java en Eclipse
Programación con java en Eclipse
 
Lenguaje C sharp
Lenguaje C sharpLenguaje C sharp
Lenguaje C sharp
 
Consulta c++
Consulta c++Consulta c++
Consulta c++
 
Prog oo con_java
Prog oo con_javaProg oo con_java
Prog oo con_java
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
Aprenda qt4
Aprenda qt4Aprenda qt4
Aprenda qt4
 
Estructura basica de un programa
Estructura basica de un programaEstructura basica de un programa
Estructura basica de un programa
 
Investigacion sobre carga de metodos
Investigacion sobre carga de metodosInvestigacion sobre carga de metodos
Investigacion sobre carga de metodos
 
Presentacion de clases en c#
Presentacion de clases en c#Presentacion de clases en c#
Presentacion de clases en c#
 

Similar a Curso de doctorado Tecnología de Objetos: Implementación de lenguajes orientados a objetos.

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
 
Cuestionario
CuestionarioCuestionario
CuestionarioJose Nava
 
Caracteristicas de C Sharp
Caracteristicas de C SharpCaracteristicas de C Sharp
Caracteristicas de C SharpEdgardo Martinez
 
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
 
Consideraciones pragmatica
Consideraciones pragmaticaConsideraciones pragmatica
Consideraciones pragmaticaJose Gallardo
 
_Concepto de interfaz_interfaz_interfaz_interfaz_interfaz_.pptx
_Concepto de interfaz_interfaz_interfaz_interfaz_interfaz_.pptx_Concepto de interfaz_interfaz_interfaz_interfaz_interfaz_.pptx
_Concepto de interfaz_interfaz_interfaz_interfaz_interfaz_.pptxFabianAndresNuezPinz
 
P2_Actividad 4 :Glosario de términos
P2_Actividad 4 :Glosario de términosP2_Actividad 4 :Glosario de términos
P2_Actividad 4 :Glosario de términosJavier Leon
 
Lenguajes de programación orientados a objetos
Lenguajes de programación orientados a objetosLenguajes de programación orientados a objetos
Lenguajes de programación orientados a objetosDoris Aguagallo
 
Programación Orientada a Objetos - herencia y polimorfismo
Programación Orientada a Objetos - herencia y polimorfismoProgramación Orientada a Objetos - herencia y polimorfismo
Programación Orientada a Objetos - herencia y polimorfismoAlvaro Enrique Ruano
 
Lenguaje de la programación orientada a objetos c#
Lenguaje de la programación orientada a objetos c#Lenguaje de la programación orientada a objetos c#
Lenguaje de la programación orientada a objetos c#Juan Carlos Prieto
 

Similar a Curso de doctorado Tecnología de Objetos: Implementación de lenguajes orientados a objetos. (20)

Prototype-based programming with PROWL.
Prototype-based programming with PROWL.Prototype-based programming with PROWL.
Prototype-based programming with PROWL.
 
Prototype-based, object-oriented programming
Prototype-based, object-oriented programmingPrototype-based, object-oriented programming
Prototype-based, object-oriented programming
 
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...
 
Lp pract2006
Lp pract2006Lp pract2006
Lp pract2006
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
manual de C#
manual de C#manual de C#
manual de C#
 
Manual c# 2
Manual c# 2Manual c# 2
Manual c# 2
 
Manual de c#
Manual de c#Manual de c#
Manual de c#
 
Caracteristicas de C Sharp
Caracteristicas de C SharpCaracteristicas de C Sharp
Caracteristicas de C Sharp
 
Clase4_Python-CTIC
Clase4_Python-CTICClase4_Python-CTIC
Clase4_Python-CTIC
 
Guía1
Guía1Guía1
Guía1
 
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)
 
Consideraciones pragmatica
Consideraciones pragmaticaConsideraciones pragmatica
Consideraciones pragmatica
 
_Concepto de interfaz_interfaz_interfaz_interfaz_interfaz_.pptx
_Concepto de interfaz_interfaz_interfaz_interfaz_interfaz_.pptx_Concepto de interfaz_interfaz_interfaz_interfaz_interfaz_.pptx
_Concepto de interfaz_interfaz_interfaz_interfaz_interfaz_.pptx
 
P2_Actividad 4 :Glosario de términos
P2_Actividad 4 :Glosario de términosP2_Actividad 4 :Glosario de términos
P2_Actividad 4 :Glosario de términos
 
Lenguajes de programación orientados a objetos
Lenguajes de programación orientados a objetosLenguajes de programación orientados a objetos
Lenguajes de programación orientados a objetos
 
Programación Orientada a Objetos - herencia y polimorfismo
Programación Orientada a Objetos - herencia y polimorfismoProgramación Orientada a Objetos - herencia y polimorfismo
Programación Orientada a Objetos - herencia y polimorfismo
 
thy
thythy
thy
 
Tema 1[1][1]
Tema 1[1][1]Tema 1[1][1]
Tema 1[1][1]
 
Lenguaje de la programación orientada a objetos c#
Lenguaje de la programación orientada a objetos c#Lenguaje de la programación orientada a objetos c#
Lenguaje de la programación orientada a objetos c#
 

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

Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdfDemetrio Ccesa Rayme
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdfenelcielosiempre
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
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
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxlupitavic
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptxolgakaterin
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfMaritzaRetamozoVera
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfNancyLoaa
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 
Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularMooPandrea
 
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
 
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
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxKarlaMassielMartinez
 

Último (20)

Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdf
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdf
 
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
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
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
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptx
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdf
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circular
 
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
 
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
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
 
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
 

Curso de doctorado Tecnología de Objetos: Implementación de lenguajes orientados a objetos.

  • 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. Implementación de Lenguajes Orientados a Objetos
  • 3. Terminología ➲ Herencia: ● Por concatenación: el nuevo objeto (B) se con-struye concatenando el objeto del que hereda (A) con el mismo objeto (B). ● Por delegación: los objetos son independientes. Si un objeto B hereda de A, entonces, cuando no sea capaz de satisfacer un mensaje F, delegará (le pasará) ese mensaje F en el objeto A. ➲ Comportamiento: El conjunto de métodos de un objeto (en muchos lenguajes, su clase). ➲ Estado: los valores de los atributos de un objeto.
  • 4. Implementación de Lenguajes Orientados a Objetos ➲ Existen dos puntos de vista principales: ● Integración de unas extensiones de orientación a objetos en un lenguaje tradicional, como C o Pascal. ● Creación de un lenguaje totalmente nuevo. ➲ Por otra parte, existen dos tipos principales de lenguajes orientados a objetos: ● Aquellos basados en clases ● Los que están basados en prototipos
  • 5. Lenguajes basados en clases Extensión de un lenguaje tradicional para el soporte de extensiones de orientación a objetos
  • 6. Implementación de Lenguajes Orientados a Objetos ➲ Veremos la posibilidad de dotar a un lenguaje como C de unas extensiones de Orientación a objetos. ➲ De hecho, la primera herramienta que Bjarne Stroustrup creó para poder compilar C++ (en aquel momento, “C con clases”), era un simple preprocesador.
  • 7. Clases ➲ La clase es una plantilla a partir de la cual se crean los objetos. class Coche { int numRuedas; int color; int combustible(); void arranca(); }; void Coche::arranca() { combustible--; }
  • 8. Clases ➲ La base de una clase es un registro (struct). ➲ La única dificultad es que los registros no ad-miten métodos ... ➲ ... pero puede simularse su pertenencia: struct Coche { int numRuedas; int color; int combustible; }v oid Coche_arranca(struct Coche &this) { this->combustible--; }
  • 9. Métodos ➲ Los métodos son funciones en C, que tienen un argumento this, que no es más que el objeto que está ejecutando ese método en un momento dado. ➲ Es decir, this señala a la struct Coches apropiada para cada momento. ➲ Así, todos los métodos tienen un argumento más del que declararíamos en nuestro “C con clases”.
  • 10. Métodos estáticos ➲ La única excepción a lo anterior son los métodos de clase o estáticos (notación C++). Éstos pertenecen a la clase, no al ob-jeto. En realidad, ésto significa que ese método, una vez traducido a función, NO posee un argumento extra llamado this.
  • 11. Ejemplo de traducción ➲ El siguiente programa: class Coche { public: int numRuedas; int color; int combustible; static void encontrarGasolinera(); void arranca(); }; //... int main(void) { Coche micoche; miCoche.color = 1; /* BLANCO */ micoche.arranca(); }
  • 12. Ejemplo de traducción ➲ Sería traducido como: struct Coche { int numRuedas; int color; }v oid Coche_encontrarGasolinera() { // ... }v oid Coche_arranca(struct Coche &this) { // ... }i nt main(void) { struct Coche miCoche; miCoche.color = 1; /* BLANCO */ Coche_arranca(&miCoche); }
  • 13. Compilación ➲ Nótese que es posible, a pesar de todo, re-alizar una comprobación de tipos estricta como la que hace C++, en este preproce-sador de “C con clases” a C. ➲ La comprobación estática de tipos, en tiem-po de compilación, es uno de los puntos más fuertes de C++, ya que es una forma de detectar errores antes de la ejecución de un programa. ➲ Se pueden añadir fácilmente criterios de visibilidad (private, protected).
  • 14. ¿Qué quedaría por implementar? ➲ La implementación que se ha presentado hasta ahora permite encapsulación direc-tamente, por lo que sería conveniente para la creación de TADS (Tipos Abstractos de Datos). ➲ Podría implementarse la herencia de forma sencilla, (simplemente, añadiendo a una clase la definición de la clase de la que hereda), por concatenación. ➲ Sin embargo, es más trabajoso soportar polimorfismo. Para ello, será necesaria una estructura como la vtable implementada en C++.
  • 15. Lenguajes basados en clases Creación genérica de un lenguaje orientado a objetos desde cero
  • 16. Clases y objetos ➲ Será necesario distinguir, obligatoriamente, entre: ● comportamiento (los métodos, que residirán en la clase, y la descripción de los atributos), y ● el estado (los valores de los atributos, que re-sidirán en el objeto). ➲ Es posible prescindir de las clases en tiem-po de ejecución, tal y como hace C++, o mantenerlas. ➲ Si se mantienen, entonces esas estructuras son conocidas como metaobjetos.
  • 17. Clases y objetos ➲ Suponiendo la misma clase que la anterior: ● Aunque no es necesario, los métodos pueden seguir implementándose como funciones del lenguaje al que se les pasa un puntero extra lla-mado this. ● Existirá el objeto, con el estado, diferente, para cada objeto, y el metaobjeto, es decir, la clase, común a todos los objetos. ● El metaobjeto es consultado para resolver las lla-madas a los atributos y métodos de los objetos
  • 18. Representación esquemática de ob-jetos en memoria ➲ El metaobjeto con-tiene los de-splazamientos de los atributos en el objeto y punteros a las funciones que actúan como métodos. ➲ El objeto contiene únicamente el es-tado.
  • 19. Representación esquemática de ob-jetos en memoria ➲ Así, para resolver miCoche.color = 2;, ● primero se busca la dirección de memoria que representa la referencia “miCoche”. ● desde allí, se va a la metaclase (la información de la clase) “Coche”. ● Se localiza el atributo “color”. ● Se le suma a la referencia de “miCoche” el de-splazamiento de “color”. ➲ Así, finalmente, se obtendría la traducción, si fuese lenguaje C, de “*((int *)miCoche + 4) = 2;”
  • 20. Tiempo de compilación o tiempo de ejecución ➲ Lo anterior puede suceder en tiempo de compilación, o bien en tiempo de ejecución. ● En compilación: - flexible, + comprobaciones. Sue-len ser lenguajes del tipo de C++. ● En ejecución: + flexible, - comprobaciones. Sue-len ser lenguajes del tipo de SmallTalk, Python ... ➲ Es todavía posible un tipo intermedio, como veremos, en el que un lenguaje como Self, basado en prototipos realiza comprobación estática de tipos al compilar. El ejemplo es Kevo.
  • 21. Lenguajes basados en prototipos Creación genérica de un lenguaje orientado a objetos desde cero
  • 22. Lenguajes basados en prototipos ➲ Los lenguajes basados en prototipos no disponen de clases, sino que los nuevos objetos son copiados de otros objetos ya existentes. ➲ Esos objetos son los prototipos. Sin embar-go, los nuevos objetos pueden ser modifi-cados al margen de los prototipos. ➲ Es un modelo muy flexible y sencillo. ➲ Engloba al modelo de clases.
  • 23. Implementación ➲ Puesto que cada objeto no depende de una clase y puede cambiar independientemente al margen del prototipo del que se copió, la estructura del objeto debe albergar no sólo el estado, sino también el comportamiento. ● Métodos y atributos conviven en el mismo espacio en memoria para un objeto. ➲ La herencia se implementa por delegación, si bien sería posible implementarla por con-catenación, como en Kevo.
  • 24. Representación esquemática de ob-jetos en memoria ➲ El objeto contiene métodos y atributos. ➲ Cuando no puede satisfacer un men-saje, lo delega en su padre. ➲ La herencia, por del-egación, puede ser dinámica.
  • 26. Modelos de Orientación a Objetos ➲ Dos extremos del espectro de modelos ori-entados a objetos. ● El modelo más restrictivo, en potencia, es el de clases. ● Verificación de tipos en tiempo de compilación. ● Herencia por concatenación. ● El modelo más flexible, en potencia, es el de pro-totipos. ● No hay casi comprobaciones en tiempo de compilación. ● Herencia por delegación. ➲ Sin embargo, es posible crear lenguajes que empleen modelos intermedios dentro de este rango.
  • 27. Implementación ➲ Las características que condicionan la im-plementación de un lenguaje son: ● Herencia ● Existencia de clases ➲ Sin embargo, debe recordarse que es posi-ble separar la implementación en varias ca-pas. ● es posible para un compilador de un lenguaje basado en clases generar código para una máquina virtual orientada a objetos y basada en prototipos.
  • 28. Bibliografía ➲ Bjarne Stroustrup, creador de C++: ● Página personal ● http://www.research.att.com/~bs/ ● “El Lenguaje de programación C++” ● http://www.research.att.com/~bs/3rd.html ● “Diseño y evolución de C++” ● http://www.research.att.com/~bs/dne.html ● Otras publicaciones: ● http://www.research.att.com/~bs/books.html ➲ SmallTalk ● Squeak: http://www.squeak.org/ ● SmallTalk en general: http://www.esug.org/
  • 29. Bibliografía ➲ Self ● Página web: http://research.sun.com/self/index.html ● Implementación: http://research.sun.com/research/self/papers/elgin-thesis.html ● Otros: http://research.sun.com/research/self/papers/papers.html ➲ Kevo ● http://burks.brighton.ac.uk/burks/foldoc/44/63.htm ➲ Python ● Lenguaje basado en clases, implementado sobre prototi-pos. ● Página web: http://www.python.org/
  • 30. Bibliografía ➲ Búsqueda de artículos: ● http://www.researchindex.com
  • 31. 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/