Genericidad Los datos de aplicaciones muy diferentes puede modelarse con frecuencia a partir de tipos de datos cuyas operaciones no dependen del tipo de.

Slides:



Advertisements
Presentaciones similares
Curso de java básico (scjp)
Advertisements

Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
Programación II Listas
Estructuras de datos y algoritmos
Defina una clase TempMinEstacion que encapsule la representación de las temperaturas mínimas registradas en una estación meteorológica en un período y.
Introducción a la Programación Orientada a Objetos Una Universidad administra varias residencias para estudiantes extranjeros. Cada residencia ocupa un.
Tipos de Datos Abstractos Vector de Racionales
El proceso de desarrollo de software
El Proceso de desarrollo de software
El proceso de desarrollo de software
Abstracciones y Modelos
Reusabilidad La productividad está basada en reusabilidad y extensibilidad El reusabilidad permite desarrollar nuevas aplicaciones a partir de componentes.
El proceso de desarrollo de software
Tema 4 Árboles. Árbol sobre matriz.
Encapsulamiento y Abstracción
Abstracción de Datos La abstracción es un recurso fundamental en la programación orientada a objetos y está además fuertemente ligado a reusabilidad.
Marzo 2007 Lenguajes Visuales Clase III.
Programación II Colas Igor Santos Grueiro.
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño.
Genericidad Una clase genérica encapsula una estructura y brinda un conjunto de servicios cuya implementación no depende del tipo de las componentes.
PROGRAMACIÓN EN JAVA Curso-taller inicial de programación en JAVA Facultad de Estadística e Informática TEMA II.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Lic. Rosemary Torrico Bascopé
Igor Santos Grueiro. De este tipo de pilas NO vamos a hablar.
ÁRBOLES BINARIOS DE BÚSQUEDA
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
7.  El TDA Diccionario.
Estructuras de Datos Arreglos.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Pilas y Colas Estructuras de Datos.
Árboles Binarios Estructuras de Datos.
Introducción a la Programación Orientada a Objetos VRacional Racional [] arreglo > VRacional (max : entero) > establecerElem (pos : entero, elem : Racional)
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Genericidad.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Tabla.
Aun en problemas muy simples surge la necesidad de agrupar valores elementales de alguna manera. Cuando representamos una caja de ahorro bancaria definimos.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Colección.
Introducción a la Programación Orientada a Objetos Una clase que modela los atributos y el comportamiento de una colección de objetos, define un tipo de.
Estructuras de datos Fundamentos de análisis y diseño de algoritmos.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Arreglo.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Polimorfismo.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Abstracción.
Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.
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.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS GUI.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Tipo.
ESTRUCTURAS LINEALES “LA PILA”
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Arreglo.
1 ListaUna Lista se define como una serie de N elementos E 1, E 2,..., E N, ordenados de manera consecutiva, es decir, el elemento E k (que se denomina.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
Lenguaje de Programación II Prof. Rafael Montenegro B. Carrera: T.S.U en Informática Periodo: 2014-I.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Dependencia.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Abstracción.
IPOO 2 cuatrimestre 2017 Departamento de Ciencias e Ingeniería
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
IPOO 2 cuatrimestre 2017 Departamento de Ciencias e Ingeniería
IPOO 2 cuatrimestre 2017 Departamento de Ciencias e Ingeniería
IPOO 2 cuatrimestre 2016 Departamento de Ciencias e Ingeniería
IPOO 2 cuatrimestre 2017 Departamento de Ciencias e Ingeniería
IPOO 2 cuatrimestre 2018 Departamento de Ciencias e Ingeniería
IPOO 2 cuatrimestre 2018 Departamento de Ciencias e Ingeniería
IPOO 2 cuatrimestre 2018 Departamento de Ciencias e Ingeniería
IPOO 2 cuatrimestre 2018 Departamento de Ciencias e Ingeniería
Transcripción de la presentación:

Genericidad Los datos de aplicaciones muy diferentes puede modelarse con frecuencia a partir de tipos de datos cuyas operaciones no dependen del tipo de las componentes. En la materia Estructuras de Datos este tema será protagónico, en ella definirán los TDA Pila, Cola, Árbol que luego tendrán un gran número de aplicaciones modelando los datos de problemas de la vida real. La genericidad puede modelarse en Java de dos maneras diferentes: usando tipos de datos parametrizados o usando herencia. En esta materia definiremos clases genéricas usando herencia.

Genericidad Robot Sectores Caja La clase Sectores encapsula una Tabla de componentes de tipo Robot, representada a través de un arreglo parcialmente ocupado. FabricaJuguetes Las búsquedas pueden hacerse por identidad o por equivalencia.

Introducción a la Programación Orientada a Objetos Micro Estacionamiento Parking La clase Estacionamiento encapsula una tabla de elementos de tipo Micro, representada a través de un arreglo parcialmente ocupado. Caso de Estudio: Concesionaria Las búsquedas pueden hacerse por identidad o por equivalencia.

La clase Estacionamiento define un TDA que encapsula una tabla de elementos de tipo Micro y brinda operaciones para: Estacionar un Micro en una unidad dada Estacionar un Micro en la primera unidad libre Retirar el Micro de una unidad dada Decidir si un micro dado está estacionado en alguna unidad del estacionamiento Recuperar el Micro que está en una unidad dada Calcular cuántas unidades están ocupadas Decidir si hay algún Micro con la verificación vencida Retornar el Micro con menor kilometraje Caso de Estudio: Parking

La clase Sectores define un TDA que encapsula una tabla de elementos de tipo Robot y brinda operaciones para: Asignar un Robot a un sector dado Asignar un Robot al primer sector libre Desasignar el Robot de un sector dado Decidir si un robot dado está asignado a algún sector Recuperar el Robot que está en un sector dado Calcular cuántos sectores están ocupados Calcular cuántos robots tienen menos de m unidades de energía Caso de Estudio: Robots

Asignar un Robot a un sector dado Asignar un Robot al primer sector libre Desasignar el Robot de un sector dado Decidir si un robot dado está asignado a algún sector Recuperar el Robot que está en un sector dado Calcular cuántos sectores están ocupados Calcular cuántos robots tienen menos de m unidades de energía Estacionar un Micro en una unidad dada Estacionar un Micro en la primera unidad libre Retirar el Micro de una unidad dada Decidir si un micro dado está estacionado en alguna unidad del estacionamiento Recuperar el Micro que está en una unidad dada Calcular cuántas unidades están ocupadas Decidir si hay algún Micro con la verificación vencida Retornar el Micro con menor kilometraje, si hay varios retornar el primero

Insertar un ELEMENTO en una POSICION dada Insertar un ELEMENTO en la primera POSICION libre Eliminar el ELEMENTO de una POSICION dada Decidir si un ELEMENTO está en alguna POSICION Recuperar el ELEMENTO que está en una POSICION dada Calcular cuántas POSICIONES están ligadas

class Tabla { protected Object[] T; //Constructor public Tabla (int max) { /*Crea una Tabla con capacidad para max elementos. */ T= new Object [max]; } … }

//Comandos public void insertar (Object elem) { /*Busca la primera posición libre e inserta La clase Cliente es responsable de controlar que la tabla no esté llena y elem no sea nulo*/ int i = 0; while (T[i] != null) i++; T[i] = elem; } public void insertar (Object elem, int p) { /*Inserta un elemento en la posición p, requiere controlada la posición y elem no nulo*/ T[p] = elem; } public void eliminar (int p){ /*Requiere controlada la posición */ T[p] = null; }

//Consultas public boolean estaElemento (Object elem){ /*Decide si la tabla mantiene un elemento con la misma identidad de elem, que asume no nulo*/ int i = 0; boolean esta = false; while (i < T.length && !esta ){ esta = T[i] == elem ; i++; } return esta; } public Object recuperarElemento (int p){ /*Requiere controlada la posición */ return T[p]; } public int cantOcupadas (){ //Retorna la cantidad de posiciones ligadas int i = 0; int cant = 0; while (i < T.length){ if (T[i] != null) cant++; i++; } return cant; }

Genericidad Sectores Tabla Sectores Servicios generales Servicios específicos Estacionamiento Servicios específicos

class Estacionamiento extends Tabla { public Estacionamiento (int m){ super (m); }

class Estacionamiento extends Tabla { … public boolean hayVencida (){ int i = 0; boolean hay = false; Micro m; while (i < T.length && !hay ){ if (T[i] != null){ m = (Micro) T[i]; hay = m.verificacionVencida(); } i++; } return hay; } public Micro menorKilometraje (){ int i = 1; Micro menor = (Micro) T[0]; Micro m; while (i < T.length){ if (T[i] != null){ m = (Micro) T[i]; if (m.obtenerKm() < menor.obtenerKm()) menor = m; } i++; } return menor; } }

class Parking { private Estacionamiento s; … public Parking(){ s = new Estacionamiento(50); … } public void administrar (){ … int pos; … pos = 0; Micro r= new Micro (502); s.insertar (r,pos); … if (s.hayVencida()) … }

class Sectores extends Tabla { public Sectores (int max){ super(max); } public int menosEnergia (int m){ int i = 0; Robot r;int cant=0; while (i < T.length){ if (T[i] != null){ r = (Robot) T[i]; if (r.obtenerEnergia()<m) cant++; } i++; } return cant; } }

Decidir si alguna POSICION contiene un ELEMENTO equivalente a uno dado Decidir si todos los ELEMENTOS son mayores a uno dado.

//Consultas public boolean estaElemento (Object elem){ /*Decide si la tabla mantiene un elemento equivalente a elem, que asume no nulo*/ int i = 0; boolean esta = false; while (i < T.length && !esta ){ if (T[i] != null) esta = T[i].equals(elem) ; i++; } return esta; }

public boolean todosMayores (Object elem){ /*Decide si todos los elementos son mayores a elem*/ int i = 0; boolean son = true; while (i < T.length && son){ if (T[i] != null) son = T[i].mayor(elem) ; i++; } return son; } public boolean todosMayores (TipoElemento elem){ /*Decide si todos los elementos son mayores a elem*/ int i = 0; boolean son = true; while (i < T.length && son){ if (T[i] != null) son = T[i].mayor(elem) ; i++; } return son; }

class Robot extends TipoElemento{ … public boolean mayor (TipoElemento e){ } … } abstract class TipoElemento{ abstract public boolean mayor (TipoElemento e); } class Tabla { protected TipoElemento[] T; //Constructor public Tabla (int max) { /*Crea una Tabla con capacidad para max elementos. */ T= new TipoElemento[max]; } … }

Genericidad Robot Micro * TipoElemento Tabla Sectores Estacionamiento

Genericidad Observaciones Las clases Tabla, Estacionamiento y Sectores NO son abstractas. La clase genérica es la Tabla. Las componentes de la clase genérica pueden ser de clase Object cuando solo se usan los métodos abstractos de Object Si un método de la clase abstracta se debe redefinir en una clase concreta, la signatura tiene que ser exactamente la misma.