PROGRAMACIÓN ORIENTADA A OBJETOS Unidad 1 GENERICIDAD

Slides:



Advertisements
Presentaciones similares
CJ02 – Técnicas avanzadas en java 1.4 y 5.0
Advertisements

CJ02 – Técnicas avanzadas en java 1.4 y 5.0
FACHADA COMPOSITOR MEMENTO
Curso de Java Capitulo 7: Continuación Poo Profesor:
Curso de Java Capitulo 7: Conceptos sobre poo Profesor:
POLIMORFISMO UNIDAD 4.
Lenguaje de programación Java
Herencia simple y multiple
Arquitectura CLARO-TECNOTREE
Introducción a la Orientación a Objetos
Introducción 1 Puntos Clave –La orientación a objetos representa un cambio radical en los métodos tradicionales de creación de software –Los métodos tradicionales.
Fundamentos de Ingeniería de Software
Conceptos más avanzados de Programación Orientada a Objetos Programación 2005 Licenciatura de Lingüística y Nuevas Tecnologías.
Tipo de Dato Abstracto Tipos de datos:
Capitulo 4 Excepciones.
Capitulo 3 Java util.
Informática II Prof. Dr. Gustavo Patiño MJ
UNIVERSIDAD LATINA (UNILA) ENCAPSULACION Y HERENCIA
Programación 1 Introducción
Aplicación del paradigma orientado a objetos
Diseño y programación de
Teoría de lenguajes y compiladores
PROGRAMACION ORIENTADA
Encapsulamiento y Abstracción
BASES DE DATOS ORIENTADAS A OBJETO
4.- Orientación a Objetos Justo N. Hidalgo Sanz DEPARTAMENTO DE INGENIERÍA INFORMÁTICA.
Lic. Rosemary Torrico Bascopé
UNIVERSIDAD TECNOLÓGICA DE HERMOSILLO T.S.U. EN T.I.C., Área: Sistemas Informáticos Ing. José Padilla Duarte y estudiantes de Sistemas Informáticos Hermosillo,
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
Tema 10: Interfaces Antonio J. Sierra.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
Ingeniero Anyelo Quintero
Semana 5 Subprogramas..
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
TIPOS DE DATOS ABSTRACTOS
ESTRUCTURA DE DATOS EN JAVA
Introducción a la POO • ¿Qué es la programación orientada a objets (POO)? – Un “paradigma” de programación – Una forma de pensar acerca de los problemas.
(Organización y Manejo de Archivos)
UNIDAD VI Recursos esenciales de Java LSC. Natalia Rodríguez Castellón.
INSTITUTO TECNOLOGICO DE MINATITLAN ASIGNATURA: FUNDAMENTOS DE PROGRAMACION DOCENTE: JOSE ANGEL TOLEDO ALVAREZ ALUMNA: ALEJANDRA OSORIO ARVISU SEMESTRE:
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Genericidad.
TEMA 9: DIAGRAMA DE CLASE EN UML
Programación Orientada a Objeto
ELEMENTOS DE COMPUTACIÓN Profesor: Guillermo Figueroa
Programación orientada a objetos
Ingeniería de Requisitos
UNIVERSIDAD TECNICA DE BABAHOYO EXTENSION DE QUEVEDO  Espinales Lisseth G RUPO N º 2 Temas:  Herencia  Polimorfismo  Encapsulamiento  2 Ejemplos Estudiante.
Abstracción El concepto de abstracción es esencial en ciencias de la computación. Un programa es en sí mismo una abstracción, un modelo de la resolución.
FUNDAMENTOS DE PROGRAMACION
Tipo de relación entre clases Es uno de los aspectos que distinguen el paradigma de orientación a objetos frente a otros paradigmas. Mecanismo que,
DISEÑO DE COMPONENTES Y DESARROLLO BASADO EN COMPONENTES
La Programación Orientado a Objetos
ARRAYS Y COLECCIONES DE DATOS. ARRAYS Arrays – Matriz – Vector Elemento del lenguaje que nos permite agrupar un conjunto de valores del mismo tipo, y.
Clases “ Es una Abstracción de un elemento del mundo real ”
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
Factorías e Iterables Introducción del concepto de patrón de diseño Construcción de tipos para recorridos con for extendido Fundamentos de Programación.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 4 Versión Diseño de tipos Igualdad, representación, código,
Modelado UML Diagrama de Clases
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
Las interfaces Predicate y Function Versión Unidad Didáctica 17 Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos.
Prof. Manuel B. Sánchez.  El origen del término polimorfismo es simple: proviene de las palabras griegas poly (muchos) y morphos (forma) multiforme.
Concepto de Tipo y Subtipo Diseño e Implementación Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 10 Versión.
3.6 Manejo de E/S Estructuras En la creación de soluciones para algunos problemas surge la necesidad de agrupar datos de diferente tipo o de manejar datos.
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
Transcripción de la presentación:

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

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.

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:

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.

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.

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.

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.

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.

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.

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

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.

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.

Jerarquía de herencia entre clases parametrizadas

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.

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.

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.

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

Bibliografía Tutorial “Learning the Java Lenguage. Generics” disponible en Inglés en la siguiente dirección: http://java.sun.com/docs/books/tutorial/java/generics/

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.

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.

Métodos

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

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

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.