1 / 8

TEMA IMPLEMENTACION DE LEGUAJES ORIENTADOS A OBJETO

TEMA IMPLEMENTACION DE LEGUAJES ORIENTADOS A OBJETO. Métodos Métodos virtuales Herencia simple y múltiple Templates. 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

roland
Download Presentation

TEMA IMPLEMENTACION DE LEGUAJES ORIENTADOS A OBJETO

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. TEMA IMPLEMENTACION DE LEGUAJESORIENTADOS 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 • 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 Campos de A C B 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 Tabla virtual de C metodos de B desp a1 C o A TVCA Objeto de C b1 B::mb2 TVB B::mb1 A::ma2 C::ma1 Objeto de B Tabla virtual de B Tabla virtual de C metodos de A

  8. Templates • El mismo concepto • Templates • 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);

More Related