Naam: Voornaam: Klas: Vergeet niet je document te hernoemen! Volg de instructies uit de opgave! Kopieer telkens de inhoud van de volledige klasse onder de correcte titellijn. //----------------- Mens ----------------- //----------------- Kangoeroe ----------------- //----------------- SpringerRepository -------------- package domein; import exceptions.LeeftijdException; import java.util.*; import java.util.stream.Collectors; import persistentie.SpringerMapper; public class SpringerRepository { private final List<Springer> lijstSpringers; private final SpringerMapper dm; private final List<Mens> lijstNieuwPR; public SpringerRepository() { dm = new SpringerMapper(); lijstSpringers = dm.geefDeelnemers(); lijstNieuwPR = new ArrayList<> (); } public List<Springer> getLijstSpringers() { return lijstSpringers; } public Springer geefSpringer(int indexGeselecteerdeDeelnemer) { return lijstSpringers.get(indexGeselecteerdeDeelnemer); } private boolean sprongGelukt(int hoogte) { Random r = new Random(); int drieVierdenHoogte = hoogte * 3 / 4; int hoogteGesprongen = r.nextInt(drieVierdenHoogte) + drieVierdenHoogte; return hoogteGesprongen > hoogte; } private String controleerPersoonlijkRecordMens(Mens m, int hoogte) { double pr = m.getPersoonlijkRecord(); if (pr == hoogte) return "EVENARING van PR!\n"; if (pr < hoogte) { m.setPersoonlijkRecord(hoogte); if (!lijstNieuwPR.contains(m)) lijstNieuwPR.add(m); return "NIEUW PR!\n"; } return ""; } public String geefVerloopWedstrijd() { String uitvoer = ""; int huidigehoogte = 150; int deelnemersOver = lijstSpringers.size(); while (deelnemersOver > 0) { double hoogteInM = huidigehoogte / 100.0; uitvoer += String.format("Hoogte: %.2fm%n", hoogteInM); Iterator<Springer> iterator = lijstSpringers.iterator(); while (iterator.hasNext()) { Springer s = iterator.next(); if (s.begintOpHoogte() <= huidigehoogte) // beginhoogte al bereikt { uitvoer += s.toString(); if (sprongGelukt(huidigehoogte)) { uitvoer += " SLAAGT!\n"; if (s instanceof Mens) uitvoer += controleerPersoonlijkRecordMens((Mens) s, huidigehoogte); } else { uitvoer += " FAALT!\n"; iterator.remove(); } } deelnemersOver = lijstSpringers.size(); } huidigehoogte += 5; uitvoer += "\n"; } uitvoer += geefSpringersMetNieuwPR(); uitvoer += "\n"; return uitvoer; } private String geefSpringersMetNieuwPR() { if (lijstNieuwPR.isEmpty()) return "Er waren geen deelnemers die een nieuw PR haalden"; else { String uitvoer = "Deze deelnemers haalden een nieuw PR:"; for (Springer s : lijstNieuwPR) uitvoer += String.format("%n%s", s.toString()); return uitvoer; } } public void voegSpringerToe(String[] info, SoortSpringer ss) throws LeeftijdException { Springer s = null; switch (ss) { case AMATEUR: s = new Amateur(info[0], Integer.parseInt(info[1]), Integer.parseInt(info[2])); break; case ATLEET: s = new Atleet(info[0], Integer.parseInt(info[1]), info[2]); break; case KANGOEROE: s = new Kangoeroe(info[0], Integer.parseInt(info[1])); break; } if (s != null) lijstSpringers.add(s); } public void serialiseerNieuwPR() { if (!lijstNieuwPR.isEmpty()) dm.serialiseerNieuwPR(lijstNieuwPR); } //TODO: geefGeordendeMensenOpNaamPR() //TODO: geefAantalKangoeroesZonderDubbels() //TODO: geefDeSpringerMetDeHoogsteBeginhoogte() //----------------- DeelnemersPaneel --------------- //----------------- DetailPaneel --------