Result och kopplingar till Participant finns i ganska många klasser. Det är alltså ganska många klasser som behöver anropa varandra (välkommen till DSV förresten ). Här är lite kod från föregående år, hoppas den går att förstå :
I huvudprogrammet:
//Hämtar rätt Participant genom for-loop (return participant med rätt startnummer)
Participant p = getParticipant(startingNo);
//Hämta laget Patricipant är med i
Team t = getTeam(p.getTeamName());
// Ta bort ur lag
t.removeParticipant(p);
// Ta bort deltagares resultat
p.deleteResult();
// Ta bort ur Program
participants.remove(p);
// Kolla om laget är tomt och ev ta bort
if (t.checkTeamMembers())
teams.remove(t);
patricipants och teams är alltså ArrayLists i "huvud"programmet.
Börjar uppifrån: Team-klassens removeParticipant-metod, där teamMembers är Arraylist i Team-klassen:
public void removeParticipant(Participant p) {
teamMembers.remove(p);
}
Participants deleteResult() metod, där results är arraylist (medals kan du strunta i om ni inte har den i år). Metoden anropar alltså deleteResult-metoden i varje Result, och tömmer arraylisten därefter:
public void deleteResult() {
for (Result r : results) {
r.deleteResult();
}
results.clear();
medals.clear();
}
Anropar alltså Results deleteResult:
public void deleteResult() {
event.deleteResult(this);
}
Som anropar event.deleteResult som har Arraylisten results:
public void deleteResult(Result r) {
results.remove(r);
}
Tillbaks till huvudprogrammet så tas Participant bort ur arraylisten med alla deltagare. Därefter kontrolleras laget om det är några medlemmar kvar, och tas bort ur arraylisten om det är tomt.