Hola
Rocka.
Las clases
Alumno y
Materia bien, lo único que yo cambiaría son los constructores
sin parámetros.
public Alumno() {
}
Nunca me ha gustado dejarlos vacíos sin código, de hecho, para dejarlos vacíos entonces no hace falta ni ponerlos.
Ya que los ponemos, interesa inicializar los atributos a unos valores por defecto.
Esto es especialmente importante para los atributos que sean
clases, como por ejemplo el nombre del alumno que es
clase String.
Si no los inicializamos, se quedan con valor nulo (
null) y esto deja abierta la posibilidad de que pueda ocurrir una
excepción(ya aprenderás más adelante qué son las excepciones) por intentar acceder al valor de un atributo..., que en realidad
no tiene valor, porque es
nullAsí que mejor dar a los atributos unos valores iniciales, los que sean, aunque sea una cadena vacía para los String y un 0 para los valores numéricos como la edad.
public Alumno() {
nombre = "";
edad = 0;
}
Y lo mismo para la clase
MateriaPero bueno, al margen de este detalle, ambas clases estarían bien.
Sin embargo, la clase
Nota, ya no me parece tan bien.
Para empezar, creo que el nombre correcto para esta entidad debería ser
AsignacionY lo más importante, nos dicen que:
Una asignación corresponde a la relación de una materia con un alumno
Pues esa "relación" no ha quedado modelada en tu clase.
Además de las 3 notas, esta clase debería tener dos atributos más: un objeto
Materia y un objeto
AlumnoDe esta manera, alumno y materia quedan relacionados.
Yo escribiría dicha clase de la siguiente manera.
Cambio nombres de algunos atributos y métodos, por gusto mío, pero en realidad son casi iguales a los que habías escrito tú.
El método toString() si lo he hecho más elaborado, para que sea él quien nos de toda la info que necesitamos presentar en pantalla, y que salga más o menos presentable.
public class Asignacion {
private Materia materia;
private Alumno alumno;
private int parcial1;
private int parcial2;
private int practico;
public Asignacion() {
materia = new Materia();
alumno = new Alumno();
parcial1 = 0;
parcial2 = 0;
practico = 0;
}
public Asignacion(Materia materia, Alumno alumno, int parcial1, int parcial2, int practico) {
this.materia = materia;
this.alumno = alumno;
this.parcial1 = parcial1;
this.parcial2 = parcial2;
this.practico = practico;
}
public Materia getMateria() {
return materia;
}
public void setMateria(Materia materia) {
this.materia = materia;
}
public Alumno getAlumno() {
return alumno;
}
public void setAlumno(Alumno alumno) {
this.alumno = alumno;
}
public int getParcial1() {
return parcial1;
}
public void setParcial1(int parcial1) {
this.parcial1 = parcial1;
}
public int getParcial2() {
return parcial2;
}
public void setParcial2(int parcial2) {
this.parcial2 = parcial2;
}
public int getPractico() {
return practico;
}
public void setPractico(int practico) {
this.practico = practico;
}
public double calcularPromedio(){
return (parcial1 + parcial2 + practico) / 3;
}
public boolean estaAprobada() {
return calcularPromedio() >= 6;
}
public String estadoAsignacion() {
return estaAprobada()?"Aprobada":"Reprobada";
}
@Override
public String toString() {
StringBuilder cadena = new StringBuilder();
cadena.append("-Nombre Alumno: " + alumno.getNombre());
cadena.append("\n-Nombre Materia: " + materia.getNombre());
cadena.append("\n-Cuatrimestre: " + materia.getCuatrimestre());
cadena.append("\n-Notas:");
cadena.append("\n\tParcial 1: " + parcial1);
cadena.append("\n\tParcial 2: " + parcial2);
cadena.append("\n\tPractico: " + practico);
cadena.append(String.format("\n-Promedio: %.2f", calcularPromedio()));
cadena.append("\n-Estado: " + estadoAsignacion());
return cadena.toString();
}
}
Ya luego solo queda hacer la clase
EscuelaTest.
Tres alumnos, tres materias y seis asignaciones.
Las asignaciones las colecciono en un
ArrayList.
No se si los conoces ya, si no es así, también se pueden hacer en un arreglo "primitivo".
Pero es importante coleccionarlos de una manera u otra, porque así luego se pueden presentar todas en pantalla usando un simple bucle.
public class EscuelaTest {
public static void main(String[] args) {
Materia materia1 = new Materia("Matematicas", 2);
Materia materia2 = new Materia("Filosofia", 1);
Materia materia3 = new Materia("Economia", 3);
Alumno alumno1 = new Alumno("Felipe Reyes", 17);
Alumno alumno2 = new Alumno("Sara Pelaez", 16);
Alumno alumno3 = new Alumno("Laura Juan", 17);
//Lista asignaciones
ArrayList<Asignacion> lista = new ArrayList<Asignacion>();
lista.add(new Asignacion(materia1, alumno1, 7, 4, 5));
lista.add(new Asignacion(materia1, alumno3, 9, 6, 7));
lista.add(new Asignacion(materia2, alumno2, 5, 5, 6));
lista.add(new Asignacion(materia2, alumno3, 4, 8, 8));
lista.add(new Asignacion(materia3, alumno1, 8, 5, 8));
lista.add(new Asignacion(materia3, alumno2, 9, 0, 5));
System.out.println("\t\tLISTADO ASIGNACIONES\n");
for (Asignacion asig: lista) {
System.out.println(asig);
System.out.println("\n\t--------------------\n");
}
}
}
No dudes en preguntar si algo no lo entiendes o piensas que debería hacerse de otra manera.
Un saludo.