Dodatnie w obiekcie listy

0

Witam.
Chciałbym stworzyć, aby każdy obiekt klasy student posiadał listę klasy przedmiot. Niestety nie wiem jak to rozegrać, by zrobić to w sposób prawidłowy.
Schematycznie wygląda to tak: student --> Przedmiot(lista).
Posiadam następujący kod:
Student.java

public class Student implements Comparable<Student>, Serializable{
    private int NrAlbumu;
    private String imie;
    private String nazwisko;
    

    public Student(int nrAlbumu,String imie, String nazwisko) {
        this.NrAlbumu = nrAlbumu;
        this.imie = imie;
        this.nazwisko = nazwisko;
    }

    /**
     *
     * @return
     */
    @Override
    public String toString() {
        return String.format("| %d | %-12s | %-12s  |",NrAlbumu, imie, nazwisko);
    }

    public int getNrAlbumu() {
        return NrAlbumu;
    }
    
    public String getImie() {
        return imie;
    }

    public String getNazwisko() {
        return nazwisko;
    }

    public void setNrAlbumu(int NrAlbumu) {
        this.NrAlbumu = NrAlbumu;
    }
    
    public void setImie(String imie) {
        this.imie = imie;
    }

    public void setNazwisko(String nazwisko) {
        this.nazwisko = nazwisko;
    }

    @Override
    public int compareTo(Student listPracownikow) {
        return nazwisko.compareToIgnoreCase(listPracownikow.nazwisko);
    }
}

StudentListModel.java

public class StudentListModel extends AbstractListModel<Student>{

    List<Student> list;
    
    int point;

    public int getPoint() {
        return point;
    }

    public void setPoint(int point) {
        this.point = point;
    }
   

    public StudentListModel(List<Student> list) {
        this.list = list;
    }

    @Override
    public int getSize() {
       return list.size();
    }

    @Override
    public Student getElementAt(int index) {
        return list.get(index);
    }

    void refresh() {
        fireContentsChanged(this, 0, list.size()-1);
    }

    void addElement(Student p5) {
        list.add(p5);
        refresh();
    }
    
    void removeElement(Student p5)
    {
        list.remove(p5);
        refresh();
    }
    
    void modyficationElement(Student p5, int i)
    {
        setPoint(i);
        list.set(i, p5);
        refresh();
    }
    
    void modyficationElement(Student p5, Student praco)
    {
        list.add(p5);
        list.remove(praco);
        refresh();
    }
 
    void sortByNazwisko() {
        PracownikComparator pracownikComparator = new PracownikComparator();
        pracownikComparator.setSortBy(PracownikComparator.BYNAZWISKO) ;
        Collections.sort(list, pracownikComparator);
        refresh();
    }
    
    void sortByWynagrodzenie() {
        PracownikComparator pracownikComparator = new PracownikComparator();
        pracownikComparator.setSortBy(PracownikComparator.BYNR) ;
        Collections.sort(list, pracownikComparator);
        refresh();
    }

    public void save()
    {
        try {
            ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream("pracownicy.data"));
            outputStream.writeObject(list);
            outputStream.close();
            refresh();
        } catch (IOException ex) {
            System.out.println("Wystąpił błąd zapisu");
            ex.printStackTrace();
        }
    }
    
    public void open()
    {
        try {
            ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream("pracownicy.data"));
            list = (List<Student>) inputStream.readObject();
            inputStream.close();
            refresh();
        } catch (Exception ex) {
            System.out.println("Wystąpił błąd odczytu");
            ex.printStackTrace();
        }
    } 
}

2
class Student implements Comparable {

    final String id;
    final String name;
    final String surname;
    private final List<Subject> subjects;

    public Student(String id, String name, String surname, List<Subject> subjects) { 
        this.id = id;
        this.name = name;
        this.surname = surname;
        this.subjects = subjects;
    }

   @Override
    public String toString() {
        return String.format("| %d | %-12s | %-12s  |",id, name, surname);
    }

    @Override
    public int compareTo(Student s) {
        return surname.compareToIgnoreCase(s.surname);
    }

    List<Student> getSubjects() {
        return List.of(subjects.toArray(new Subject[]{}))
    }

}

class Subject {
    // ...
}
0

Stworzyłem. Jak teraz teraz się odwołać,aby dodać element ?

1

Kolego, ale lekcja z enkapsulacji nie odrobiona. Brak niemutowalności jestem w stanie zrozumieć, ale odwoływanie się do pola klasy po kropce O_o

1 użytkowników online, w tym zalogowanych: 0, gości: 1