Problema 3 · Programació II UDL Juny 2011
Tema: Diseño de clases y objetos en Java, herencia e igualdad · Del examen Juny (2011)
Enunciado
Problema 3 [4 puntos]. Implementación de la clase Polynomial
Se desea diseñar e implementar una clase en Java denominada Polynomial para representar y operar con polinomios de una variable de la forma:
donde es el grado del polinomio (). Recordar que para un polinomio de grado se necesitan coeficientes.
La clase debe proporcionar obligatoriamente las siguientes operaciones y constructores:
new Polynomial(int maxDegree): crea un polinomio cuyo grado máximo admitido es maxDegree, con todos sus coeficientes inicializados a cero.
int getMaxDegree(): devuelve la capacidad máxima de grado permitida en el polinomio.
int getDegree(): devuelve el grado efectivo del polinomio, correspondiente a la potencia con el coeficiente no nulo más alto. Si todos los coeficientes fuesen cero, debe devolver 0.
void setCoefficient(int degree, double coeff): asigna el valor coeff al término de grado degree. Si el valor de degree excede el grado máximo permitido para la instancia (o es negativo), la operación no realiza ninguna modificación.
double getCoefficient(int degree): devuelve el coeficiente del grado especificado. Si el grado solicitado es mayor que el grado máximo permitido (o negativo), debe devolver 0.0.
static Polynomial add(Polynomial p1, Polynomial p2): calcula y retorna un nuevo polinomio correspondiente a la suma algebraica de p1 y p2. El grado de la suma es el grado del polinomio de mayor grado. Además, se requiere que el resultado devuelto sea un polinomio normalizado.
void normalize(): ajusta la representación interna del polinomio de manera que su grado máximo coincida con su grado real no nulo (salvo en el caso del polinomio nulo, donde únicamente subsiste el término de grado 0). Tras llamar a normalize(), los métodos getDegree() y getMaxDegree() deben devolver exactamente el mismo valor.
Implemente la clase completa con sus atributos, constructores y métodos, aplicando buenas prácticas de encapsulación y descomposición auxiliar.

Solución
Según los criterios oficiales de corrección
Implemente la clase completa con sus atributos, constructores y métodos, aplicando buenas prácticas de encapsulación y descomposición auxiliar.
Solución: ```java public class Polynomial { private double[] coefficients; public Polynomial(int maxDegree) { if (maxDegree < 0) { maxDegree = 0; } this.coefficients = new double[maxDegree + 1]; } public int getMaxDegree() { return this.coefficients.length - 1; } public int getDegree() { for (int i = this.coefficients.length - 1; i > 0; i--) { if (this.coefficients[i] != 0.0) { return i; } } return 0; } public void setCoefficient(int degree, double coeff) { if (degree >= 0 && degree <= getMaxDegree()) { this.coefficients[degree] = coeff; } } public double getCoefficient(int degree) { if (degree >= 0 && degree <= getMaxDegree()) { return this.coefficients[degree]; } return 0.0; } public void normalize() { int actualDegree = getDegree(); if (actualDegree != getMaxDegree()) { double[] newCoeffs = new double[actualDegree + 1]; for (int i = 0; i <= actualDegree; i++) { newCoeffs[i] = this.coefficients[i]; } this.coefficients = newCoeffs; } } public static Polynomial add(Polynomial p1, Polynomial p2) { int deg1 = p1.getDegree(); int deg2 = p2.getDegree(); int maxDeg = Math.max(deg1, deg2); Polynomial result = new Polynomial(maxDeg); for (int i = 0; i <= maxDeg; i++) { double sum = p1.getCoefficient(i) + p2.getCoefficient(i); result.setCoefficient(i, sum); } result.normalize(); return result; } } ```
La explicación paso a paso, hecha con IA, es Premium. Premium
Resuélvelo aquí mismo: corrección automática, pistas y solución paso a paso.
‹ Problema 2 · Juny 2011 · Ejercicio Recuperación - Problema 2. Clase StatVar y agrega… · 2010 ›