POO-ITBA / 2024_01

Consultas 1C 2024
0 stars 0 forks source link

Ejercicio 7 TP 2 #2

Open BrunTac opened 7 months ago

BrunTac commented 7 months ago

Buenas tardes. Tenia una consulta sobre la eficiencia del código y su correspondencia con el paradigma de POO. El código cumple con la consigna, pero mirándolo por encima creería que esta programada de una manera mas imperativa. Quería saber cuales son las cosas dentro de este código que no estarían bien dentro de esta materia, y como se podria corregir. Gracias!

package Guias.Guia2.Ejercicio7;

import java.util.Arrays;

public class Histograma {
    private final static int SALTO = 10;
    private final static int MIN = 0;
    private final static int MAX = 100;
    private final static int OUTOFRANGE = -1;

    public static void main(String[] args) {
        int i = 0;
        int n;
        int[] numbers = new int[10];
        for(String ns : args) {
            n = Integer.parseInt(ns);
            i = count(n);
            if(i == OUTOFRANGE) {
                System.out.println("Argumentos incorrectos");
                return;
            }
            numbers[i]++;
        }

        int max = Arrays.stream(numbers).max().getAsInt();
        for(; max > 0 ; max--) {
            System.out.print("|");
            for (i = 0 ; i < 10 ; i++) {
                if (numbers[i] == max) {
                    System.out.print(" * |");
                    numbers[i]--;
                }
                else
                    System.out.print("   |");
            }
            System.out.println();
        }
        System.out.print("+---+---+---+---+---+---+---+---+---+---+" + '\n' + "0   10  20  30  40  50  60  70  80  90  100" + '\n');
    }

    public static int count(int n) {
        int i;
        if(n < MIN || n > MAX)
            return OUTOFRANGE;
        for(i = 0 ; n > 0 ; i++) {
            n -= SALTO;
        }
        return i - 1;
    }

}

Por las dudas, aclaro que importe la librería Arrays solamente para simplificar la búsqueda del máximo en numbers[]. No se si a esta altura o en general estaría permitido.

fmeola commented 7 months ago

Hola @BrunTac. El TP 2 está pensando para que arranquen con Java de forma imperativa así que no se espera que en estas implementaciones se aprecien las ventajas del paradigma POO. Del TP 3 en adelante ahí si no serán aceptadas soluciones que no se ajusten al paradigma POO. El método Arrays.stream no lo podés usar, involucra conceptos de colecciones que recién veremos para el segundo parcial (y ese en particular recién para el final de la materia). Para obtener el máximo tenés que obtenerlo manualmente con un recorrido como hacías en PI.