La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Introducción a la Programación Orientada a Objetos Reusabilidad La productividad está basada en reusabilidad y extensibilidad El reusabilidad permite desarrollar.

Presentaciones similares


Presentación del tema: "Introducción a la Programación Orientada a Objetos Reusabilidad La productividad está basada en reusabilidad y extensibilidad El reusabilidad permite desarrollar."— Transcripción de la presentación:

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

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

3 Introducción a la Programación Orientada a Objetos 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. Tipo de Dato Abstracto

4 Introducción a la Programación Orientada a Objetos 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. Caso de Estudio Sectores de una Fábrica

5 Introducción a la Programación Orientada a Objetos 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. Caso de Estudio Sectores de una Fábrica

6 Introducción a la Programación Orientada a Objetos 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. Caso de Estudio Sectores de una Fábrica

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

8 Introducción a la Programación Orientada a Objetos SectoresFabrica T : arreglo de Robot > SectoresFabrica (max : entero) > asignar (robot :Robot,p:entero) asignar (robot:Robot) desasignar (p : entero) desasignar (robot : Robot) Caso de Estudio Sectores de una Fábrica Crea un arreglo con max sectores 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 Inserta un Robot en el sector p. Requiere controlado el sector y robot no nulo Elimina el robot de todos los sectores a los que está asignado

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

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

11 Introducción a la Programación Orientada a Objetos //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; } Caso de Estudio Sectores de una Fábrica 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()

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

13 Introducción a la Programación Orientada a Objetos public void desasignar(int p) { /*Elimina el robot del sector p. Requiere controlado el sector*/ T[p] = null; } Caso de Estudio Sectores de una Fábrica 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.

14 Introducción a la Programación Orientada a Objetos //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++; } } Caso de Estudio Sectores de una Fábrica

15 Introducción a la Programación Orientada a Objetos 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; } Caso de Estudio Sectores de una Fábrica

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

17 Introducción a la Programación Orientada a Objetos 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; } Caso de Estudio Sectores de una Fábrica

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

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


Descargar ppt "Introducción a la Programación Orientada a Objetos Reusabilidad La productividad está basada en reusabilidad y extensibilidad El reusabilidad permite desarrollar."

Presentaciones similares


Anuncios Google