Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porJosé Luis Castellanos Santos Modificado hace 10 años
1
TEMA IMPLEMENTACION DE LEGUAJES ORIENTADOS A OBJETO
Métodos Métodos virtuales Herencia simple y múltiple Templates
2
Características de los Lenguajes Orientados a
Herencia Simple Múltiple Sobrecarga Objeto sobre el que se aplica el método Parámetros Parámetros y valor de retorno Coerciones Clase derivada a clase base Aplicación implicita de constructores de un parámetro Definidas por el programador Enlace objeto método Estático (en tiempo de compilación) Dinámico (en ejecución) Introspección Objetos genéricos Templates Tipos de datos paramétricos
3
Llamada a Métodos Enlace estático Enlace dinámico
El objeto al que se aplica un método se pasa por referencia al método como primer argumento Obj.m(x,y) Aplicación de un método de clase base a clases derivadas La representación de los objetos de la clase base tiene que estar incluida en la representación de la clase derivada Enlace dinámico Hay que identificar la clase del objeto para poder decidir que método se tiene que aplicar y x &Obj PC ED Vars
4
Representación de los Objetos
Campos de C Class C: A,B {…} Sin funciones virtuales Campos de B C B Campos de A A Class A {…} A con funciones virtuales Campos de A A Apuntadore a los métodos virtuales TVA Tabla virtual de A Campos de B Class B: A {…} B Campos de A A Apuntadore a los métodos virtuales TVB Tabla virtual de B
5
Herencia Múltiple y Referencias
Conversión de los apuntadores Un apuntador a una objeto A se puede convertir a apuntador a objetos de las clases base de A Herencia simple El apuntador a A es el mismo para todas las clases base Herencia múltiple El apuntador a A no apunta a todas las clase base de A Hay que aplicar el desplazamiento de la clase base para convertir los apuntadores Class C: A,B {…} Class D: A {…} Campos de C Campos de D D Campos de B C B Campos de A A B A o D Campos de A A A o C
6
Tablas Virtuales Tabla virtual
Guarda apuntadores a las funciones virtuales Las clases con funciones virtuales o sus derivadas tienen tablas virtuales que se pueden utilizar para identificar sus objetos (implementación de la introspección) Una clase hereda las tablas virtuales de sus clases base, pero modifica su contenido. class A { int a1; virtual void ma1(); virtual void ma2(); } class B: A { int b1; void ma1(); } b1 a1 A::ma2 a1 A::ma2 TVA A::ma1 TVAB B::ma1 Objeto de A Tabla virtual de A Tabla virtual de B Objeto de B
7
Tablas Virtuales y Herencia Múltiple
class A { int a1; virtual void ma1(); virtual void ma2(); } class B { int b1; virtual void mb1(); virtual void mb2(); } this=this-desp jmp C:mb1 class C: A, B { int c1; void ma1(); void mb1(); } Codigo C::mb1 a1 A::ma2 c1 B::mb2 TVA A::ma1 Objeto de A b1 C::mb1’ Tabla virtual de A B TVCB desp Tabla virtual de C metodos de B a1 C o A TVCA Objeto de C b1 B::mb2 TVB B::mb1 A::ma2 Objeto de B Tabla virtual de B C::ma1 Tabla virtual de C metodos de A
8
Templates El mismo concepto Template de una clase
Tipos de datos abstractos Tipos genéricos Tipos de datos paramétricos Template de una clase template <class PixT> class Image { … } Template de un método template <class PixT> PixT Image<PixT>::GetPixel(int x, int y); Instanciación Image<char> im; im.GetPixel(10,20);
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.