La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

PROGRAMACIÓN ORIENTADA A OBJETOS Unidad 1 GENERICIDAD

Presentaciones similares


Presentación del tema: "PROGRAMACIÓN ORIENTADA A OBJETOS Unidad 1 GENERICIDAD"— Transcripción de la presentación:

1 PROGRAMACIÓN ORIENTADA A OBJETOS Unidad 1 GENERICIDAD
M.S.C. Ivette Hernández Dávila

2 Clases fundamentales Todas las clases de Java poseen una superclase común, esa es la clase Object. Por eso los métodos de la clase Object son fundamentales ya que todas las clases los heredan. Esos métodos están pensados para todas las clases, pero hay que redefinirlos para que funcionen adecuadamente. Es decir, Object proporciona métodos que son heredados por todas las clase. La idea es que todas las clases utilicen el mismo nombre y prototipo de método para hacer operaciones comunes como comprobar igualdad, clonar, .... y para ello habrá que redefinir esos métodos a fin de que se ajusten adecuadamente a cada clase.

3 Comparar objetos La clase Object proporciona un método para comprobar si dos objetos son iguales. Este método es equals. Este método recibe como parámetro un objeto con quien comparar y devuelve true si los dos objetos son iguales. No es lo mismo equals que usar la comparación de igualdad. Ejemplos:

4 El operador “==” devuelve true si los dos objetos se refieren a la misma cosa (las dos referencias apuntan al mismo objeto). Realmente en el ejemplo anterior la respuesta del método equals sólo será válida si en la clase que se está comparando (Coche en el ejemplo) se ha redefinido el método equals. Esto no es opcional sino obligatorio si se quiere usar este método. El resultado de equals depende de cuándo consideremos nosotros que devolver verdadero o falso.

5 La clase Object define una serie de métodos que pueden utilizarse sobre todos los objetos que se creen en Java. Estos métodos son: clone(), equals(), finalize(), getClass(), hashCode(), toString(), wait(), notify() y notifyAll(). El método toString() devuelve una cadena asociada al objeto. De esta forma todos los objetos en Java tienen una representación en forma de cadena de texto. El método hashCode() devuelve un entero que puede utilizarse como identificador único del objeto en la máquina virtual.

6 La madre de todas las clases: Object
En Java todas las clases descienden de la clase Object. Es como si el compilador añadiera “extends Object” a todas las clases que no extienden explícitamente a ninguna otra.

7 Introducción: Genericidad
La programación orientada a objetos tiene como principales objetivos favorecer la confiabilidad, reusabilidad y extensibilidad del software. Adoptar el enfoque propuesto por la programación orientada a objetos implica: En la etapa de diseño reducir la complejidad en base a la descomposición del problema en piezas más simples a partir de la identificación de objetos y su organización en una estructura de clases. En la etapa de implementación utilizar un lenguaje que permita retener la estructura de clases identificada en la etapa de diseño y encapsular la representación interna de modo que sea inaccesible desde el exterior.

8 Genericidad El encapsulamiento permite usar una clase considerando qué funcionalidad brinda, sin tener en cuenta cómo la implementa. La herencia permite aumentar el nivel de abstracción mediante un proceso de clasificación en niveles. El proceso consiste en abstraer lo que es común y esencial en un conjunto de entidades para formar un concepto general que comprenda a todas. Una clase derivada puede pensarse como una especialización de una clase más general. Alternativamente podemos pensar a una clase derivada como una extensión de la clase base.

9 Genericidad La extensibilidad se refiere a reducir el impacto de los cambios. Las modificaciones con frecuencia pueden resolverse definiendo nuevas clases específicas, sin necesidad de cambiar las que ya han sido verificadas. La reusabilidad evita escribir el mismo código repetidamente. Para lograrlo es necesario distinguir el comportamiento general del particular. La genericidad favorece la reusabilidad. Una clase genérica encapsula a una estructura cuyo comportamiento es independiente del tipo de las componentes.

10 Genericidad La genericidad puede modelarse en Java de dos maneras diferentes: usando tipos de datos parametrizados o usando herencia.

11 Clases parametrizadas
Para dar soporte a la genericidad, en la versión 1.5 Java introduce el concepto de genérico. Los genéricos permiten definir parámetros que se corresponden con un tipo en la definición de una clase o una interfaz. Estos genéricos dan lugar al concepto de clase (o interfaz) genérica. Las clases (o interfaces) genéricas también suelen denominarse clases parametrizadas.

12 La principal utilidad de las clases parametrizadas es la de permitir la creación de contenedores genéricos que acepten elementos independientes de su tipo. Hasta la versión 1.4 de Java, la genericidad se conseguía construyendo contenedores que almacenaban objetos de la clase Object y el casting posterior a la clase correspondiente.

13 Jerarquía de herencia entre clases parametrizadas

14 Ejemplo de uso genérico
El siguiente ejemplo muestra cómo utilizar los genéricos al crear una clase Concesionario genérica, que luego será capaz de generar objetos Concesionario de objetos Deportivo y objetos Concesionario de objetos Utilitario.

15 Al crear una clase parametrizada se crea una superclase de la que heredarán cada una de las clases con una parametrización específica. A esta clase se la puede referenciar utilizando el símbolo de interrogación como parámetro. Así, la clase VectorDinamico<?> es superclase de todas las clases VectorDinamico, y puede utilizarse para aquellos casos en los que deseemos realizar alguna operación sobre un VectorDinamico sin importarnos el tipo de objeto que almacena.

16 Métodos genéricos Al igual que se definen clases genéricas, es posible definir métodos genéricos (incluso en clases no genéricas). Es posible definir tipos genéricos en el interior de las clases y utilizarlos para definir los parámetros de los métodos y los valores devueltos por estos. Al definir el método, las llaves angulares aparecen después de los modificadores del método y antes del tipo devuelto.

17 Genericidad con más de una variable
Una clase genérica (o un método) puede referencias más de una variable genérica. Ejemplo: La interfaz Map<K,V> del API de Java public interface Map<K, V>{ … } Permite establecer una correspondencia entre objetos de un tipo (denominados claves) y de otro (denominados valores) Ambos tipos pueden coincidir. Ejemplo de instanciación: Map<Integer, String> m = new SortedMap<Integer, String>(); m.put(new Integer(5), “casa”); String s = m.get(new Integer(5));

18 Bibliografía Tutorial “Learning the Java Lenguage. Generics” disponible en Inglés en la siguiente dirección:

19 Colecciones de Objetos
Una colección de objetos es sencillamente un conjunto de cosas del mismo tipo. En Java, existen colecciones de objetos que también son considerados otros objetos, están modelados por clases o por estructuras primitivas. ArrayList es una clase que modela a un grupo especial de colecciones.

20 ArrayList La clase ArrayList almacena un conjunto de objetos del mismo tipo a manera de lista. Java tiene una suite completa de objetos “Collection” que almacenan objetos de varias maneras. ArrayList es el tipo de colección más famoso y comúnmente usado.

21 Métodos

22 Ejemplo de operaciones más utilizadas
Declaración de un ArrayList de enteros Creación de un ArrayList de enteros

23 Añadiendo elementos al ArrayList
Conociendo el tamaño del ArrayList Obteniendo un elemento del ArrayList Borrando un elemento del ArrayList

24 Existen otras clases que modelan colecciones de objetos como HashMap, HashSet, Vector, etc. todas ellas propias de Java. También existen estructuras primitivas para manejar conjuntos de elementos conocidas como arreglos.


Descargar ppt "PROGRAMACIÓN ORIENTADA A OBJETOS Unidad 1 GENERICIDAD"

Presentaciones similares


Anuncios Google