3 Bases De La OrientacióN A Objetos

  • 1,654 views
Uploaded on

Bases de la orientación a objetos

Bases de la orientación a objetos

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,654
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
41
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Bases de la Orientación a Objetos Raúl Herrera Acuña Tecnología de Objetos
  • 2. ¿Qué técnicas o mecanismos que proporciona la POO?
    • Clasificación
    • Encapsulación
    • Herencia
    • Polimorfismo
    • Composición
    • Asociación
  • 3. ¿Qué es la Clasificación?
    • Clasificación es un mecanismo para ordenar el conocimiento
      • Es fundamentalmente un problema de búsqueda de similitudes
      • Al clasificar buscamos grupos de cosas que tienen la misma estructura o muestran un comportamiento similar
    • Clasificación y desarrollo orientado a objetos
      • Mediante la clasificación, los objetos con la misma estructura de datos y comportamiento se agrupan para formar una clase
      • La clasificación permite identificar clases y objetos en el desarrollo
      • Esta es una de las tareas más difíciles del A&D OO
    • Después de clasificar podemos
      • Establecer asociaciones
      • Agrupar
      • Definir jerarquías
  • 4. ¿Qué es la Clasificación?
  • 5. ¿En que consiste la Encapsulación?
    • Consiste en separar los aspectos externos del objeto (las partes a las que pueden acceder otros objetos) de los detalles de implementación internos (ocultos a otros objetos)
      • Los objetos agrupan su estado (los atributos o datos) y su comportamiento (los métodos)
        • Relación clara entre el código y los datos
    • Modularidad
      • El código de un objeto puede desarrollarse y mantenerse independientemente del código de los otros objetos
    • Ocultación de información
      • Sólo son visibles las partes necesarias para utilizar un objeto (interfaz pública): métodos y atributos
      • Las demás partes son ocultas (privadas). No es necesario saber como esta hecho para utilizarlo
  • 6. ¿En que consiste la Encapsulación?
  • 7. ¿Cómo se relacionan encapsulación y ocultación?
    • Los objetos encapsulan (agrupan) sus operaciones y su estado:
      • el comportamiento del objeto está definido por los métodos
      • el estado está definido por los datos o atributos del objeto Ocultación de información
    • Las partes necesarias para utilizar un objeto son visibles (interfaz pública): métodos
      • Las demás partes son ocultas (privadas)
        • El volante, el cuentakilómetros, los pedales y la palanca de cambios representan una interfaz pública hacia los mecanismos de funcionamiento del automóvil
        • Para conducir no es necesario conocer la mecánica del automóvil (su implementación)
  • 8. ¿Cómo se codifica la emcapsulación?
    • Toda clase debe tener dos secciones:
      • Interfaz: parte visible
      • Implementación: representación de la abstracción
    • Ejemplo
      • El volante, el cuentakilómetros, los pedales y la palanca de cambios representan una interfaz pública hacia los mecanismos de funcionamiento del automóvil
      • Para conducir no es necesario conocer la mecánica del automóvil (su implementación)
  • 9. ¿Como se relacionan Encapsulación y Abstracción?
    • Capacidad de especificar las características comunes a un conjunto de clases
      • Definición parcial del estado y del comportamiento
      • Declaración del comportamiento (interfaz)
    • Clases abstractas
      • Especificación de datos y comportamiento común a un conjunto de clases
      • Forzar a que las subclases proporcionen un comportamiento específico
    • Interfaces
      • Declaración de métodos a incorporar en las clases que implementen la interfaz
      • Definición de constantes
  • 10. ¿Qué es abstracción?
  • 11. ¿ Que es una interfaz?
    • La interfaz define un conjunto de métodos
    • Una clase de objetos puede implementar una o varias interfaces
      • La interfaz Volante ofrece los métodos:
        • Girar a la izquierda
        • Girar a la derecha
      • La interfaz PedalAcelerador ofrece los métodos:
        • Pisar acelerador
        • Levantar acelerador
    • La clase Coche implementa las interfaces Volante y PedalAcelerador.
  • 12. ¿En que consiste la Herencia?
    • Permite definir una clase especializando otra ya existente
      • Se extiende un tipo de datos, heredando las características comunes y especificando las diferencias
      • Permite la reutilización de código
    • Implementa la relación es un o es una clase de
    • Define una jerarquía de clases:
  • 13. ¿Que es la Herencia de Clases?
    • Los métodos y atributos de la superclase son heredados por las subclases,
    • pero, en la especialización:
      • Se pueden añadir nuevos métodos y atributos
        • La clase Taxi tiene taxímetro y las operaciones poner en marcha taxímetro y para taxímetro
      • Se pueden redefinir los métodos
        • La clase Taxi redefine el método arrancar: si es recién subido un nuevo cliente, poner en marcha taxímetro
      • Se pueden ocultar métodos
        • La subclase CocheAutomático oculta el método cambiar marcha
    • La herencia es transitiva.
    • Los objetos de una clase que hereda de otra pueden verse como objetos de esta última.
    • Existen lenguajes con herencia múltiple, lo que permite que una clase reutilice la funcionalidad ofrecida por varias clases.
  • 14. Tipos de Herencias y terminología
    • simple / múltiple
    • estricta
    • selectiva
    • de implementación/de interfaz
    • Términos Asociados
      • Un descendiente de una clase C es cualquier clase que hereda directa o indirectamente de C, incluyendo el propio C.
      • Un descendiente propio de C es un descendiente de C que no es el propio C.
      • Un antecesor de C es una clase A tal que C es un descendiente de A.
      • Un antecesor propio de C es una clase A tal que C es un descendiente propio de A.
  • 15. Ejemplo de Herencia
    • Suponga que queremos construir una biblioteca gráfica
    • Queremos tener básicamente: puntos, segmentos, vectores, círculos, elipses, polígonos generales, triángulos, rectángulos, cuadrados y otros.
  • 16. Ejemplo de Herencia (2)
    • Considere la clase polígono:
    • class Poligono {
      • int cantidad; // Número de vértices
      • Punto vertices[]; // Lista de vértices
      • public double perimetro() { // longitud del perímetro // A partir del primer punto, se recorre el polígono sumando las
      • // distancias entre cada par de puntos.
      • }
      • public void visualizar() { // Muestra el polígono en pantalla
      • }
      • public void rotar(Punto centro, double angulo) {
      • }
      • public void trasladar(int a, int b) {
      • // Desplaza a horizontalmente y b verticalmente
      • }
      • }
  • 17. Ejemplo ( 3)
    • Suponga ahora que se necesita una nueva clase para representar los rectángulos.
    • Sin embargo, los rectángulos son un tipo especial de polígonos, y muchas de sus características son las mismas
    • Se puede, entonces, definir Rectángulo como una clase que hereda de la clase Polígono.
  • 18. Ejemplo (4)
    • Sin embargo, es posible que algunas operaciones, como el cálculo del perímetro, se quieran modificar (sobre-escribir) para realizarlas de manera diferente o más eficientemente. Por ejemplo:
    • class Rectangulo extends Poligono
    • { int lado1;
    • int lado2;
    • Rectangulo(Punto centro, double l1, double l2, double angulo)
    • {
    • // Crear con centro en "centro", orientación "angulo",
    • // y lados de longitud "l1" y "l2".
    • }
    • public double perimetro ()
    • {
    • return (lado1 + lado2) * 2
    • }
    • }
  • 19. ¿Que es el Polimorfismo?
    • DEF: Polimorfismo es la capacidad de adoptar varias formas.
    • Propiedad de una entidad de adquirir formas distintas
      • Polimorfismo inclusivo
        • Un objeto de un tipo dado (tipo estático) puede ser sustituido por otro del mismo tipo, pero de distinta clase
        • Las interfaces definen tipos
        • Las clases definen implementaciones
      • Polimorfismo paramétrico
        • Un método puede actuar sobre diversos tipos
        • Ejemplo: el método insertar() de una lista ordenada funciona sobre cualquier clase que tenga implementado el método menor()
      • Sobrecarga de método
        • un mismo nombre de método y varias implementaciones del mismo (en la misma o distintas clases)
      • Ejemplo: el método insertar() implementado en una lista, en una lista ordenada, en un conjunto y en una tabla.
    • 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
  • 20. ¿Que relación hay entre Polimorfismo y vinculación?
    • Asociación de un atributo con su valor
      • Variable con un valor
      • Llamada a función con el cuerpo de la función
    • Puede ser
      • Estático (early binding): en tiempo de compilación
        • C++, Pascal, COBOL, FORTRAN
      • Dinámico (late binding): en tiempo de ejecución
        • C++, Smalltalk, Objetive-C, Java
  • 21. Como inrectúan el Polimorfismo y vinculación dinámica?
    • Concepto relacionado con el polimorfismo inclusivo
      • Cuando una variable de un tipo Coche posee una referencia a un objeto de clase Taxi (siendo Taxi descendiente de Coche) y se invoca a un método por medio de la variable,
      • ¿cuál se ejecuta si hay una implementación en Coche y otra en Taxi (ej. Arranca)?
      • Los lenguajes con vinculación dinámica tratan de asociar la ejecución al tipo más específico, por tanto a Taxi
      • El mecanismo general de búsqueda es empezar por el tipo dinámico de la variable receptora y remontarse por la jerarquía de herencia hasta encontrar una implementación válida