0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.

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
DISEÑO Y GESTIÓN DE BASES DE DATOS Luciano H. Tamargo Depto. de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur, Bahía Blanca INTRODUCCIÓN.
El proceso de desarrollo de software
El Proceso de desarrollo de software
El proceso de desarrollo de software
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
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.
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.
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.
ÁRBOLES BINARIOS DE BÚSQUEDA
C++ LISTAS C++ 11/04/2017 Ing. Edgar Ruiz Lizama.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
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 Clases.
Dinamismo y Contenedores Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires (C++ Avanzado) Depto. de Computación Algoritmos y Estructuras.
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 Polimorfismo.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Arreglo.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Clases.
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 Herencia.
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.
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.
Listas Dinámicas.
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 Asociación.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
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.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS GUI.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Herencia.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Dependencia.
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
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Sonia Rueda Herencia y Polimorfismo
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
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Transcripción de la presentación:

INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso de estudio: Estacionamiento Dr. Luciano H. Tamargo Depto. de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur, Bahía Blanca 2015

CASO DE ESTUDIO: ESTACIONAMIENTO Una empresa de micros tiene un estacionamiento formado por un conjunto de unidades de estacionamiento. En un momento dado una unidad puede estar ocupada por un micro o libre. Las unidades libres y ocupadas están intercaladas. El estacionamiento puede ser modelado por un arreglo en el cual el subíndice indica el número de unidad. Inicialmente el estacionamiento está vacío. Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: ESTACIONAMIENTO Cuando un micro estaciona en una unidad se asigna un objeto a un elemento del arreglo. Cuando se retira un micro se asigna nulo a un elemento del arreglo. Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: ESTACIONAMIENTO Definimos una clase Estacionamiento como una TABLA de elementos de tipo micro. La clase brinda operaciones para: Estacionar un micro en una Unidad dada. Estacionar un micro en una Unidad libre. Retirar un micro dado. Retirar el micro de una Unidad dada. Decidir si un micro está asignado a alguna Unidad. Recuperar el micro asignado a una Unidad. Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: ESTACIONAMIENTO Definimos una clase Estacionamiento como una TABLA de elementos de tipo micro. La clase brinda operaciones para: Calcular la cantidad de Unidades. Calcular cuántas Unidades tienen asignado un micro. Decidir si todas las Unidades tienen asignado un micro. Calcular cuántos Micros tienen que hacer la verificación vehicular en el mes m. Asignar un elemento a una posición dada del arreglo Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: ESTACIONAMIENTO Definimos una clase Estacionamiento como una TABLA de elementos de tipo micro. La clase brinda operaciones para: Asignar un elemento en la primera posición no ligada del arreglo. Asignar nulo a la posición del arreglo ligada a un elemento dado. Asignar nulo a una posición dada del arreglo. Decidir si un micro está asignado a alguna Unidad. Decidir si alguna posición del arreglo está ligada a un elemento dado. … Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: ESTACIONAMIENTO 7 Estacionamiento > t [] Micro Micro > precioBase:real > patente:String cantAsientos:entero fechaUltMnt:Fecha > Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: ESTACIONAMIENTO Estacionamiento > t [] Micro > Estacionamiento(max: entero) > estacionar(unMicro: Micro, p: entero) estacionar(unMicro: Micro) retirar(p: entero) retirar(unMicro: Micro) Crea una Tabla con max Unidades Busca la primera unidad libre y asigna el unMicro a la unidad. Requiere que haya una Unidad libre y unMicro no sea nulo Elimina unMicro de la unidad p. Requiere controlada la unidad Asigna unMicro a la Unidad p. Requiere la unidad válida y vacía y micro no nulo Elimina unMicro de la unidad a la que está asignado Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: ESTACIONAMIENTO 9 Estacionamiento > t [] Micro > cantUnidades(): entero cantUnidadesOcupadas(): entero todasOcupadas(): boolean estamicro(unMicro:Micro):boolean existeUnidad(p: entero): boolean microUnidad(p: entero): Micro cantVerificación(m: entero): entero Micro > … > … > mesVerificación():entero Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA 10 class Estacionamiento { private Micro[] t; //Constructor public Estacionamiento(int max) { /*Crea un arreglo para representar max Unidades de estacionamiento */ t = new Micro[max]; }... Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA 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 una Unidad libre, por ejemplo invocando a todasOcupadas(). 11 //Comandos public void estacionar (Micro unMicro) { /*Busca la primera Unidad libre y asigna unMicro a la unidad. Requiere que haya una Unidad libre y unMicro no sea nulo*/ int i = 0; while (t[i] != null) i++; t[i] = unMicro; }

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA Observemos que si no se cumple el requerimiento la terminación va a ser anormal. Si la unidad ya tenía un micro asignado, implícitamente queda eliminado al asignarse un nuevo micro. 12 public void estacionar(Micro unMicro, int p) { /*Asigna unMicro a la unidad p. Requiere controlado la unidad y micro no nulo*/ t[p] = unMicro; }

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA Si no se cumple el requerimiento la terminación va a ser anormal. Si la unidad no tenía un micro asignado no se produce ningún cambio. 13 public void retirar(int p) { /*Elimina el micro de la unidad p. Requiere controlada la unidad*/ t[p] = null; }

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA 14 //Comandos public void retirar(Micro unMicro) { /*Elimina el micro de la unidad en la que está estacionado*/ int i = 0; boolean encontro = false; while (i < cantUnidades() && !encontro){ if (t[i] == unMicro) { encontro = true; t[i] = null; } i++; } }

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA public int cantUnidades (){ return t.length(); } public int cantUnidadesOcupadas (){ int i = 0; int cant = 0; while (i < cantUnidades ()){ if (t[i]!=null) cant++; i++; } return cant; } Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA public boolean todasOcupadas (){ int i = 0; boolean todas = true; while (i < cantUnidades () && todas ){ todas = t[i]!=null; i++; } return todas; } Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA public boolean estaMicro(Micro unMicro){ /*Decide si un micro dado, no nulo, está asignado a una Unidad*/ int i = 0; boolean esta = false; while (i < cantUnidades() && !esta ){ esta = t[i] == unMicro ; i++; } return esta; } Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA public boolean existeUnidad (int p){ return p >= 0 & p < t.length; } public Micro microUnidad (int p){ /*Retorna el micro en una Unidad dada, que asume controlado*/ return t[p]; } Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: ESTACIÓN METEOROLÓGICA public int cantVerificación (int m){ /*Retorna la cantidad de micros que deben hacer la verificación vehicular en el mes m. Requiere 1<=m<=12*/ int cant = 0; for (int i=0; i < cantUnidades();i++) if (t[i].mesVerificacion() == m) cant++ return cant; } Introducción a la Programación Orientada a Objetos IPOO

Introducción a la Programación Orientada a Objetos IPOO class Estacionamiento { private Micro[] t; //Constructor public Estacionamiento(int max) { /*Crea un arreglo con max Unidades */ t = new Micro[max]; } class SectoresFabrica { private Robot[] t; //Constructor public SectoresFabrica(int max) { /*Crea un arreglo con max Sectores */ t = new Robot[max]; } Reusabilidad

21 //Comandos public void estacionar (Micro unMicro) { /*Busca la primera Unidad libre y asigna unMicro a la unidad. Requiere que haya una Unidad libre y micro no sea nulo*/ int i = 0; while (t[i] != null) i++; t[i] = unMicro; } //Comandos public void asignar(Robot robot) { /*Busca el primer sector y asigna 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; } Reusabilidad

public boolean estaMicro (Micro unMicro){ /*Decide si un micro dado, no nulo, está asignado al menos a una Unidad*/ int i = 0; boolean esta = false; while (i < cantUnidades() && !esta ){ esta = t[i] == unMicro) ; i++; } return esta; } public boolean estaRobot (Robot robot){ /*Decide si un robot dado, no nulo, está asignado a un Sector */ int i = 0; boolean esta = false; while (i < cantSectores() && !esta ){ esta = t[i] == robot) ; i++; } return esta; }

REUSABILIDAD Si observamos el comportamiento de la clase SectoresFabrica definida antes y la clase Estacionamiento definida ahora, podemos notar un patrón de comportamiento. Los sectores de la fábrica y las unidades del estacionamiento se asocian a elementos de un arreglo. En ambas clases el constructor crea un arreglo. El comando que asigna un robot a un sector es análogo al comando que estaciona un micro en una unidad. La consulta que decide si un robot está asignado a algún sector es análoga a la consulta que decide si un micro está estacionado en alguna unidad. Introducción a la Programación Orientada a Objetos IPOO

REUSABILIDAD Algunos servicios son específicos de SectoresFabrica, otros de Estacionamiento. Una diferencia es que un mismo robot puede estar asignado a dos sectores. En cambio un micro solo puede estar asignado a una unidad de estacionamiento. Dos clases pueden encapsular estructuras análogas pero diferir en el significado de los servicios. En siguiente diseño de la clase Estacionamiento los métodos que insertan elementos asumen la responsabilidad de validar las posiciones. Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: ESTACIONAMIENTO Estacionamiento > t [] Micro > Estacionamiento(max: entero) > estacionar(unMicro: Micro, p: entero): boolean estacionar(unMicro: Micro): boolean retirar(p: entero): boolean retirar(unMicro: Micro) Crea una Tabla con max Unidades Busca la primera unidad libre y asigna el unMicro a la unidad. Si no hay una unidad libre retorna false Elimina unMicro de la unidad p. Si la unidad no es válida retorna false Asigna unMicro a la Unidad p. Si la unidad no es válida o está ocupada retorna false Elimina unMicro de la unidad a la que está asignado Introducción a la Programación Orientada a Objetos IPOO