Introduccin a la Programacin Orientada a Objetos - PowerPoint PPT Presentation

1 / 53
About This Presentation
Title:

Introduccin a la Programacin Orientada a Objetos

Description:

Al nombre de la operaci n le llamaremos selector del mensaje. ... Clase Pila[ T ] Campos. Representacion: Array[ T ] NumElementos : Integer; M todos ... – PowerPoint PPT presentation

Number of Views:171
Avg rating:3.0/5.0
Slides: 54
Provided by: momo02D
Category:

less

Transcript and Presenter's Notes

Title: Introduccin a la Programacin Orientada a Objetos


1
Introducción a la Programación Orientada a
Objetos
  • Ingeniería de la Programación
  • Capítulo 1

2
Contenidos
  • 1.1 Introducción.
  • 1.2. El concepto de objeto.
  • 1.5. El envío de mensajes.
  • 1.3. Las clases.
  • 1.4. La instanciación.
  • 1.6. La herencia.
  • 1.8. Facetas de la herencia.
  • 1.9. La herencia múltiple.
  • 1.10. Polimorfismo.
  • 1.11. Enlace estático y dinámico.
  • 1.12. Metaclases.

3
Introducción (I)
  • Tradicionalmente, en un programa existen como
    entidades separadas los datos y los
    procedimientos o funciones que manipulan esos
    datos
  • Algoritmos Estructuras de Datos Programas
  • Problemas
  • Acoplamiento, variables globales, etc.

4
Introducción (II)
  • Simula-67
  • Objeto entidad de programación que encapsula
    datos y procedimientos que los manipulan
  • Conceptos de la programación orientada a objetos
  • objetos y clases
  • encapsulación y ocultación de información
  • herencia y polimorfismo

5
Introducción (III)
  • Evolución histórica
  • Simula-67
  • Años 70 encapsulación, ocultación de
    información, módulos (David Parnas)
  • Smalltalk-80
  • A partir de mediados de los 80, un gran número de
    lenguajes OO
  • Extensiones OO de lenguajes clásicos (turbo
    Pascal con objetos, C, Ada, CLOS, )
  • Lenguajes genuinamente OO (Eiffel, Java, Perl,
    PHP, C, )

6
Introducción (y IV)
  • Por qué ha tenido tanto éxito la POO?
  • La forma de percibir y pensar sobre los problemas
    se acerca a los mecanismos cognitivos humanos y
    es muy parecida a la forma en que se abordan en
    otros dominios
  • Existe la esperanza de que esta técnica sea la
    clave para incrementar la productividad y mejorar
    la fiabilidad de los sistemas software ( solución
    a la crisis del software )
  • Existe la esperanza de que la transición de los
    lenguajes existentes a los nuevos orientados a
    objetos sea fácil

7
Objetos
  • Entidad de programación con dos componentes
  • Estado Contiene la información que puede
    almacenar el objeto y que puede variar con
    respecto al tiempo
  • Comportamiento Conjunto de acciones que puede
    realizar.
  • Alternativamente, se define un objeto como una
    entidad con dos componentes
  • Parte estática datos.
  • Parte dinámica procedimientos o funciones que
    manipulan los datos.

8
Objetos
9
POO vs. P. tradicional
10
Modelo de computación clásico
11
Modelo de computación OO
  • El concepto de aplicación desaparece
  • Programas colecciones de objetos autónomos que
    interactúan mediante mensajes

12
Paso de mensajes
  • Protocolo de comunicación interobjetual
  • Un mensaje se envía a un objeto específico,
    llamado el receptor
  • El mensaje contiene una petición de servicio, así
    como la información que el receptor pueda
    necesitar para llevar a cabo el servicio
  • El receptor, en respuesta al mensaje, ejecuta un
    método, tras lo cual devuelve un resultado al
    solicitante
  • El que se ejecuta en respuesta al mensaje no es
    fijo
  • Diferentes objetos pueden aceptar el mismo
    mensaje y realizar acciones diferentes.

13
Mensajes
  • Para que un objeto pueda responder a un mensaje,
    éste debe ser parte de su interfaz pública.
  • Un mensaje incluye el nombre de una operación y
    una lista de argumentos requeridos para la misma.
    Al nombre de la operación le llamaremos selector
    del mensaje.
  • Cuando el receptor recibe el mensaje, ejecuta un
    método que sólo él conoce (y que puede ser
    cualquiera, con tal de que haga lo establecido
    el emisor nunca especifica cómo debe llevarse a
    cabo esa operación)
  • Al conjunto de mensajes a los que puede responder
    un objeto dado se le llama comportamiento del
    objeto.

14
Mensajes
  • Información contenida en un mensaje
  • El objeto receptor (OBJ)
  • El nombre del operador o operación (SEL)
  • Los argumentos del operador (ARG)
  • Ejemplos de Mensajes
  • Sintaxis Lenguaje de programación
  • OBJ SEL ARG Smalltalk
  • OBJ.SEL(ARG) Object Pascal , C
  • ARG SEL OBJ Neon
  • (OBJ 'SEL ltARGgt) ExpertCommonLisp
  • OBJ SEL ARG Objetive-C

15
Clases
  • La mayor parte de los sistemas orientados a
    objetos distinguen entre la descripción de un
    objeto y el objeto en sí
  • Muchos objetos similares pueden ser descritos por
    una misma definición o esquema general
  • Una clase es una definición, plantilla o molde
    que permite la creación de objetos, y contiene la
    descripción de las características comunes de
    esos objetos
  • Componentes de una clase
  • Parte estática Campos con nombres, atributos
  • Parte dinámica Procedimientos o funciones,
    métodos

16
Clases y TAD
  • El concepto de clase está fuertemente relacionado
    con el concepto de tipo abstracto de datos
  • Un tipo abstracto de datos viene definido por una
    serie de operaciones que se pueden efectuar sobre
    los representantes del tipo.
  • Una clase es la implementación de un tipo
    abstracto de datos
  • Para un mismo tipo puede haber distintas
    implementaciones

17
Clases y TAD
18
Declaración de clases
  • Una definición de clase incluye
  • El nombre de la clase.
  • Las operaciones públicas, interfaz de la misma.
  • La representación interna de los atributos.
  • La implementación de la interfaz.

Clase Artículo exporta Inicializar, PrecioTotal,
PrecioTransporte , Retirar, Añadir
atributos por defecto ocultos Referencia
String Descripción String Precio
Real CantidadInteger código para los métodos
públicos y privados procedure
Inicializar(NR,NSStringNPRealNCInteger) Ref
erencia NR DescipcionNS Precio
NP Cantidad NC fin Inicializar function
PrecioTotal()Real Retorna(1.186Precio) fin
PrecioTotal function PrecioTransporte()Real Ret
orna(0.05Precio) fin PrecioTransporte procedure
Retirar(qInteger) Cantidad Cantidad - q
fin retirar procedure Añadir(qInteger) Cantidad
Cantidad q fin Añadir fin Articulo
19
Declaración de clases
  • Unit _Articulos
  • Interface
  • Type Articulo Object
  • procedure Inicializar(NR,NSStringNPRealNCI
    nteger)
  • function PrecioTotalReal
  • function PrecioTransporteReal
  • procedure Retirar(qInteger)
  • procedure Añadir(qInteger)
  • private parte privada de la clase
  • Referencia String
  • Descripción String
  • Precio Real
  • CantidadInteger
  • End definición de clase
  • Implementation
  • procedure Articulo.Inicializar(NR,NSStringNPRea
    lNCInteger)
  • Referencia NR DescipcionNS Precio NP
    Cantidad NC
  • End Inicializar
  • ...

20
Instanciación
  • Operación que permite la creación de
    representantes físicos de las clases, llamados
    instancias o ejemplares
  • Todo objeto es una instancia o ejemplar de una
    clase determinada
  • En la mayor parte de los lenguajes orientados a
    objetos, las clases existen en tiempo de
    compilación mientras que los objetos existen en
    tiempo de ejecución

21
Clases y ejemplares
  • Todas las instancias de una misma clase tienen el
    mismo número de atributos
  • A los atributos se les suele llamar también
    variables de instancia.
  • Los nombres de las variables residen en la clase,
    y los valores en los objetos.
  • Los métodos son comunes a todas las instancias de
    la misma clase
  • Los métodos residen en la clase

22
Variables de clase
  • Variables declaradas en una clase cuyo valor
    reside en la propia clase.
  • Compartidas por todas las instancias de esa
    clase.
  • Clase Artículo
  • ....
  • variables de clase
  • CantidadMinima integer
  • ...
  • fin Artículo

23
1.6 La Herencia
  • Mecanismo de reutilización de código que permite
    a los programadores crear nuevas clases a partir
    de clases existentes
  • Es una relación transitiva entre clases que
    permite a una nueva clase utilizar los métodos y
    atributos definidos en otra clase como si fuesen
    propios.

24
Representación gráfica
25
Herencia
  • Enriquecimiento
  • Ocultación o sustitución

26
Enriquecimiento y Sustitución
  • Clase Ropa
  • Superclase Artículo
  • Atributos
  • Talla Integer
  • Color char
  • Métodos públicos
  • Fin Ropa
  • Clase ArticulodeLujo
  • Superclase Artículo
  • Atributos
  • Métodos públicos
  • PrecioTotal()
  • Retorna(Precio1.33)
  • Fin ArticulodeLujo

27
Árbol de herencia simple
28
1.7 Facetas de la Herencia
  • Qué pueden redefinir las clases descendientes?.
  •  
  • Variables de instancia
  •  
  • Métodos.

29
Facetas de la herencia
  • Para las variables de instancia
  • Sin redefinición.
  • Redefinición arbitraria.
  • Redefinición con restricciones.
  • Definiciones ocultas.

30
Facetas de la herencia
  • Para los métodos
  • Redefinición arbitraria.
  • Redefinición con restricciones
  • Únicamente el código.
  • La interfaz del método.

31
Ejemplo de herencia (Delphi)
  • unit Unit2
  • interface
  • type Figura class
  • // atributos
  • protected
  • x,y integer
  • public
  • constructor crear(nx,nyinteger)
  • procedure desplazar( incx, incy
    integer)
  • end
  • type Cuadrado class(Figura)
  • protected
  • lado integer
  • public
  • constructor crear(nx,ny,nlinteger)
  • procedure dibujar
  • end
  • implementation

32
Ejemplo Delphi
  • // Implementación de los métodos de figura.
  • constructor Figura.crear(nx,nyinteger)
  • begin x nx y ny end
  • procedure Figura.desplazar( incx, incy
    integer)
  • begin x x incx y y incy end
  • // Métodos de cuadrado
  • constructor Cuadrado.crear(nx,ny,nlinteger)
  • begin
  • inherited crear(nx,ny)
  • lado nl
  • end
  • procedure Cuadrado.Dibujar
  • begin
  • // ...
  • end

33
Ejemplo Delphi (y 3)
  • // En otra parte del programa.
  • var f figura
  • c cuadrado
  • begin
  • f figura.crear(10,10)
  • f.desplazar(1,1)
  • c cuadrado.crear(20, 20, 10)
  • c.desplazar(2,2)
  • c.dibujar
  • end

34
Herencia múltiple
  • Algunos lenguajes orientados a objetos permiten
    que una clase determinada pueda tener más de una
    superclase directa, en este caso se habla de
    herencia múltiple
  • Si B posee A1,..,An superclases directas entonces
    B hereda la unión de las variables de instancia y
    de los métodos de A1..An

35
Herencia múltiple conflictos de nombre
  • Aparece un conflicto de nombres en la herencia
    múltiple cuando dos o más superclases directas de
    una dada poseen atributos y/o métodos con el
    mismo nombre
  • Estrategias de resolución de conflictos
  • Linearización del grafo de herencia.
  • Renombrado de variables de instancias y de
    métodos.
  • Cualificación de variables de instancia y de
    métodos

36
Linearización
37
Renombrado
  • El compilador trabaja directamente con el grafo
    de herencia, cuando encuentra un conflicto de
    nombre genera una mensaje de error
  • El programador o usuario es el que debe de
    resolver el conflicto de nombres
  • Esta es la estrategia que utilizan lenguajes como
    Eiffel el renombrado se hace en la clase
    descendiente.
  • Class Estudiante_Trabajador
  • Inherit Empleado
  • Rename bonificacion as
    bonificacion_empleado
  • Estudiante
  • ...
  • end

38
Calificación
  • Cuando surge un conflicto de nombres, los
    atributos o los métodos se califican con el
    nombre de la clase a la que pertenecen
  • Por ejemplo, en C
  • Estudiantebonificacion
  • Empleadobonificacion

39
Polimorfismo (1)
  • En programación un objeto polimórfico es una
    entidad (por ejemplo una variable) que puede
    contener valores de diferente tipo durante la
    ejecución de un programa.

40
Tipos de Polimorfismo
41
Sobrecarga/ Coerción
  • Sobrecarga Se puede emplear el mismo símbolo
    para denotar operaciones con distinto
    significado.
  • P. Ej .
  • Coerción Las operaciones pueden trabajar con
    tipos mezclados.

42
Polimorfismo de Inclusión
  • Variables de un tipo determinado se pueden
    referirse a instancias de clases descendientes.

43
Genericidad
  • Clase Pila T
  • Campos
  • Representacion Array T
  • NumElementos Integer
  • Métodos
  • / No se muestra el código de los métodos /
  • Crear()
  • Añadir(ItemT)
  • Desapilar(Var Item T)
  • ...
  • CimaPila(Var ItemT)
  • fin
  • Permite la definición de clases paramétricas, que
    son aquellas que admiten uno o varios tipos como
    parámetro.

44
Tipo estático/dinámico
  • Lenguajes con asignación estática de tipos los
    tipos se asocian con las variables o
    identificadores mediante declaraciones
    explícitas.
  • Lenguajes con asignación dinámica de tipos los
    tipos se enlazan con los valores.

45
Tipo estático/dinámico (2)
  • En lenguajes con asignación estática de tipos, el
    nombre (variable) de un objeto tiene asignado un
    tipo estático y un tipo dinámico.
  •  El tipo estático se determina en tiempo de
    compilación, al inspeccionar la declaración de
    esa variable.
  •  El tipo dinámico puede variar en tiempo de
    ejecución, queda determinado por el tipo del
    valor al que apunta esa variable.

46
Polimorfismo y asignación estática
  • El tipo dinámico de una variable debe ser un
    descendiente del tipo estático.

47
Enlace estático/dinámico
  • Cuándo se produce la asociación entre una
    expresión de paso de mensajes y el código que ha
    de ejecutarse?

48
Enlace (2)
  • Enlace estático (en tiempo de compilación) si el
    enlace del método al mensaje se basa en las
    características estáticas de la variable.
  • Enlace dinámico (en tiempo de ejecución) si el
    enlace del método al mensaje se basa en el tipo
    del valor y no en el tipo de la declaración.

49
Enlace dinámico y polimorfismo de inclusión
50
Metaclases
  • En algunos lenguajes las clases existen en tiempo
    de ejecución y pueden ser tratadas como objetos
  • En esos lenguajes hay dos tipos de objetos
  • objetos clase objetos que pueden actuar como
    plantillas y crear instancias de ellos mismos.
  • objetos terminales objetos que pueden ser
    instanciados pero que no pueden instanciar otros
    objetos.

51
Metaclases
  • Una metaclase es una clase cuyas instancias son
    clases
  • las metaclases que engendran las clases
  • las clases engendran las instancias terminales
  • Ventajas de utilizar metaclases
  • Se pueden utilizar para almacenar información
    relativa a las instancias (información de grupo),
    en la forma de variables de clase. Los métodos
    asociados con la clase (métodos de clase) se
    emplean para manipular las variables de clase.
  • Su utilización en la creación/inicialización de
    las nuevas instancias de la misma. El mensaje new
    enviado a la clase puede llevar asociado
    argumentos adicionales para inicializar las
    variables de instancia.

52
Metaclases en Smalltalk
53
Metaclases en LOOPS
En el modelo del lenguaje LOOPS, los objetos se
reparten en tres categorías, metaclases, clases e
instancias terminales, pero el número de
metaclases no está limitado
Write a Comment
User Comments (0)
About PowerShow.com