La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Reusabilidad La productividad está basada en reusabilidad y extensibilidad El reusabilidad permite desarrollar nuevas aplicaciones a partir de componentes.

Presentaciones similares


Presentación del tema: "Reusabilidad La productividad está basada en reusabilidad y extensibilidad El reusabilidad permite desarrollar nuevas aplicaciones a partir de componentes."— Transcripción de la presentación:

1 Reusabilidad La productividad está basada en reusabilidad y extensibilidad El reusabilidad permite desarrollar nuevas aplicaciones a partir de componentes de software prefabricadas. Así, parte del proceso de desarrollo consiste en seleccionar componente diseñadas o implementadas previamente. Los conceptos de tipo de dato y tipo de dato abstracto favorecen la reusabilidad. Todo proyecto de software se encara con el objetivo de obtener un beneficio. Introducción a la Programación Orientada a Objetos

2 Tipo de Dato Abstracto Un tipo de dato es un conjunto de valores y un conjunto de operaciones que se aplican a estos valores. Un tipo de dato abstracto es un tipo de dato en el cual la representación de los datos y la implementación de las operaciones está encapsulada. En un lenguaje orientado a objetos una clase que encapsula los atributos define un tipo de dato abstractor. Introducción a la Programación Orientada a Objetos

3 Tipo de Dato Abstracto Java brinda un conjunto de clases que definen tipos de datos abstractos y pueden ser reusadas en aplicaciones muy diversas. Por ejemplo String, Stream y Date. El equipo de desarrollo también puede diseñar e implementar clases reusables. Una estructura de datos para mantener la asignación de pasajeros a un vuelo, tiene un comportamiento similar a la distribución de vehículos en una playa de estacionamiento, aunque las componentes sean de distinta clase. Introducción a la Programación Orientada a Objetos

4 Caso de Estudio Sectores de una Fábrica
Consideremos un conjunto de robots que construyen juguetes en una fábrica. Cada robot está asignado a uno o más sectores. Algunos sectores pueden no tener asignado un robot. El conjunto de sectores pueden mantenerse en un arreglo en el cual cada elemento representa a un sector y puede referenciar a un robot o no estar ligado. Introducción a la Programación Orientada a Objetos

5 Caso de Estudio Sectores de una Fábrica
Inicialmente el arreglo está vacío. Cada vez que se asigna un robot a un sector, se asigna un objeto a un elemento del arreglo Cada vez que se retira un robot de un sector, se asigna nulo a un elemento del arreglo. En todo momento puede procesarse el arreglo. Por ejemplo para calcular cuántos robots tienen más de g unidades de energía. Introducción a la Programación Orientada a Objetos

6 Caso de Estudio Sectores de una Fábrica
Definimos un TDA SectoresFabrica como un conjunto de elementos de tipo Robot. El TDA brinda operaciones para: asignar un Robot en un sector asignar un Robot en un sector libre desasignar un Robot dado desasignar el Robot de un sector dado Decidir si un Robot está asignado a algún sector Recuperar el Robot asignado a un sector. Calcular la cantidad de sectores de la fábrica Calcular cuántos sectores tienen asignado un robot Decidir si todos los sectores tienen asignado un robot Calcular cuántos robots tienen más de g unidades de energía. Introducción a la Programación Orientada a Objetos

7 Caso de Estudio Sectores de una Fábrica
SectoresFabrica Robot <<atributos de clase>> energiaMaxima : 5000 energiaMinima : 100 <<atributos de instancia>> nroSerie:entero nombre:String energia: entero ruedas: entero opticas: entero chasis: entero T : arreglo de Robot Introducción a la Programación Orientada a Objetos

8 Caso de Estudio Sectores de una Fábrica
SectoresFabrica Crea un arreglo con max sectores T : arreglo de Robot Inserta un Robot en el sector p. Requiere controlado el sector y robot no nulo <<constructores>> SectoresFabrica (max : entero) <<comandos>> asignar (robot :Robot,p:entero) asignar (robot:Robot) desasignar (p : entero) desasignar (robot : Robot) Busca el primer sector libre y asigna el robot al Sector. Requiere que haya un sector libre y robot no sea nulo Elimina el robot del sector p. Requiere controlado el sector Elimina el robot de todos los sectores a los que está asignado Introducción a la Programación Orientada a Objetos

9 Caso de Estudio Sectores de una Fábrica
SectoresFabrica Robot <<atributos de clase>> <<atributos de instancia>> T : arreglo de Robot <<consultas>> obtenerNroSerie():entero obtenerNombre():String obtenerEnergia (): entero obtenerChasis () : entero obtenerRuedas () : entero obtenerOpticas () : entero cantAutos() : entero <<consultas>> cantSectores():entero cantSectoresOcupados(): entero todosOcupados () : boolean estaRobot (robot : Robot) : boolean existeSector(p:entero):boolean robotSector (p:entero): Robot cantRobosEnergia(g:real):entero Introducción a la Programación Orientada a Objetos

10 Caso de Estudio Sectores de una Fábrica
class SectoresFabrica { private Robot[] T; //Constructor public SectoresFabrica(int max) { /*Crea un arreglo con max sectores */ T= new Robot [max]; } ... Introducción a la Programación Orientada a Objetos

11 Caso de Estudio Sectores de una Fábrica
//Comandos public void asignar (Robot robot) { /*Busca el primer sector libre y asigna el robot al Sector. Requiere que haya un sector libre y robot no sea nulo*/ int i = 0; while (T[i] != null) i++; T[i] = robot; } Observemos que si no se cumple el requerimiento la terminación va a ser anormal. El comentario indica que es la clase cliente la responsable de garantizar que hay un sector libre, por ejemplo invocando a todosOcupados() Introducción a la Programación Orientada a Objetos

12 Caso de Estudio Sectores de una Fábrica
public void asignar (Robot robot, int p) { /*Inserta un Robot en el sector p. Requiere controlado el sector y robot no nulo*/ T[p] = robot; } Observemos que si no se cumple el requerimiento la terminación va a ser anormal. Si el sector ya tenía un robot asignado, implícitamente queda eliminado al asignarse un nuevo robot. Introducción a la Programación Orientada a Objetos

13 Caso de Estudio Sectores de una Fábrica
public void desasignar(int p) { /*Elimina el robot del sector p. Requiere controlado el sector*/ T[p] = null; } Si no se cumple el requerimiento la terminación va a ser anormal. Si el sector no tenía un robot asignado no se produce ningún cambio. Introducción a la Programación Orientada a Objetos

14 Caso de Estudio Sectores de una Fábrica
//Comandos public void desasignar(Robot robot) { /*Elimina el robot de todos los sectores a los que está asignado*/ int i = 0; while (i < cantSectores()){ if (T[i] ==robot) T[i] = null; i++; } Introducción a la Programación Orientada a Objetos

15 Caso de Estudio Sectores de una Fábrica
public int cantSectores(){ return T.length(); } public int cantSectoresOcupados (){ int i = 0; int cant = 0; while (i < cantSectores()){ if (T[i]!=null) cant++; i++; return cant; Introducción a la Programación Orientada a Objetos

16 Caso de Estudio Sectores de una Fábrica
public boolean todosOcupados (){ int i = 0; boolean hayNulo= false; while (i < cantSectores() && !hayNulo ){ hayNulo = T[i]==null; i++; } return !hayNulo; Introducción a la Programación Orientada a Objetos

17 Caso de Estudio Sectores de una Fábrica
public boolean estaRobot (Robot robot){ /*Decide si un robot dado, no nulo, está asignado al menos a un sector*/ int i = 0; boolean esta = false; while (i < T.length && !esta ){ esta = T[i] == robot) ; i++; } return esta; Introducción a la Programación Orientada a Objetos

18 Caso de Estudio Sectores de una Fábrica
public boolean existeSector (int p){ return p>= 0 & p< T.length; } Introducción a la Programación Orientada a Objetos

19 Caso de Estudio Sectores de una Fábrica
public Robot robotSector (int p){ /*Retorna el Robot en un sector dado, que asume controlado*/ return T[p]; } Introducción a la Programación Orientada a Objetos


Descargar ppt "Reusabilidad La productividad está basada en reusabilidad y extensibilidad El reusabilidad permite desarrollar nuevas aplicaciones a partir de componentes."

Presentaciones similares


Anuncios Google