1 / 19

Genericidad

Genericidad. Una clase genérica encapsula a una estructura cuyo comportamiento es independiente del tipo de las componentes. Las clases genéricas favorecen la reusabilidad y la extensibilidad.

dionne
Download Presentation

Genericidad

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Genericidad Una clase genérica encapsula a una estructura cuyo comportamiento es independiente del tipo de las componentes. Las clases genéricas favorecen la reusabilidad y la extensibilidad. La genericidad puede modelarse en Java de dos maneras diferentes: usando polimorfismo paramétrico o usando herencia. En esta materia definiremos clases genéricas usando herencia. Introducción a la ProgramaciónOrientada a Objetos

  2. Genericidad Representaremos el conjunto de vehículos de una cochera con una clase Estacionamiento que encapsula a un arreglo de componentes de clase Micro y brinda operaciones para estacionar, retirar, buscar, etc. Representamos a un conjunto de robots de una fábrica con una clase Sectores que encapsula un arreglo de componentes de clase Robot y brinda operaciones para asignar, desasignar, buscar, etc. Sectores Estacionamiento Robot Micro

  3. Inserta unMicro en la Unidad p. Requiere controlada la unidad y micro no nulo Estacionamiento T : arreglo de Micro Busca la primera unidad libre y asigna el unMicro a la unidad. Requiere que haya una Unidad libre y unMicro no sea nulo <<constructores>> Estacionamiento (max : entero) <<comandos>> estacionar (unMicro :Micro,p:entero) estacionar (unMicro:Micro) retirar (p : entero) Elimina unMicro de la unidad p. Requiere controlada la unidad <<Consultas>> cantUnidades ():entero cantUnidadesOcupadas(): entero todasOcupadas () : boolean estaMicro(unMicro:Micro): boolean existeUnidad(p:entero):boolean microUnidad (p:entero): Micro

  4. class Estacionamiento { private Micro[] T; //Constructor public Estacionamiento(int max) { /*Crea una Tabla con capacidad para max elementos. */ T= new Micro [max]; } ...

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

  6. public booleanestaMicro(MicrounMicro ){ /*Decide si la tabla mantiene una referencia a unMicro, que asume no nulo*/ inti = 0; booleanesta = false; while (i < maxElem() && !esta ){ esta = T[i] == unMicro) ; i++; } return esta; }

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

  8. Inserta rob en la Unidad p. Requiere controlado el sector y rob no nulo Sectores T : arreglo de Robot Busca al primer sector libre y asigna rob al sector. Requiere que haya un sector libre y rob no sea nulo <<constructores>> Sectores (max : entero) <<comandos>> asignar (rob :Robot,p:entero) asignar (rob:Robot) desasignar (p : entero) Elimina rob de la unidad p. Requiere controlada el sector <<Consultas>> cantSectores():entero cantSectoresOcupados(): entero todosOcupados () : boolean estaRobot(rob:Robot): boolean existeSector(p:entero):boolean robotSector (p:entero): Robot

  9. class Sectores { private Robot[] T; //Constructor public Sectores(int max) { /*Crea una Tabla con capacidad para max elementos. */ T= new Robot [max]; } ...

  10. //Comandos public void asignar (Robot rob) { /*Busca el primer sector libre y asigna el robot rob La clase Cliente es responsable de controlar que la tabla no esté llena y rob no sea nulo*/ inti = 0; while (T[i] != null) i++; T[i] = rob; } public void asignar(Robot rob, int p) { /*Asigna el robot rob al sector p, requiere controlada la posición y rob no nulo*/ T[p] = rob; }

  11. public booleanestaRobot (Robot rob){ /*Decide si algún sector está ligado al robot rob, que asume no nulo*/ inti = 0; booleanesta = false; while (i < maxElem() && !esta ){ esta = T[i] == rob) ; i++; } return esta; } Se busca un elemento con la misma identidad que el parámetro formal elem.

  12. class FabricaJuguetes{ private Sectores s; … public FabricaJuguetes(){ s = new Sectores(50); … } public void producir (){ … int pos; … pos = 0; Robot r= new Robot (“Tommy”); s.asignar(r,pos); … }

  13. Inserta elem en la posición p. Requiere controlada la posición y elem no nulo Tabla T : arreglo de Object Busca la primera posición libre y asigna el elem a la posición. Requiere que haya una posición libre y elem no sea nulo <<constructores>> Tabla (max : entero) <<comandos>> insertar (elem :Object,p:entero) insertar (elem:Object) eliminar (p : entero) Elimina elem de la posición p. Requiere controlada la posición <<Consultas>> cantPosiciones ():entero cantPosicionesOcupadas(): entero todasOcupadas () : boolean estaElemento(elem:Object): boolean existePosicion(p:entero):boolean elementoPosicion (p:entero): Object

  14. class Tabla{ protectedObject[] T; //Constructor public Tabla(int max) { /*Crea una Tabla con capacidad para max elementos. */ T= new Object [max]; } ... Introducción a la Programación Orientada a Objetos

  15. //Comandos public void insertar (Objectelem) { /*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*/ inti = 0; while (T[i] != null) i++; T[i] = elem; } Introducción a la Programación Orientada a Objetos

  16. 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; } Introducción a la Programación Orientada a Objetos

  17. public booleanestaElemento (Objectelem){ /*Decide si la tabla mantiene un elemento con la misma identidad de elem, que asume no nulo*/ inti = 0; booleanesta = false; while (i < maxElem() && !esta ){ esta = T[i] == elem) ; i++; } return esta; }

  18. class FabricaJuguetes{ private Tabla s; … public FabricaJuguetes(){ s = new Tabla(50); … } public void producir (){ … int pos; … pos = 0; Robot r= new Robot (“Tommy”); s.insertar (r,pos); … }

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

More Related