3 Bases De La OrientacióN A Objetos

21
Bases de la Orientación a Objetos Raúl Herrera Acuña Tecnología de Objetos

description

Bases de la orientación a objetos

Transcript of 3 Bases De La OrientacióN A Objetos

Page 1: 3  Bases De La OrientacióN A Objetos

Bases de la Orientación a Objetos

Raúl Herrera Acuña

Tecnología de Objetos

Page 2: 3  Bases De La OrientacióN A Objetos

¿Qué técnicas o mecanismos que proporciona la POO?

Clasificación

Encapsulación

Herencia

Polimorfismo

Composición

Asociación

Page 3: 3  Bases De La OrientacióN A Objetos

¿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

Page 4: 3  Bases De La OrientacióN A Objetos

¿Qué es la Clasificación?

Page 5: 3  Bases De La OrientacióN A Objetos

¿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

Page 6: 3  Bases De La OrientacióN A Objetos

¿En que consiste la Encapsulación?

Page 7: 3  Bases De La OrientacióN A Objetos

¿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)

Page 8: 3  Bases De La OrientacióN A Objetos

¿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)

Page 9: 3  Bases De La OrientacióN A Objetos

¿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

Page 10: 3  Bases De La OrientacióN A Objetos

¿Qué es abstracción?

Page 11: 3  Bases De La OrientacióN A Objetos

¿ 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.

Page 12: 3  Bases De La OrientacióN A Objetos

¿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:

Page 13: 3  Bases De La OrientacióN A Objetos

¿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.

Page 14: 3  Bases De La OrientacióN A Objetos

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.

Page 15: 3  Bases De La OrientacióN A Objetos

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.

Page 16: 3  Bases De La OrientacióN A Objetos

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 }

}

Page 17: 3  Bases De La OrientacióN A Objetos

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.

Page 18: 3  Bases De La OrientacióN A Objetos

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 } }

Page 19: 3  Bases De La OrientacióN A Objetos

¿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

Page 20: 3  Bases De La OrientacióN A Objetos

¿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

Page 21: 3  Bases De La OrientacióN A Objetos

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