Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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...
Upcoming SlideShare
Loading in …5
×

Poo

853 views

Published on

Published in: Education
  • Be the first to comment

  • Be the first to like this

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

×