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 Tipo.

Slides:



Advertisements
Presentaciones similares
Estructuras de datos y algoritmos
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
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.
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.
Estructuras dinámicas de datos, TAD Lista, parte 2
Igor Santos Grueiro. De este tipo de pilas NO vamos a hablar.
Conceptos Objeto Clase Atributo / Método Encapsulamiento Mensaje
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.
Manejo de Punteros y objetos en memoria dinámica en C++
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.
Entrada y Salida ES.leerChar (); ES.leerEntero (); ES.leerEnteroLargo (); ES.leerFloat (); ES.leerDouble (); System.out.print System.out.println.
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 Caso.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS GUI.
PILAS Una pila es una estructura de datos o lista de elementos, a la cual se le puede insertar o eliminar su contenido sólo por uno de sus extremos, llamado.
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 GUI.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Arreglo.
1 ListaUna Lista se define como una serie de N elementos E 1, E 2,..., E N, ordenados de manera consecutiva, es decir, el elemento E k (que se denomina.
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
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
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 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 Tipo de Dato Abstracto Colección ordenada Dr. Luciano H. Tamargo Depto. de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur, Bahía Blanca 2015

TIPO DE DATO ABSTRACTO Un tipo de dato es un conjunto de valores y un conjunto de operaciones definidas para estos valores. Cuando la representación de los datos y la implementación de las operaciones están encapsuladas, el tipo de dato es abstracto. Un tipo de dato abstracto (TDA) define un patrón a partir del cual es posible crear instancias sin conocer la representación interna de los valores ni la implementación de las operaciones. Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: AGENDA DE TURNOS Una Agenda de Turnos de un médico mantiene fecha, hora y paciente al cual se le asigna un turno. La clase Agenda encapsula una colección de elementos de clase Turno, representada con un arreglo parcialmente ocupado. Los elementos se mantienen ordenados cronológicamente por fecha y hora y están comprimidos de modo que todas las posiciones libres están al final. El servicio agendar es responsable de controlar que no haya dos turnos en el mismo día y hora. Si no puede agregar el nuevo turno retorna false. Introducción a la Programación Orientada a Objetos IPOO

Agenda > t [] Turno cant: entero > Agenda(max: entero) > agendar(t: Turno): boolean eliminar(t: Turno) > cantTurnos(): entero estaLlena(): boolean cantTurnosOSFechas(f: Fecha, o: String): entero estaLibre(d: Fecha, h: Horario): boolean Turno dia: Fecha hora: Horario paciente: Paciente > Turno (d:Fecha, h:Horario, p:Paciente) > igual(t: Turno): boolean mayor(t: Turno): boolean Paciente tipoDoc:char nroDoc:entero fechaNac:Fecha nombre: String os:String

CASO DE ESTUDIO: AGENDA DE TURNOS La clave de un objeto es el atributo o los atributos que distinguen a un objeto de otro. El tipo y número de documento puede ser la clave de un paciente, porque no habrá dos pacientes con el mismo tipo y número de documento. El día y hora puede ser la clave de un turno, porque no debería haber en una misma agenda dos turnos con la misma fecha en el mismo horario. El servicio igual de la clase Turno retorna true si el objeto que recibe el mensaje tiene los mismos valores que el parámetro en los atributos dia y hora. Introducción a la Programación Orientada a Objetos IPOO

class Agenda{ //Atributos de Instancia private Turno[] t; private int cant; /*Constructor crea una coleccion con capacidad para max elementos*/ public Agenda(int max) { t = new Turno[max]; cant = 0; } CASO DE ESTUDIO: AGENDA DE TURNOS

CASO DE ESTUDIO: AGENDA DE TURNOS 7 … length 100 t cant 0 :Agenda Agenda agendaDrPerez = new Agenda(100); agendaDrPerez

CASO DE ESTUDIO: AGENDA DE TURNOS 8 … length 150 t cant 0 :Libreta_Contactos Agenda agendaDrGomez = new Agenda(150); agendaDrGomez

CASO DE ESTUDIO: AGENDA DE TURNOS La clase Agenda_Turnos define un TDA a partir del cual pueden crearse varias instancias. Si la Agenda de Turnos de un médico se mantiene ordenada de acuerdo a los atributos fecha y hora, el servicio agendar no puede implementarse asignando el nuevo Turno a la primera posición libre. Cada vez que el objeto agendaDrPerez recibe el mensaje agendar() debe verificar si existe un turno con la misma fecha y hora y si no existe, buscar la posición para insertar el nuevo turno. Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: AGENDA DE TURNOS El servicio agendar tiene que funcionar considerando varios casos diferentes: La agenda está vacía el Turno es: Menor a todos Mayor a todos Mayor al primero pero Menor que el último Asumimos que la clase cliente controla que la agenda no está llena. Introducción a la Programación Orientada a Objetos IPOO

CASO DE ESTUDIO: AGENDA DE TURNOS Algoritmo agendar DE turno Buscar un turno en la agenda con la misma fecha y hora que turno si no existe Buscar la posición del primer elemento mayor a turno Arrastrar todos los elementos a partir de esa posición Asignar turno a la posición Incrementar cant 11 Observemos que cuando diseñamos el algoritmo nos desentendemos de algunos detalles, por ejemplo retornar un valor booleano Esta solución no es eficiente

CASO DE ESTUDIO: AGENDA DE TURNOS Algoritmo agendar DE turno Buscar un turno en la agenda con la misma fecha y hora que turno si no existe Buscar la posición de inserción desde el final hacia el principio, copiando cada turno en la posición que sigue Asignar turno a la posición Incrementar cant 12 Implementar esta versión del algoritmo

CASO DE ESTUDIO: AGENDA DE TURNOS Algoritmo agendar DE turno Buscar la posición de un turno con fecha y hora mayor o igual a turno si el turno tiene mayor fecha y hora Arrastrar todos los elementos a partir de esa posición Asignar turno a la posición Incrementar cant 13

CASO DE ESTUDIO: AGENDA DE TURNOS public boolean agendar(Turno turno){ //Requiere que la colección no esté llena boolean agendo = false; int pos = posMayoroIgual(turno); if (t[pos].mayor(turno)){ arrastrarDsp(pos); t[pos] = turno; cant++; agendo = true; } return agendo; } Introducción a la Programación Orientada a Objetos IPOO

private int posMayoroIgual (Turno turno){ /* Retornar la posición del primer elemento mayor o igual a turno*/ int pos = 0; boolean salir = false; while (pos < cantTurnos() && !salir){ if (t[pos].mayor(turno)|| t[pos].igual(turno)) salir = true; else pos++; } } private void arrastrarDsp (int pos){ for (int i = cantTurnos(); i > pos; i--) t[i] = t[i-1]; }

16 private int cantTurnosOSFecha (Fecha f, String o){ /* Computa la cantidad de turnos dados para la fecha f para pacientes de la obra social o*/ Paciente pac; int cont = 0; for (int i = 0; i < cantTurnos(); i++){ pac = t[i].obtenerPaciente(); if (t[i].obtenerFecha.equals(f) && pac.obtenerOS().equals(o)) cont++; } return cont; }

CASO DE ESTUDIO: AGENDA DE TURNOS Algoritmo cantTurnosFecha DE f, o Buscar la posición del primer turno con fecha igual a f o mayor que f Si existe un turno con fecha f Contar todos los turnos que corresponden a pacientes con la obra social o hasta que cambie la fecha 17 Implementar esta versión del algoritmo

NominaPacientes > T [] Paciente cant:entero > NominaPacientes(max:entero) > ingresar(t:Turno):boolean > cantPacientes():entero estaLlena():entero estaPaciente(t:char,n:entero) :boolean Paciente tipoDoc:char nroDoc:entero fechaNac:Fecha nombre: String os:String Observemos que el sistema completo puede incluir a otras clases que referencien a los objetos de la clase Paciente, por ejemplo, la nómina completa de pacientes.