n3 manejo de grupos de atributos

65
Manejo de grupos de atributos Giovanni Hernández P. Nivel 3

Upload: emmanuel-nestitor-vasquez

Post on 18-Sep-2015

16 views

Category:

Documents


4 download

DESCRIPTION

manejo de atributos en un programa en java orientado a objetos,se deben tener en cuenta los Arrays para manejar arreglos en la programacion en java

TRANSCRIPT

Definicin de situaciones y manejo de casos

Manejo de grupos de atributosGiovanni Hernndez P.Nivel 3CASO DE ESTUDIOLas notas de un cursoEnunciado Se necesita crear una aplicacin para manejar las notas para un curso. El curso es visto por doce (12) estudiantes. Para cada estudiante se debe poder registrar la nota definitiva que sac en el curso. Adicionalmente, la aplicacin debe permitir calcular el promedio del curso, y el nmero de estudiantes que tienen una nota por encima del promedio.

Requerimientos Funcionales

Contenedoras de tamao fijoCursodouble nota1double nota2double nota3double nota4double nota5double nota6double nota7double nota8double nota9double nota10double nota11double nota12SolucinContenedoras de tamao fijo Atributo que es capaz de agrupar una secuencia de valores se denomina contenedorCursodouble notas =

0 1 2 3 4 5 6 7 8 9 10 11 Declaracin de un arregloEn Java las estructuras contenedoras de tamao fijo se denominan arreglos (array)public class Curso{public final static int TOTAL_EST = 12;private double[] notas;}Inicializacin de un arreglo// Construtorpublic Curso(){notas = new double[TOTAL_EST];}(length): en los arreglos permite consultar el numero que estos contienen.Ej.nota.lengthAcceso a los elementos del arregloIndice: sirve para indicar la posicin de un elemento en un arreglo.Van desde 0 hasta el numero de elementos 1Para tomar o modificar un elemento del arreglo se da el ndiceSintaxis[]Instrucciones repetitivasPuede repetirse un paso (instruccin) que va transformando gradualmente el mundo del problema.Ej.Cuando subimos unas escalerasInstrucciones repetitivasTaller No 1.Instrucciones repetitivasEj.En una hoja de papel con una lista de palabras, buscar si la palabra casa esta en la lista.Verificar si la primera palabra es igual a casa.Si lo es no busque mas. Si no lo es busque en la segunda palabra.Verificar si la segunda palabra es igual a casa.Si lo es no busque mas. Si no lo es busque en la tercera palabra.Repita el procedimiento palabra por palabra, hasta que la encuentre o hasta que no existan mas palabras por buscar.

Instrucciones repetitivasCalcular el promedio de las notas (R2 Calcular el promedio de las notas)public double promedio(){double suma = nota[0] + nota[1] + nota[2] + nota[3] + nota[4] + nota[5] + nota[6] + nota[7] + nota[8] + nota[9] + nota[10] + nota[11];return suma / TOTAL_EST;}Instrucciones repetitivasSolucin de manera iterativapublic double promedio(){double suma = 0.0int indice = 0;suma += nota[ indice ];indice ++;suma += nota[ indice ];indice ++;suma += nota[ indice ];indice ++;suma += nota[ indice ];indice ++;suma += nota[ indice ];indice ++;}Instrucciones repetitivasPublic double promedio(){double suma = 0.0;int indice = 0;while ( indice < TOTAL_EST){suma += nota[ indice ];indice ++;}}Instrucciones repetitivasComponentes de una instruccin repetitivaPreparacin del cicloLa condicin es verdadera ?Ejecuta las instrucciones del cuerpo del cicloSiNoTerminael ciclo

While ( ){}inicioInstrucciones repetitivasTaller No 2Ej.NombreR7-Calcular el numero de notas por encima del promedioResumenCalcula y retorna el numero de notas que estn por encima del promedioEntradasPromedioResultadosCalcula y retorna el numero de notas por encima del promedio.Mtodo de la clase CursoEj.NombreR8-Calcular el numero de estudiantes que aprobaron el cursoResumenCalcula y retorna el numero de estudiantes que aprobaron el curso por que su nota final es superior o igual a 3.0EntradasNingunaResultadosCalcula y retorna el numero de estudiantes que aprobaron el curso.Mtodo de la clase CursoEj.NombreR9-Calcular el numero de estudiantes que reprobaron el cursoResumenCalcula y retorna el numero de estudiantes que reprobaron el curso por que su nota final es inferior a 3.0EntradasNingunaResultadosCalcula y retorna el numero de estudiantes que reprobaron el curso.Mtodo de la clase CursoEj.NombreR9-Calcular la nota mas alta del cursoResumenCalcula y retorna la nota mas alta del cursoEntradasNingunaResultadosCalcula y retorna la nota mas alta del cursoMtodo de la clase CursoEj.NombreR9-Calcular la nota mas baja del cursoResumenCalcula y retorna la nota mas baja del cursoEntradasNingunaResultadosCalcula y retorna la nota mas bajo del cursoMtodo de la clase CursoPatrones de algoritmo para instrucciones repetitivasPatrn de un algoritmoPatrn de recorrido total: Recorrer todos los elementos de la contenedora.Ejemplos:Calcular la suma de todas las notas.Contar cuntos en el curso obtuvieron 3,5.Contar cuantos en el curso estn por debajo del promedio.

Patrones de algoritmo para instrucciones repetitivasPatrn de recorrido totalSolucinEl ndice para iniciar el ciclo debe estar en cero (0).La condicin para continuar es que el ndice sea menor que la longitud del arreglo.El avance consiste en sumarle uno (1) al ndice.Patrones de algoritmo para instrucciones repetitivasPatrn de recorrido totalCdigo Javafor( int indice = 0 ; indice < arreglo.length; indice++){ // cuerpo}Patrones de algoritmo para instrucciones repetitivasNombreR9-Incrementar notas inferioresResumenSe requiere incrementar en 10% todas las notas inferiores a 2,0.

EntradasNingunaResultadosSe ha incrementado en 10% todas las notas inferiores a 2,0.Primera variante del patrnPatrones de algoritmo para instrucciones repetitivasPatrn de recorrido total-variante No 1Public void incrementarNotasInferior(){ for( int indice = 0 ; indice < notas.length; indice++) { // cuerpoif( notas[indice] < 2.0 ){notas[indice] += notas[indice] * 0.1;} }}Patrones de algoritmo para instrucciones repetitivasPatrn de recorrido total Segunda varianteCalcular alguna propiedad sobre el conjunto de elementos del arreglo.Cmo acumular la informacin que se va llevando a medida que avanza el ciclo?Cmo inicializar dicha informacin?Cul es la condicin para modificar dicho acumulado ?Cmo modificar el acumulado?

Patrones de algoritmo para instrucciones repetitivasNombreR10-Dar estudiantes aprobadosResumenSe requiere calcular y retornar el nmero de estudiantes que aprobaron el curso.EntradasNingunaResultadosSe ha calculado y retornado el nmero de estudiantes que aprobaron el curso.Segunda variante del patrnPatrones de algoritmo para instrucciones repetitivasPatrn de recorrido total-variante No 2Public int darAprobados(){int vanAprobando = 0; for( int indice = 0 ; indice < notas.legth; indice++) { // cuerpoif( notas[i] >= 3.0 ){vanAprobando ++;} }return vanAprobando;}(1)(2)(3)(4)ActividadTaller No 3Taller No 31Patrones de algoritmo para instrucciones repetitivasPatrn de recorrido parcialUna condicin para verificar cada recorrido si se debe detener el ciclo o continuarVariable de tipo boolean.Usar en la condicin del ciclo la variable.Verificar si ya se cumpli el objetivo del ciclo se cambia la variable lgica de estado.Patrones de algoritmo para instrucciones repetitivasPatrn de recorrido parcialEsqueletoboolean termino = false;for(int indice=0; indice < arreglo.length && termino==false; indice ++){if()termino=true;}Patrones de algoritmo para instrucciones repetitivasNombreR11-Dar estudiantes que reprobaronResumenSe requiere calcular y retornar si existen ms de 3 estudiantes que no aprobaron el cursoEntradasNingunaResultadosSe ha calculado y retornado si ms de 3 estudiantes no aprueban el curso.Patrn de recorrido parcialPatrones de algoritmo para instrucciones repetitivasPatrn de recorrido parcial

public boolean darEstudiantesReprobados(){boolean termino = false;int reprobados = 0;for(int indice=0; indice < notas.length && termino==false; indice ++){if(notas[indice] < 3.0){reprobados ++;}If(reprobados >3){termino=true;}}return termino;}CuerpoActividadTaller No 4Patrones de doble recorridoNombreR11-Dar la nota que ms se repiteResumenSe requiere calcular y retornar cual es la nota que ms se repite.EntradasNingunaResultadosSe ha calculado y retornado la nota que ms se repite.Patrones de doble recorridoEsqueletofor (int indice1=0; indice1 < arreglo.length; indice1++){for (int indice2=0; indice2 < arreglo.length; indice2++){} }Patrones de doble recorridofor (int indice1=0; indice < notas.length; indice1++){double notaBuscada = notas[indice1];int contador = 0;for (int indice2=0; indice2 < notas.length; indice2++){if( notas[indice2]==notabuscada){contador ++;}}return notaMasVecesAparce;}Patrones de doble recorridopublic doble darNotaMasVecesAparece(){double notaMasVecesAparece = 0.0;int numeroVecesAparece = 0;for (int indice1=0; indice < notas.length; indice1++){double notaBuscada = notas[indice1];int contador = 0;for (int indice2=0; indice2 < notas.length; indice2++){if( notas[indice2]==notabuscada){contador ++;}}if ( contador > numeroVecesAparece){notaMasVecesAparece = notaBuscada;numeroVecesAparece = contador;}}return notaMasVecesAparce;}Taller No 5Caso No 2

Comprensin de los requerimientosNombreR1-Asignar una silla a un pasajeroResumenSe requiere asignar una silla segn las preferencias del pasajero. Estas son la clase (ejecutiva o econmica) y la ubicacin (ventana, centro o pasillo). En la asignacin se deben registrar los datos del pasajero.EntradasNombre del pasajeroCdula del pasajeroClase de la silla que deseaUbicacin de la silla que desea.ResultadosSi existe una silla con las caractersticas de la clase y ubicacin solicitadas por el pasajero, se asigna a dicho pasajeroCompresin del mundo del problema

ConstantesArreglo con 42 sillasArreglo con 8 sillasConstantesAsociacin opcionalTaller (HT)Taller No 6Taller No 744public class Avion{// - - - - - - - - - - - - - - - - - -// Constantes// - - - - - - - - - - - - - - - - - -public final static int SILLAS_EJECUTIVAS = 8;public final static int SILLAS _ECONOMICAS = 42;// - - - - - - - - - - - - - - - - - -// Atributos// - - - - - - - - - - - - - - - - - -private Silla[] sillasEjecutivas;private Silla[] sillasEconomicas;

}public class Avion{// - - - - - - - - - - - - - - - - - -// Constructor// - - - - - - - - - - - - - - - - - -public Avion(){sillasEjecutivas = new Silla[SILLAS_EJECUTIVAS];sillasEconomicas = new Silla[SILLAS_ECONOMICAS];// Creacin de las sillas de clase ejecutivasillasEjecutivas[0] = new Silla(1,Silla.CLASE_EJECUTIVA, Silla.VENTANA);sillasEjecutivas[1] = new Silla(2,Silla.CLASE_EJECUTIVA, Silla.PASILLO); // Creacin de las sillas de clase econmicasillasEconomicas[0] = new Silla(9,Silla.CLASE_ECONOMICA,Silla.VENTANA);sillasEconomicas[1] = new Silla(10,Silla.CLASE_ECONOMICA,Silla.CENTRAL);sillasEconomicas[2] = new Silla(11,Silla.CLASE_ECONOMICA,Silla.PASILLO);}

}Objetos: Sillaclase = 1numero = 6ubicacion = 3: Pasajerocedula = 1234nombre = Samuel H.pasajero: Sillaclase = 2numero = 10ubicacion = 2pasajero = null: AvionsillasEjecutivas =01234567: Sillaclase = 1numero = 1ubicacion = 1: Sillaclase = 1numero = 3ubicacion = 1: Pasajerocedula = 1234nombre = Samuel H.: Sillaclase = 1numero = 4ubicacion = 3pasajero = null: Pasajerocedula = 1234nombre = Samuel H.: Sillaclase = 1numero = 2ubicacion = 3pasajero = null. . .PreguntasCmo se llama un mtodo de un objeto que esta en un arreglo?Por ejemplo, dentro de la clase Avin, para averiguar si la silla que esta en la posicin 0 del arreglo de sillas ejecutivas est ocupada se utiliza la sintaxis:

sillasEjecutivas[0].sillaAsignada();

PreguntasLos objetos que estn en un arreglo se puede guardar en una variable?

Silla sillaTemporal = sillasEjecutivas[0];

RequerimientosNombreR1-Eliminar reservasResumenSe requiere eliminar todas las reservas del avin.EntradasResultadosSe han eliminado las reservas del avin.public void eliminarReservas(){for(int i=0; i < SILLAS_EJECUTIVAS; i++){sillasEjecutivas[ i ].desasignarSilla();}for(int i=1; i < SILLAS_ECONOMICAS;i++){sillasEconomicas[ i ].desasignarSilla();}}Taller No 8Contenedoras de tamao variable1000 estudiantes con sus notas200 puesto en un avin

Contenedoras de tamao variableUtilizar el paquete java.utilClase ArrayListPor simplicidad se denominar vector a la implementacin de una estrucutra contenedora de tamao variableContenedoras de tamao variableDeclaracin de un vector: El vector es una claseEj.private ArrayList catalogo;private ArrayList itemsCompra;

Contenedoras de tamao variableInicializacin y tamao de un vectorSe utiliza la misma sintaxis de creacin de cualquier objeto.No es necesario definir el numero de elementos

Vectorprivate ArrayList catalogo;

public CarroCompras(){ catalogo = new ArrayList();}Arregloprivate String[] materias;

public Notas(){ materias = new String[TOTAL_EST];}Contenedoras de tamao variableMtodos de la clase ArrayListisEmpty() : retorna verdadero si el vector no tiene elementos.size(): retorna el nmero de elementos que tiene el vector.

Contenedoras de tamao variableAcceso a los elementos del VectorEmpieza en la posicin 0.El mtodo get(pos) recibe como parmetro la posicin a recuperar y retorna el objeto.Al recuperar el elemento del vector se hace necesario hacer explicita la clase a la cual pertenece.

Contenedoras de tamao variableAcceso a los elementos del Vectorpublic int darInventario(){int sumaTotal=0;for(int indice=0; indice < catalogo.size(); indice++){Libro miLibro = (Libro) catalogo.get(indice);sumaTotal += miLibro.darPrecio();}return sumaTotal;}

Contenedoras de tamao variableAgregar elementos a un vectorSe pueden agregar al final o en una posicin especficaMtodosadd(objeto): Agrega al final del vector el objeto que se pasa como parmetro.add(indice,objeto): Agrega al vector el objeto que se pasa como parmetro en la posicin (inidce) indicada. El objeto que esta en la psosicin desplaza a todos los elementos hacia la posicin siguiente.Contenedoras de tamao variableAgregar elementos a un vectorpublic void agregarTresLibros(){Libro miLibro1 = new Libro(Programacin,McHill,100);Libro miLibro2 = new Libro(Matemtica,McHill,100);Libro miLibro3 = new Libro(Fsica,McHill,100);

catalogo.add(miLibro2);catalogo.add(miLibro3);catalogo.add(0,miLibro1);}Contenedoras de tamao variableReplazar un elemento del vectorCuando se requiere remplazar se utiliza el mtodo set(indice,objeto) donde indice es la posicin que se desea replazar y objeto es el elemento que tomar ahora la posicin.Contenedoras de tamao variableReplazar un elemento del vectorpublic void intercambiar(int pos1, int pos2){Libro miLibro1 = (Libro) catalogo.get(pos1);Libro miLibro2 = (Libro) catalogo.get(pos2);

catalogo.set(pos2, miLibro1);catalogo.set(pos1, miLibro2);}Contenedoras de tamao variableEliminar un elemento del vectorCuando se requiere eliminar se utiliza el mtodo remove(indice) donde indice es la posicin que se desea eliminar.public void elminiarLibro(int pos){catalogo.remove(pos);}