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

Slides:



Advertisements
Presentaciones similares
Definición de Clases y Variables de referencia.
Advertisements

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
Problema abstracción DATOS ACCIONES Problemas y Programas Programa.
Relaciones entre Clases
El proceso de desarrollo de software
El proceso de desarrollo de software
Estructuras de datos y algoritmos
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.
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 Los datos de aplicaciones muy diferentes puede modelarse con frecuencia a partir de tipos de datos cuyas operaciones no dependen del tipo de.
PROGRAMACIÓN EN JAVA Curso-taller inicial de programación en JAVA Facultad de Estadística e Informática TEMA II.
0. Desarrollo de Programas: técnica del refinamiento.
C++ LISTAS C++ 11/04/2017 Ing. Edgar Ruiz Lizama.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
7.  El TDA Diccionario.
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.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Dependencia.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Clases.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Estructuras.
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.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
Introducción a la Programación Orientada a Objetos Sonia Rueda
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.
Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Arreglo.
Diferencia entre implementar en RPA e IPOO - Diseño En.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS GUI.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Dependencia.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Abstracción.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Sonia.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
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
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
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
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Transcripción de la presentación:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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