Classes CatalegAstronomic i Borsa en Java: Guia i Codi

Clasificado en Inglés

Escrito el en catalán con un tamaño de 4,99 KB

Classe CatalegAstronomic en Java

A continuació es presenta la implementació de la classe CatalegAstronomic, dissenyada per a gestionar una col·lecció d'astres utilitzant arrays estàtics i mètodes de cerca i filtratge.

public class CatalegAstronomic {
    // Atributs
    public static final int MAX_ASTRES = 120;
    private int numAstres;
    private int numEstelsSimpleVista;
    private Astre[] cataleg;

    // Constructor per defecte
    public CatalegAstronomic() {
        cataleg = new Astre[MAX_ASTRES];
        numAstres = 0;
        numEstelsSimpleVista = 0;
    }

    // Mètode que torna la posició o -1 si no hi és
    private int posicioDe(Astre a) {
        int pos = -1;
        int i = 0;
        while (i < numAstres && !cataleg[i].equals(a)) {
            i++;
        }
        if (i < numAstres) {
            pos = i;
        }
        return pos;
    }

    // Mètode booleà
    public boolean esEstelSimpleVista(int i) {
        return cataleg[i].getTipus() == Astre.ESTEL &&
               cataleg[i].visibleAmb().equals("a simple vista");
    }

    // Booleà que torna true quan afegeix un astre; si no hi és o no cap, torna false
    public boolean afegeix(Astre a) {
        boolean res = false;
        int pos = posicioDe(a);
        if (pos == -1) {
            if (numAstres != MAX_ASTRES) {
                cataleg[numAstres++] = a;
                if (esEstelSimpleVista(numAstres - 1)) {
                    numEstelsSimpleVista++;
                }
                res = true;
            }
        }
        return res;
    }

    // Torna el primer Astre del catàleg més brillant que el donat o null si no n'hi ha
    public Astre primerMesBrillantQue(Astre a) {
        int i = 0;
        while (i < numAstres && cataleg[i].mesBrillant(a) != 1) {
            i++;
        }
        if (i < numAstres) {
            return cataleg[i];
        } else {
            return null;
        }
    }

    // Mètode que torna un array d'Astre amb els estels visibles
    public Astre[] filtraEstelSimpleVista() {
        Astre[] aux = new Astre[numEstelsSimpleVista];
        int n = 0;
        for (int i = 0; i < numAstres; i++) {
            if (esEstelSimpleVista(i)) {
                aux[n] = cataleg[i];
                n++;
            }
        }
        return aux;
    }

    // Mètode que torna el més brillant de tots o null si el catàleg està buit
    public Astre brillaMes() {
        Astre brillant = cataleg[0];
        for (int i = 1; i < numAstres; i++) {
            if (cataleg[i].mesBrillant(brillant) == 1) {
                brillant = cataleg[i];
            }
        }
        return brillant;
    }
}

Classe Borsa en Java

La classe Borsa gestiona accions financeres, controlant actualitzacions de preus i filtrant aquelles empreses que presenten beneficis positius.

public class Borsa {
    // Atributs
    public static final int MAX_ACCIONS = 250;
    private int accions;
    private Accio[] borsa;
    private int ambBeneficis;

    // Constructor que inicialitza els atributs
    public Borsa() {
        borsa = new Accio[MAX_ACCIONS];
        accions = ambBeneficis = 0;
    }

    // Donada una acció, torna la seua posició a l'array o -1 si no hi és
    private int posicioDe(Accio a) {
        int result = -1;
        int i = 0;
        while (a.getEmpresa() != borsa[i].getEmpresa() && i < accions) {
            i++;
        }
        if (i != accions) {
            result = i;
        }
        return result;
    }

    // Mètode que afegeix o actualitza l'acció a
    public boolean afegeixActualitza(Accio a) {
        boolean result = false;
        if (accions != MAX_ACCIONS) {
            if (posicioDe(a) != -1) {
                borsa[posicioDe(a)].setActual(a.getActual());
                result = true;
            } else {
                borsa[accions] = a;
                result = true;
                accions++;
            }
            if (a.capAmunt() == true) {
                ambBeneficis++;
            }
        }
        return result;
    }

    // Mètode que torna la primera acció de l'array que dóna més benefici o null si no n'hi ha cap
    public Accio mesBeneficisQue(Accio a) {
        double beneficisA = a.getActual() - a.getApertura();
        int i = 0;
        while (i < accions && (borsa[i].getActual() - borsa[i].getApertura()) <= beneficisA) {
            i++;
        }
        if (i < accions) {
            return borsa[i];
        } else {
            return null;
        }
    }

    // Mètode que torna un array de String que continga el nom de les empreses amb beneficis
    public String[] empresaCapAmunt() {
        String[] aux = new String[ambBeneficis];
        int n = 0;
        for (int i = 0; i < accions; i++) {
            if (borsa[i].capAmunt()) {
                aux[n] = borsa[i].getEmpresa();
                n++;
            }
        }
        return aux;
    }
}

Entradas relacionadas: