Escolar Documentos
Profissional Documentos
Cultura Documentos
Introduccin
Corresponde a pgs. 457-467, Cap. 12, Concepts of Programming Languages, Sixth Edition, Robert Sebesta
1 Casi todos los leng. de prog. proveen hoy en d 2 soporte para la Programacin Orientada a
Objetos (POO) (incluyendo a Lisp y Cobol). POO tiene sus races en SIMULA-67. El concepto se completa con el surgimiento del primer lenguaje de POO puro: SMALLTALK 80.
Caractersticas claves de un lenguaje orientado a objetos: Tipos de Datos Abstractos (TDAs). Herencia Ligadura dinmica de mensajes a mtodos.
Problemas: reso de TDAs normalmente involucraba su modicacin (y entendimiento). los TDAs, son independientes y se encuentran todos al mismo nivel diculta reejar organizacin en categoras del dominio (jeraquas).
Herencia
Permite reusar un TDA existente sin modicarlo. El programador slo debe seleccionar un TDA adecuado, declarar una subclase de ste que herede la funcionalidad y estructura necesaria y moldearla para alcanzar los nuevos requerimientos del problema. Adems permite denir jerarquas que reejan el espacio del problema.
Figura
centro mover(x,y)
Circulo
Cuadrado
MiFigura
Trmino Clase Objeto Subclase o clase derivada Superclase o clase padre Mtodo Mensaje Protocolo (interface) de mensaje
Descripcin Nueva forma de referenciar a los TDA Instancia de una clase (TDA) Clase denida desde otra clase a partir de la herencia Clase a partir de la cual se crea una nueva clase Subprograma que describe operacin para objetos de una clase Invocacin (o llamada) a un mtodo. Coleccin completa de mtodos de un objeto
C *p;
C *p; p = new C1; p->imprimir(); /* el de C1 */ p = new C2; p->imprimir(); /* el de C2 */ C *ar[3]; ar[0] = new C1; ar[1] = new C2; ar[2] = new C3; for(int i=0;i <3;i++) ar[i]->imprimir();
C
virtual imprimir()
C1
imprimir()
C2
imprimir()
C3
imprimir()
Exclusividad de objetos
Todas las cosas son objetos (SMALLTALK) Ventajas: elegancia y uniformidad. Desventajas: hasta las operaciones ms elementales se realizan mediante pasaje de mensajes. No hay distincin entre clases predenidas y denidas por el usuario. Todas las computaciones se realizan a travs del pasaje de mensajes. Al modelo imperativo le agrego el modelo objeto (C++) Estructura de tipo con estilo imperativo para escalares primitivos (lo dems son clases) (Java). Desventajas: Necesidad de clases wrapper para poder mezclar objetos y no objetos.
Caractersticas que usual/ tiene una subclase que es subtipo Slo agrega variables y mtodos (no restringe comportamiento de la superclase) Sobreescribe mtodos heredados en una manera compatible