IPOO 2 cuatrimestre 2017 Departamento de Ciencias e Ingeniería

Slides:



Advertisements
Presentaciones similares
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.
Advertisements

Tipos de Datos Abstractos Vector de Racionales
Reusabilidad La productividad está basada en reusabilidad y extensibilidad El reusabilidad permite desarrollar nuevas aplicaciones a partir de componentes.
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.
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 Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Genericidad.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Tabla.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Colección.
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 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 Tipo.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Arreglo.
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 Herencia.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Herencia.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Sonia.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Sonia.
Introducción a la Programación Orientada a Objetos Sonia Rueda Herencia y Polimorfismo Departamento de Ciencias e Ingeniería de la Computación UNIVERSIDAD.
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Diseño y Programación Orientada a Objetos
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
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
Estructuras de Datos Aun en problemas muy simples surge la necesidad de agrupar valores elementales de alguna manera. Cuando representamos una caja de.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Diseño y Programación Orientada a Objetos
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
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
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Sonia Rueda Herencia y Polimorfismo
Sonia Rueda Herencia y Polimorfismo
Estructuras de datos y algoritmos
IPOO 2 cuatrimestre 2017 Departamento de Ciencias e Ingeniería
IPOO 2 cuatrimestre 2016 Departamento de Ciencias e Ingeniería
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
IPOO 2 cuatrimestre 2015 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
Ordenamiento: Quick Sort
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
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Transcripción de la presentación:

Introducción a la Programación Orientada a Objetos Sonia Rueda Genericidad IPOO 2 cuatrimestre 2017 Departamento de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR 2017

Genericidad Una clase genérica encapsula a una estructura cuyo comportamiento es independiente del tipo de las componentes. Las clases genéricas favorecen la reusabilidad y la extensibilidad. La genericidad puede modelarse en Java de dos maneras diferentes: usando polimorfismo paramétrico o usando herencia. En esta materia definiremos clases genéricas usando herencia. Introducción a la Programación Orientada a Objetos

Genericidad Representamos el conjunto de vehículos de una cochera con una clase Estacionamiento que encapsula a un arreglo de componentes de clase Micro y brinda operaciones para estacionar, retirar, buscar, etc. Representamos a un conjunto de robots de una fábrica con una clase Sectores que encapsula un arreglo de componentes de clase Robot y brinda operaciones para asignar, desasignar, buscar, etc. Sectores Estacionamiento Robot Micro

Genericidad Estacionamiento T : arreglo de Micro Asigna unMicro en la Unidad u. Requiere controlada la unidad y micro no nulo <<constructores>> Estacionamiento (max : entero) <<comandos>> estacionar (unMicro :Micro,u:entero) estacionar (unMicro:Micro) retirar (u : entero) Busca la primera unidad libre y asigna el unMicro a la unidad. Requiere que haya una Unidad libre y unMicro no sea nulo <<Consultas>> cantUnidades ():entero cantUnidadesOcupadas(): entero todasOcupadas () : boolean estaMicro(unMicro:Micro): boolean existeUnidad(u:entero):boolean microUnidad (u:entero): Micro todosReservados():boolean Elimina unMicro de la unidad u. Requiere controlada la unidad Retorna true si en el estacionamiento hay un micro estacionado con la misma identidad que unMicro

Genericidad class Estacionamiento { private Micro[] T; //Constructor public Estacionamiento(int max) { /*Crea una Tabla con capacidad para max elementos. */ T= new Micro [max]; } ...

Genericidad //Comandos public void estacionar(Micro unMicro) { /*Busca la primera posición libre e inserta unMicro La clase Cliente es responsable de controlar que la tabla no esté llena y unMicro no sea nulo*/ int i = 0; while (T[i] != null) i++; T[i] = unMicro; } public void estacionar (Micro unMicro, int u) { /*Asigna unMicro a la unidad u, requiere controlada la unidad y unMicro no nulo*/ T[u] = unMicro; }

Genericidad public int cantUnidades(){ return T.length; } public boolean existeUnidad(int u){ /*Decide si existe una unidad de estacionamiento u*/ return (u>=0 & u<cantUnidades());

Genericidad //Consultas public boolean todosReservados() { /*Retorna true si todos los micros tienen todos los asientos reservados*/ int i = 0; todos =true; while (i <= cantUnidades() && todos){ todos = T[i] != null && !T[i].hayDisponibles(); i++; } return todos;

Genericidad class Parking { private Estacionamiento s; … public Parking(){ s = new Estacionamiento(50); } public void administrar (){ int pos; pos = 0; Micro r= new Micro (…); s.estacionar (r,pos);

Genericidad Sectores T : arreglo de Robot Asigna rob al sector s. Requiere controlado el sector y rob no nulo Sectores T : arreglo de Robot Busca al primer sector libre y asigna rob al sector. Requiere que haya un sector libre y rob no sea nulo <<constructores>> Sectores (max : entero) <<comandos>> asignar (rob :Robot,s:entero) asignar (rob:Robot) desasignar (s : entero) Elimina rob de la unidad s. Requiere controlado el sector <<Consultas>> cantSectores():entero cantSectoresOcupados(): entero todosOcupados () : boolean estaRobot(rob:Robot): boolean existeSector(s:entero):boolean robotSector (s:entero): Robot Retorna true si en algún sector hay un robot asignado con la misma identidad que rob

Genericidad class Sectores { private Robot[] T; //Constructor public Sectores(int max) { /*Crea una Tabla con capacidad para max elementos. */ T= new Robot [max]; } ...

Genericidad //Comandos public void asignar (Robot rob) { /*Busca el primer sector libre y asigna el robot rob La clase Cliente es responsable de controlar que la tabla no esté llena y rob no sea nulo*/ int i = 0; while (T[i] != null) i++; T[i] = rob; } public void asignar(Robot rob, int s) { /*Asigna el robot rob al sector s, requiere controlado el sector y rob no nulo*/ T[s] = rob; }

Genericidad public boolean estaRobot (Robot rob){ /*Decide si algún sector está ligado al robot rob, que asume no nulo*/ int i = 0; boolean esta = false; while (i < maxElem() && !esta ){ esta = T[i] == rob) ; i++; } return esta; Busca un robot con la misma identidad que el parámetro formal rob.

Genericidad public int cantSectores(){ return T.length; } public boolean existeSector(int s){ /*Decide si existe un sector s*/ return (s>=0 & s<cantSectores());

Genericidad class FabricaJuguetes{ private Sectores s; … public FabricaJuguetes(){ s = new Sectores(70); } public void producir (){ int pos; pos = 0; Robot r= new Robot (“Tommy”); s.asignar(r,pos);

Genericidad Tabla T : arreglo de Object <<constructores>> Inserta elem en la posición p. Requiere controlada la posición y elem no nulo Tabla T : arreglo de Object Busca la primera posición libre y asigna el elem a la posición. Requiere que haya una posición libre y elem no sea nulo <<constructores>> Tabla (max : entero) <<comandos>> insertar (elem :Object,p:entero) insertar (elem:Object) eliminar (p : entero) <<Consultas>> cantPosiciones ():entero cantPosicionesOcupadas(): entero todasOcupadas () : boolean estaElemento(elem:Object): boolean existePosicion(p:entero):boolean elementoPosicion (p:entero): Object Elimina elem de la posición p. Requiere controlada la posición Retorna true si algún elemento de la tabla tiene la misma identidad que elem

Genericidad class Tabla { protected Object[] T; //Constructor public Tabla (int max) { /*Crea una Tabla con capacidad para max elementos. */ T= new Object [max]; } ... Introducción a la Programación Orientada a Objetos

Genericidad //Comandos public void insertar (Object elem) { /*Busca la primera posición libre e inserta La clase Cliente es responsable de controlar que la tabla no esté llena y elem no sea nulo*/ int i = 0; while (T[i] != null) i++; T[i] = elem; } Introducción a la Programación Orientada a Objetos

Genericidad public void insertar (Object elem, int p) { /Inserta un elemento en la posición p, requiere controlada la posición y elem no nulo*/ T[p] = elem; } Introducción a la Programación Orientada a Objetos

Genericidad public boolean estaElemento (Object elem){ /*Decide si la tabla mantiene un elemento con la misma identidad de elem, que asume no nulo*/ int i = 0; boolean esta = false; while (i<cantPosiciones() && !esta ){ esta = T[i] == elem) ; i++; } return esta;

Genericidad public int cantPosiciones(){ return T.length; } public boolean existePosicion(int p){ /*Decide si existe una posición p*/ return (p>=0 & p<cantPosiciones());

Tabla T : arreglo de Object <<constructores>> Tabla (max : entero) <<comandos>> … <<Consultas>> Estacionamiento <<Constructor>> Estacionamiento (max:entero) <<Consultas>> todosReservados ():boolean

Genericidad class Estacionamiento extends Tabla { public Estacionamiento (int max){ super(max); } public boolean todosReservados() { /*Retorna true si todos los micros estacionados tienen todos los asientos reservados*/ int i = 0; todos =true; Micro m; while (i <= cantUnidades() && todos){ if (T[i] != null){ m = (Micro) T[i]; todos = !m.hayDisponibles();} i++; return todos; }

Genericidad class Parking { private Estacionamiento s; … public administrar(){ s = new Estacionamiento(50); int pos; pos = 0; Micro r= new Micro (…); s.insertar (r,pos); }

Genericidad class FabricaJuguetes{ private Tabla s; … public producir(){ s = new Tabla(70); int pos; pos = 0; Robot r= new Robot (…); s.insertar (r,pos); }