La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Aplicación del paradigma orientado a objetos

Presentaciones similares


Presentación del tema: "Aplicación del paradigma orientado a objetos"— Transcripción de la presentación:

1 Aplicación del paradigma orientado a objetos
Capitulo 2 Aplicación del paradigma orientado a objetos

2 Mas sobre Herencia Mecanismo de especialización y generalización.
Es un tipo de relación “ES UN ” Cada clase puede tener una clase ancestro y clases descendientes. Generalización permite definir una clase o tipo como un caso general de varias clases o tipos. La operación inversa se llama especialización y permite definir clases como casos particulares de otras más generales.

3 Reutilización y extensión
Reutilización se refiere al uso de clases u componentes desarrollados y probados en un determinado contexto, para incorporar esa funcionalidad en una aplicación diferente a la de origen. La extensión se basa en aprovechar las clases desarrolladas para una aplicación, utilizándolas en la construcción de nuevas clases para la misma u otra aplicación.

4 Reutilización y extensión aplicados con Herencia
Se reutiliza la interfaz de la clase, que es lo que ven los clientes. Los mensajes que pueda recibir un objeto de la clase padre lo podrá recibir también uno de las clases hijas Los métodos declarados en la clase descendiente no van a estar en la clase ancestro.

5 Herencia, resumiendo: Una clase hereda todos los miembros de su clase padre, excepto los constructores. Una clase no tiene acceso directo a los miembros privados de su clase padre. Una clase puede tener acceso directo a los miembros públicos y protegidos de su clase padre. En el caso de que la clase hija pertenezca al mismo paquete que el de su clase padre, si puede acceder a los miembros declarados como friendly Una clase puede agregar sus propios miembros, a pesar de los ya heredados desde su clase padre. Modificador final para evitar clases hijas.

6 Interfaces (I) Concepto: definen un conjunto de mensajes que pueden ser recibidos por las clases que las implementen. Sintaxis para definir una interfaz en Java: <public> interface nombre_interfaz <extends> interfaces { //Cuerpo de la interfaz }

7 Interfaces (II) La interfaz puede extender de otras interfaces, no de clases. El cuerpo de la interfaz posee las siguientes características: Sólo puede poseer atributos estáticos y con valor constante. En el caso de que no se especifique que el atributo es estático (static) y constante (final) automáticamente se establece con estas características. El modificador de acceso es público

8 Interfaces (III) Los métodos deben ser públicos (public) y no pueden ser estáticos o de clase. Si no especifica el modificador de acceso public, automáticamente el método se establece como tal. Los métodos no son implementados, solo se especifica hasta los parámetros que puede recibir entre (…) y luego se finaliza con un “;”. public int metodoPrueba (<lista_parametros>); Las clases que implementen la interfaz son las que implementarán el cuerpo del método.

9 Encapsulamiento (I) Conceptos fundamentales:
La abstracción consiste en identificar las características esenciales de un objeto, así como su comportamiento. El ocultamiento de la implementación tiene por objetivo que el cliente no use la estructura interna de la clase. Se puede usar nada más que la interfaz de nuestra clase pero no la implementación. Permite restringir y controlar el uso de la clase.

10 Encapsulamiento (II) Objetivo: concentrar las características y comportamiento de un objeto en un solo lugar, es decir, en una clase. Cada clase se preocupa de sí misma y tiene todo encapsulado en su interior, Cada clase debe desacoplar a las demás de sus detalles internos, solo debemos saber cómo usar sus servicios a través de su interfaz. El concepto de encapsulamiento se cumple aplicando: abstracción: concentrando las características esenciales y comportamiento de un objeto en una clase y ocultamiento de implementación: ocultando los detalles internos de la clase, evitar que el cliente sea dependiente de una implementación en particular

11 Polimorfismo Polimorfismo quiere decir “muchas formas”.
En POO llamamos polimorfismo a la posibilidad que tienen los métodos de mantener una respuesta unificada, manteniendo la misma semántica aunque la implementación puede ser distinta, a través del establecimiento de la jerarquía de clases (herencia).

12 Redefinición y Sobrecarga
La redefinición es una funcionalidad que se usa cuando el comportamiento de la clase padre no es exactamente igual para la descendiente. En el caso de que se desee acceder al método de la clase padre dentro de una clase descendiente, se debe realizar con la palabra super super.<nombre_metodo>()

13 Redefinición y Sobrecarga
Debemos utilizar la redefinición cuando la clase hija debe presentar un comportamiento diferente que la clase padre, por razones de eficiencia o porque la redefinición completará la funcionalidad que ya brinda la clase padre. En Java los métodos se redefinen reescribiendo el método en la clase derivada, el mismo método que está en la clase padre(igual modificador de acceso, tipo de dato de retorno, igual nombre, igual tipo y cantidad de parámetros), modificando únicamente el cuerpo del método. Los métodos privados no se pueden redefinir. En el caso de que no se quiera que un método sea redefinido se debe anteponer al nombre del método la palabra final.

14 Clases y métodos abstractos.
Un método abstracto es aquel que no posee implementación y que nunca será invocado sobre una instancia de la clase donde se encuentra definido como tal. En Java un método abstracto se define de la siguiente manera: public abstract void metodo(); Los métodos de una interfaz, por definición son abstractos.

15 Transformaciones e información de tipos.
En Java podemos hacer transformaciones entre tipos. Estas transformaciones son importantes tenerlas en cuenta cuando estamos utilizando polimorfismo. Persona pepe = new Empleado(); Empleado emp = (Empleado) pepe;

16 Transformaciones e información de tipos.
En Java existe el moldeo automático, que se da cuando se realiza una transformación del tipo de la clase descendiente a la clase ancestro. Empleado emple = new Empleado(); Persona pepito = emple; Como la clase Empleado extiende de Persona, se puede hacer este tipo de transformación.

17 Transformaciones e información de tipos.
Java nos permite saber el tipo de un objeto en tiempo de ejecución. RTTI (run-time type information). Podemos saber el tipo de un objeto con el operador instanceof: if(objeto instanceof Empleado){ ((Empleado)objeto).getLegajo(); } También podemos hacer la misma comprobación de la siguiente manera: if(objeto.getClass() == Empleado.class)

18 Transformaciones e información de tipos.
instance of: valida que un objeto sea de un determinado tipo o alguno descendiente de la misma. class: valida que un objeto sea exactamente del mismo tipo con el que comparamos y no de una clase hija. Una vez que un objeto es instanciado posee un tipo que es inmutable durante el ciclo de vida del objeto.


Descargar ppt "Aplicación del paradigma orientado a objetos"

Presentaciones similares


Anuncios Google