Bases de la Orientación a Objetos Raúl Herrera Acuña Tecnología de Objetos
¿Qué técnicas o mecanismos que proporciona la POO? <ul><li>Clasificación </li></ul><ul><li>Encapsulación </li></ul><ul><li...
¿Qué es la Clasificación? <ul><li>Clasificación es un mecanismo para ordenar el conocimiento </li></ul><ul><ul><li>Es fund...
¿Qué es la Clasificación?
¿En que consiste la Encapsulación? <ul><li>Consiste en separar los aspectos externos del objeto (las partes a las que pued...
¿En que consiste la Encapsulación?
¿Cómo se relacionan encapsulación y ocultación? <ul><li>Los objetos encapsulan (agrupan) sus operaciones y su estado: </li...
¿Cómo se codifica la emcapsulación? <ul><li>Toda clase debe tener dos secciones: </li></ul><ul><ul><li>Interfaz: parte vis...
¿Como se relacionan Encapsulación y Abstracción? <ul><li>Capacidad de especificar las características comunes a un conjunt...
¿Qué es abstracción?
¿ Que es una interfaz? <ul><li>La interfaz define un conjunto de métodos </li></ul><ul><li>Una clase de objetos puede impl...
¿En que consiste la Herencia? <ul><li>Permite definir una clase especializando otra ya existente </li></ul><ul><ul><li>Se ...
¿Que es la Herencia de Clases? <ul><li>Los métodos y atributos de la superclase son heredados por las subclases, </li></ul...
Tipos de Herencias y terminología <ul><li>simple / múltiple </li></ul><ul><li>estricta </li></ul><ul><li>selectiva </li></...
Ejemplo de Herencia <ul><li>Suponga que queremos construir una biblioteca gráfica </li></ul><ul><li>Queremos tener básicam...
Ejemplo de Herencia (2) <ul><li>Considere la clase polígono: </li></ul><ul><li>class Poligono {  </li></ul><ul><ul><li>int...
Ejemplo ( 3) <ul><li>Suponga ahora que se necesita una nueva clase para representar los rectángulos. </li></ul><ul><li>Sin...
Ejemplo (4) <ul><li>Sin embargo, es posible que algunas operaciones, como el cálculo del perímetro, se quieran modificar (...
¿Que es el Polimorfismo? <ul><li>DEF: Polimorfismo es la capacidad de adoptar varias formas. </li></ul><ul><li>Propiedad d...
¿Que relación hay entre Polimorfismo y vinculación? <ul><li>Asociación de un atributo con su valor </li></ul><ul><ul><li>V...
Como inrectúan el Polimorfismo y vinculación dinámica? <ul><li>Concepto relacionado con el polimorfismo inclusivo </li></u...
Upcoming SlideShare
Loading in …5
×

3 Bases De La OrientacióN A Objetos

2,142 views

Published on

Bases de la orientación a objetos

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,142
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
44
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

3 Bases De La OrientacióN A Objetos

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

×