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

ALGORITMOS DE ORDENAMIENTO
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
El proceso de desarrollo de software
Abstracciones y Modelos
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
Tema 4 Árboles. Árbol sobre matriz.
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.
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.
Á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.
Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.
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.
Pilas y Colas Estructuras de Datos.
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 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 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 GUI.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Tipo.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Arreglo.
Introducción a la Programación Orientada a Objetos Ordenamiento Ordenar una estructura de datos consiste en reacomodar sus elementos de manera tal que.
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 Herencia.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Dependencia.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
El celular en los parciales SI o NO
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
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
IPOO 2 cuatrimestre 2016 Departamento de Ciencias e Ingeniería
IPOO 2 cuatrimestre 2017 Departamento de Ciencias e Ingeniería
IPOO 2 cuatrimestre 2018 Departamento de Ciencias e Ingeniería
Ordenamiento: Quick Sort
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: Inventario Ordenamiento: Quick Sort 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: INVENTARIO Una dependencia municipal mantiene un inventario permanente de los bienes de uso. La clase Articulo modela a cada bien de uso con atributos: –código, –año de compra, –valor actual y –rubro: 1.Rodados, 2.Muebles, 3.Herramientas, 4.Equipos. Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: INVENTARIO El conjunto de bienes de uso se mantiene en un arreglo parcialmente ocupado con componentes de clase Articulo, encapsulado en una clase Inventario. El sistema GestionInventario actualiza el objeto Inventario mediante las operaciones provistas por la clase. Introducción a la Programación Orientada a Objetos IPOO

Inventario > t [] Articulo cant: entero > Inventario(max: entero) > insertar(c: Articulo) eliminar(c: Articulo) depreciarRubro(r:entero,p:real) ordenar() > cantArt(): entero estaLleno(): boolean recuperar(c: entero): Articulo pertenece(c: entero): boolean pertenece(a: Articulo): boolean unAnio(a: entero): Inventario Articulo > codigo: entero rubro: entero valor: real anio: entero > Articulo(c:entero, r:entero, v:entero, a:entero) > depreciar(p: real) > equals(Articulo a): boolean

CASO DE ESTUDIO: INVENTARIO Las clases Inventario y Articulo están asociadas. La clase Inventario encapsula a un arreglo t de elementos de clase Articulo. El atributo cant mantiene en cada momento la cantidad de elementos ocupados en el arreglo y también la posición en la que se va a insertar el próximo elemento. Los elementos están “comprimidos”, todos los elementos nulos están al final. Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: INVENTARIO Inventario(max: entero) crea un objeto de clase Inventario. Se crea un arreglo de max elementos, inicialmente nulos. insertar(a: Articulo) Asigna a a la primera posición libre del arreglo, es decir, cant. Aumenta el valor de cant. Requiere que la clase cliente haya verificado que la colección no esté llena y no haya otro artículo con el mismo código eliminar(a: Articulo) copia el último elemento en la posición que ocupaba a, de modo que no se conserva el orden en el que se insertan. Decrementa el valor de cant. Si c no pertenece al arreglo no provoca ningún cambio. Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: INVENTARIO depreciarRubro(r: entero, p: float) modifica el valor de cada artículo del rubro r decrementándolo de acuerdo al porcentaje p. ordenar() reacomoda el inventario ordenando los artículos por código aplicando la estrategia quick sort. Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: INVENTARIO recuperar(c: entero) Retorna, si existe, el artículo con el código c. Si no existe retorna null. pertenece(c: entero) Retorna verdadero si un elemento del Inventario tiene el código c. pertenece(a: Articulo) Decide si algún elemento de la colección tiene el mismo estado interno que a. unAnio(a: entero) Genera un objeto de clase Inventario solo con los objetos que corresponden al año a. Introducción a la Programación Orientada a Objetos IPOO

class Inventario { //Atributos de Instancia private Articulo[] t; private int cant; /*Constructor Crea una Coleccion con capacidad para max elementos*/ public Inventario(int max) { t = new Articulo[max]; cant = 0; } class GestiónInventario { … Inventario im = new Inventario(100); … }

CASO DE ESTUDIO: INVENTARIO 10 im … length 100 t cant 0 :Inventario

//Comandos public void insertar (Articulo a){ /*Asigna a a la primera posición libre del arreglo, es decir, cant. Aumenta el valor de cant. Requiere que la clase cliente haya verificado que la colección no esté llena y a esté ligado. */ t[cant++] = a; } class GestiónInventario { cod = 119; art = new Articulo(cod,1,155000,2013); if (!im.estaLleno() && !im.pertenece(cod)) im.insertar(art); … }

CASO DE ESTUDIO: INVENTARIO 12 im … length 100 t cant 0 :Inventario :Articulo

CASO DE ESTUDIO: INVENTARIO //Consultas public int cantArt () { return cant; } public boolean estaLleno() { return cant == t.length; } Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: INVENTARIO public Articulo recuperar(int c){ /*Retorna, si existe, el artículo con el código c. Si no existe retorna nulo*/ boolean esta = false; int i; for ( i = 0; !esta && i < cantArt() ; i++){ esta = t[i].obtenerCodigo() == c; } if (esta) return t[i]; else return null; } 14

CASO DE ESTUDIO: INVENTARIO public Articulo recuperar(int c){ /*Retorna, si existe, el artículo con el código c. Si no existe retorna nulo*/ boolean esta = false; int i; for ( i = 0; !esta && i < cantArt() ; i++){ esta = t[i].obtenerCodigo() == c; } if (esta) return t[i]; else return null; } 15 Observemos que en este caso no existe la posibilidad de que la referencia sea nula, si la clase cliente cumplió con su responsabilidad.

CASO DE ESTUDIO: INVENTARIO Introducción a la Programación Orientada a Objetos IPOO public boolean pertenece (int c){ /*Retorna verdadero si un elemento del Inventario tiene el código c*/ boolean esta = false; for(int i=0; !esta && i< cantArt(); i++){ esta = t[i].obtenerCodigo() == c; } return esta; }

CASO DE ESTUDIO: INVENTARIO Introducción a la Programación Orientada a Objetos IPOO public boolean pertenece (Articulo c){ /*Decide si algún elemento de la colección tiene el mismo estado interno que c*/ boolean esta = false; for (int i=0; !esta && i<cantArt(); i++){ esta = t[i].equals(c); } return esta; }

Introducción a la Programación Orientada a Objetos IPOO public void eliminar(Articulo c){ /* Copia el último elemento en la posición que ocupaba c, de modo que no se conserva el orden en el que se insertan. Decrementa el valor de cant. Si c no pertenece al arreglo no provoca ningún cambio */ boolean esta = false; int i= 0; while (!esta && i < cantArt())//Busca a c if (t[i] == c) esta = true; else i++; if (esta) { cant--; t[i] = t[cant]; t[cant] = null; } }

Introducción a la Programación Orientada a Objetos IPOO public void eliminar(Articulo c){ /* Copia el último elemento en la posición que el elemento equivalente a c, de modo que no se conserva el orden en el que se insertan. Decrementa el valor de cant. Si c no pertenece al arreglo no provoca ningún cambio */ boolean esta = false; int i= 0; while (!esta && i < cantArt())// Busca a c if (t[i].equals(c)) esta = true; else i++; if (esta) { cant--; t[i] = t[cant]; t[cant] = null; } El diseñador debe especificar si buscamos un elemento con la misma identidad que c o con el mismo estado interno.

CASO DE ESTUDIO: INVENTARIO Introducción a la Programación Orientada a Objetos IPOO public void depreciarRubro(int r, float p){ /*modifica el valor de cada artículo del rubro r decrementándolo de acuerdo al porcentaje p. */ for (int i = 0; i < cantArt() ; i++){ if(t[i].obtenerRubro() == r){ t[i].depreciar(p); } } }

CASO DE ESTUDIO: INVENTARIO Introducción a la Programación Orientada a Objetos IPOO public Inventario unAnio(int a){ /*genera un objeto de clase Inventario solo con los objetos que corresponden al año a. */ Inventario n = new Inventario(cantArt()); for (int i = 0; i < cantArt() ; i++) if(t[i].obtenerAnio() == a){ n.insertar(t[i]); } return n; }

ORDENAMIENTO: QUICK SORT El método de Quick Sort consiste en acomodar un elemento llamado Pivot en su posición definitiva y luego ordenar la estructura que queda a su izquierda y la que queda a su derecha. Todos los elementos a la izquierda del Pivot son menores a él. Todos los elementos a la derecha del Pivot son mayores a él. Las dos estructuras se ordenan aplicando el mismo método. Introducción a la Programación Orientada a Objetos IPOO

ORDENAMIENTO: QUICK SORT Acomodar un elemento llamado Pivot Ordenar a la izquierda del Pivot Ordenar a la derecha del Pivot Introducción a la Programación Orientada a Objetos IPOO

ORDENAMIENTO: QUICK SORT Introducción a la Programación Orientada a Objetos IPOO

ORDENAMIENTO: QUICK SORT

ORDENAMIENTO: QUICK SORT

ORDENAMIENTO: QUICK SORT

ORDENAMIENTO: QUICK SORT

ORDENAMIENTO: QUICK SORT

ORDENAMIENTO: QUICK SORT Acomodar un elemento llamado Pivot Ordenar a la izquierda del Pivot Ordenar a la derecha del Pivot Introducción a la Programación Orientada a Objetos IPOO Algoritmo QuickSort si hay más de un elemento si hay dos elementos comparar e intercambiar sino Acomodar Pivot QuickSort a la izquierda del Pivot QuickSort la derecha del Pivot

ORDENAMIENTO: QUICK SORT Introducción a la Programación Orientada a Objetos IPOO Algoritmo QuickSort DE ini, fin si ini < fin si ini + 1 = fin Comparar y Acomodar sino pospivot  AcomodarPivot ini, fin QuickSort ini, pospivot - 1 QuickSort pospivot + 1, fin

ORDENAMIENTO: QUICK SORT Acomodar Pivot

ORDENAMIENTO: QUICK SORT Acomodar Pivot

ORDENAMIENTO: QUICK SORT Acomodar Pivot > 4

ORDENAMIENTO: QUICK SORT Acomodar Pivot

ORDENAMIENTO: QUICK SORT Acomodar Pivot > 2

ORDENAMIENTO: QUICK SORT Acomodar Pivot

ORDENAMIENTO: QUICK SORT Acomodar Pivot < 9

ORDENAMIENTO: QUICK SORT Acomodar Pivot

ORDENAMIENTO: QUICK SORT Acomodar Pivot < 8

ORDENAMIENTO: QUICK SORT Acomodar Pivot > 1

ORDENAMIENTO: QUICK SORT Acomodar Pivot > 1

ORDENAMIENTO: QUICK SORT Acomodar Pivot

ORDENAMIENTO: QUICK SORT Acomodar Pivot

ORDENAMIENTO: QUICK SORT Acomodar Pivot > 5

ORDENAMIENTO: QUICK SORT Acomodar Pivot

ORDENAMIENTO: QUICK SORT Acomodar Pivot

ORDENAMIENTO: QUICK SORT Acomodar Pivot < 11

ORDENAMIENTO: QUICK SORT Acomodar Pivot < 9

ORDENAMIENTO: QUICK SORT Acomodar Pivot > 6

ORDENAMIENTO: QUICK SORT Acomodar Pivot

ORDENAMIENTO: QUICK SORT Acomodar Pivot > 6

ORDENAMIENTO: QUICK SORT Acomodar Pivot

ORDENAMIENTO: QUICK SORT Acomodar Pivot FIN

ORDENAMIENTO: QUICK SORT Introducción a la Programación Orientada a Objetos IPOO Algoritmo AcomodaPivot DE ini, fin DS pos pos  avanzar ini,fin

ORDENAMIENTO: QUICK SORT Introducción a la Programación Orientada a Objetos IPOO Algoritmo QuickSort DE ini,Fin si ini < fin si ini+1= fin Comparar y Acomodar sino pospivot  AcomodarPivot ini,fin QuickSort ini, pospivot - 1 QuickSort pospivot + 1, fin Es un algoritmo genérico, no depende del tipo de los elementos.

ORDENAMIENTO: QUICK SORT Introducción a la Programación Orientada a Objetos IPOO Algoritmo avanzar DE izq, der DS posPiv si izq >= der posPiv  izq sino si T izq >= T izq+1 intercambiar izq izq+1 posPiv  avanzar izq+1,der sino posPiv  retroceder izq,der

ORDENAMIENTO: QUICK SORT Introducción a la Programación Orientada a Objetos IPOO Algoritmo retroceder DE izq, der DS posPiv si izq >= der posPiv  izq sino si T izq <= T der posPiv  retroceder izq,der-1 sino intercambiar izq+1,der posPiv  avanzar izq,der-1