Programación Orientada a        Objetos    Departamento de Lenguajes y     Ciencias de la Computación       E.T.S.I. Infor...
Contenido• Introducción histórica• Conceptos básicos de la Programación O. O.• Conceptos avanzados de la Programación O.O....
Introducción HistóricaProgramación Modular. Programación Orientada a Objetos   3
Evolución de los Lenguajes de       A       B       S           Programación                                              ...
Evolución de los Lenguajes           Orientados a Objetos     •    Simula (Nygaard, 60s)     •    Smalltalk (Xerox PARC, 7...
Conceptos básicos de la     programación orientada a objetosProgramación Modular. Programación Orientada a Objetos   6
Clases y Objetos• CLASE = SUBPROGRAMAS + VARIABLES           ! Criterio de Modularización           ! Estado + Comportamie...
VEHÍCULO                                   ANIMAL                                                                     PUNT...
¿Qué es una Clase?Caja negra que oculta en su implementación:    – Atributos: variables que codifican el estado de una    ...
¿Qué es un Objeto?Instancia de una clase:    – Cada objeto de una clase tiene su propia copia de los      atributos (estad...
Implementador frente a Usuario • Las clases son cajas negras con       – Interfaz (uso)       – Implementación (funcionami...
Un ejemplo: la clase Punto                                  Punto                    Atributos = Estado Propio        Clas...
Definición de la clase Punto              INTERFAZ CLASE Punto                MÉTODOS                    cambiar_x(E R nx)...
Definición de Métodos• El objeto afectado no aparece como argumento  del método:                     trasladar(E R dx,dy);...
Implementación de la clase Punto (1)         IMPLEMENTACIÓN CLASE Punto           ATRIBUTOS  Estado     R x,y;            ...
Implementación de la clase Punto (2)               trasladar(E R dx,dy)               INICIO                 x = x+dx;    ...
Uso de la clase Punto• El usuario declara objetos como cualquier  otra variable:           Punto p1, p2;• Como usuario, no...
Invocación de Métodos• Los métodos se invocan mediante paso de  mensajes: P.trasladar(4,-1) = trasladar(P,4,-1)• El objeto...
Relación de Composición• la composición permite expresar a una relación de  tipo “está compuesto por”• Por ejemplo, un seg...
Implementación de la Composición (1)          INTERFAZ CLASE Segmento            MÉTODOS                trasladar(E R dx,d...
Implementación de la Composición (2)            IMPLEMENTACIÓN CLASE Segmento              ATRIBUTOS                Punto ...
Conceptos avanzados de la     programación orientada a objetosProgramación Modular. Programación Orientada a Objetos   22
Herencia• Posibilidad de reutilizar código                                     FiguraCerrada• Algo más que:         • incl...
HerenciaPadres / Ascendientes                    • Una clase heredera proporciona los         Punto        atributos y mét...
Herencia Múltiple• Existen lenguajes con herencia múltiple, lo que  permite que una clase reutilice la funcionalidad  ofre...
Herencia y Redefinición• En la herencia las clases herederas pueden heredar  un método o servicio, y luego redefinirlo,  m...
Polimorfismo sobre los datos• Una variable puede referirse a objetos de clases distintas  de la que se ha declarado.• La r...
Próxima SlideShare
Cargando en…5
×

Poo

824 visualizaciones

Publicado el

Publicado en: Educación
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
824
En SlideShare
0
De insertados
0
Número de insertados
2
Acciones
Compartido
0
Descargas
20
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Poo

  1. 1. Programación Orientada a Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S.I. Informática Universidad de Málaga
  2. 2. Contenido• Introducción histórica• Conceptos básicos de la Programación O. O.• Conceptos avanzados de la Programación O.O.Programación Modular. Programación Orientada a Objetos 2
  3. 3. Introducción HistóricaProgramación Modular. Programación Orientada a Objetos 3
  4. 4. Evolución de los Lenguajes de A B S Programación A B S T Lenguajes Direcciones de T R Instrucciones R A Máquina / Memoria, A C Máquina C Ensamblador Registros C I C Ó Variables de Expresiones, FORTRAN I N Tipos Predef., Ó Funciones O Arrays N P E Definición de D R Estr. Control, PASCAL Tipos, E A Subprogramas C Punteros D I O Ocultamiento Tipos A N MODULA-2 T Información, Abstractos de A ADA O L Interfaces Datos S Métodos, Lenguajes Clases, Mensajes Orientados a Objetos ObjetosProgramación Modular. Programación Orientada a Objetos 4
  5. 5. Evolución de los Lenguajes Orientados a Objetos • Simula (Nygaard, 60s) • Smalltalk (Xerox PARC, 70s) • Eiffel (Meyer, 80s) • C++ (Stroustrup, 80s) • Java (Sun Microsystems, 90s) • C# (Microsoft, 00s)Programación Modular. Programación Orientada a Objetos 5
  6. 6. Conceptos básicos de la programación orientada a objetosProgramación Modular. Programación Orientada a Objetos 6
  7. 7. Clases y Objetos• CLASE = SUBPROGRAMAS + VARIABLES ! Criterio de Modularización ! Estado + Comportamiento ! Entidad estática ! Clase ≈ Tipo• OBJETO = Instancia de una CLASE ! Entidad dinámica ! Cada objeto tiene su propio estado ! Objetos de una misma clase comparten un comportamiento ! Objeto ≈ VariableProgramación Modular. Programación Orientada a Objetos 7
  8. 8. VEHÍCULO ANIMAL PUNTO (1,3) (5,2.5)FIGURA (2,2) (2,1)Programación Modular. Programación Orientada a Objetos 8
  9. 9. ¿Qué es una Clase?Caja negra que oculta en su implementación: – Atributos: variables que codifican el estado de una instancia de la clase (objeto) – Métodos: subprogramas que describen el comportamiento de un objeto de la claseUna clase es semejante a un tipo: – Atributos: estructura de datos – Métodos: operaciones sobre el tipoProgramación Modular. Programación Orientada a Objetos 9
  10. 10. ¿Qué es un Objeto?Instancia de una clase: – Cada objeto de una clase tiene su propia copia de los atributos (estado propio) – Todos los objetos de una clase comparten los mismos métodos (comportamiento común)Programación Modular. Programación Orientada a Objetos 10
  11. 11. Implementador frente a Usuario • Las clases son cajas negras con – Interfaz (uso) – Implementación (funcionamiento) • El implementador se encarga de definir el interfaz y de desarrollar la implementación • El usuario empleará los objetos de la clase exclusivamente a través del interfazProgramación Modular. Programación Orientada a Objetos 11
  12. 12. Un ejemplo: la clase Punto Punto Atributos = Estado Propio Clase R x,y; trasladar(a,b) Métodos = Comportamiento Común distancia(pto) (Punto) x= -1 y= 4Objetos (Punto) x= 2 y= 3 (Punto) x= 5 y= 7 Programación Modular. Programación Orientada a Objetos 12
  13. 13. Definición de la clase Punto INTERFAZ CLASE Punto MÉTODOS cambiar_x(E R nx);Comportamiento cambiar_y(E R ny); trasladar(E R dx,dy); R distancia(E Punto p); FIN Punto; Programación Modular. Programación Orientada a Objetos 13
  14. 14. Definición de Métodos• El objeto afectado no aparece como argumento del método: trasladar(E R dx,dy);• En realidad, el objeto afectado es un argumento de entrada/salida implícito llamado éste: ALGORITMO trasladar(ES Punto éste, E R dx,dy); Programación Modular. Programación Orientada a Objetos 14
  15. 15. Implementación de la clase Punto (1) IMPLEMENTACIÓN CLASE Punto ATRIBUTOS Estado R x,y; MÉTODOS cambiar_x(E R nx) INICIO x = nx; // x == éste.x acceso al FINargumento cambiar_y(E R ny) implícito INICIO y = ny; // y == éste.y FIN Programación Modular. Programación Orientada a Objetos 15
  16. 16. Implementación de la clase Punto (2) trasladar(E R dx,dy) INICIO x = x+dx; y = y+dy; FIN R distancia(E Punto p) INICIO DEVOLVER sqrt(pow(x-p.x,2) + pow(y-p.y,2)) FIN acceso total a otros objetos de la misma clase 16 FIN Punto; Programación Modular. Programación Orientada a Objetos
  17. 17. Uso de la clase Punto• El usuario declara objetos como cualquier otra variable: Punto p1, p2;• Como usuario, no se puede acceder a la parte privada de los objetos: p1.X = 2; Error• El usuario sólo puede manipular un Punto a invocando a los métodos del interfaz de la clase Punto (comportamiento)Programación Modular. Programación Orientada a Objetos 17
  18. 18. Invocación de Métodos• Los métodos se invocan mediante paso de mensajes: P.trasladar(4,-1) = trasladar(P,4,-1)• El objeto P es el receptor del mensaje: trasladar(4,-1) (Punto) x=1 P y=3 Programación Modular. Programación Orientada a Objetos 18
  19. 19. Relación de Composición• la composición permite expresar a una relación de tipo “está compuesto por”• Por ejemplo, un segmento está compuesto por dos puntos: origen y extremo Punto Segmento R x,y; Punto Orig, Ext; trasladar(a,b) trasladar(a,b) distancia(pto) longitud() Programación Modular. Programación Orientada a Objetos 19
  20. 20. Implementación de la Composición (1) INTERFAZ CLASE Segmento MÉTODOS trasladar(E R dx,dy); R longitud(); FIN Segmento; Programación Modular. Programación Orientada a Objetos 20
  21. 21. Implementación de la Composición (2) IMPLEMENTACIÓN CLASE Segmento ATRIBUTOS Punto Orig, Dest MÉTODOS trasladar(E R dx,dy) INICIO Orig.trasladar(dx,dy) Ext.trasladar(dx,dy) FIN R longitud(); INICIO DEVOLVER Orig.distancia(Ext) FIN FIN Segmento; Programación Modular. Programación Orientada a Objetos 21
  22. 22. Conceptos avanzados de la programación orientada a objetosProgramación Modular. Programación Orientada a Objetos 22
  23. 23. Herencia• Posibilidad de reutilizar código FiguraCerrada• Algo más que: • incluir ficheros, o • importar módulos Polígono Elipse• Distintos tipos de herencia: • simple / múltiple Pentágono Cuadrilátero Círculo • estricta • selectiva • de implementación/de interfaz Rectángulo Rombo Programación Modular. Programación Orientada a Objetos 23
  24. 24. HerenciaPadres / Ascendientes • Una clase heredera proporciona los Punto atributos y métodos de la clase heredada, y puede añadir otros nuevos. • La clase heredera puede modificar el comportamiento heredado (por ejemplo, redefiniendo algún método heredado) . Partícula • La herencia es transitiva. • Los objetos de una clase que hereda deHijos / Descendientes otra pueden verse como objetos de esta última. Programación Modular. Programación Orientada a Objetos 24
  25. 25. Herencia Múltiple• Existen lenguajes con herencia múltiple, lo que permite que una clase reutilice la funcionalidad ofrecida por varias clases. Pensionista TrabajadorActivo MedioPensionistaProgramación Modular. Programación Orientada a Objetos 25
  26. 26. Herencia y Redefinición• En la herencia las clases herederas pueden heredar un método o servicio, y luego redefinirlo, modificando su implementación. Suma de distancias entre Polígono puntos consecutivos Cuadrado R lado; R perímetro( ); R perimetro( ); Resultado = 4*lado Programación Modular. Programación Orientada a Objetos 26
  27. 27. Polimorfismo sobre los datos• Una variable puede referirse a objetos de clases distintas de la que se ha declarado.• La restricción dada por la herencia, permite construir estructuras con elementos de naturaleza distinta, pero con un comportamiento común: Programación Modular. Programación Orientada a Objetos 27

×