@startuml

Main --> "has a " Menu
Menu --> "has a " Tournament
Menu --> "has a " Teams
Menu --> "has a " Match
Main --> "has a " FileIO
FileIO --> "has a"FileIOTournament
FileIO --> "has a" FileIOMatch
FileIO --> "has a"FileIOTeams

Class Main {
- Scanner input
- ArrayList<Teams> teams
- ArrayList<Match> matches
- ArrayList<Tournament> tournaments
+ loadData(load)
+ teams=teamsIO.loadData();
+ tournaments=tournamentIO.loadData();
+ FileIOMatch.loadData(teams, tournaments);
+ Menu.mainMenu(input, teams, matches, tournaments);
+ teamsIO.saveData(teams);
+ tournamentIO.saveData(tournaments);
+ FileIOTournament.saveGameData(teams, tournaments);

}

Class Menu {
+ void mainMenu()
+ void teamMenu()
+ void tournamentMenu()
+ void matchMenu()
+ void createTeam()
+ void addPointsToTeam()
+ void addGoalsToTeam()
+ void showAllTeams()
+ void showPlacement()
+ void createMatch()
+ void showAllMatches()
+ void createTournament()
+ void addGameToTournament()
+ void showTournaments()

}

Class Tournament {
- int startTime
- int endTime
- String date
- String tournamentName
+ ArrayList<Match> gamesPlayed
+ int getStartTime()
+ int getEndTime()
+ String getDate()
+ String getTournamentName()

}

Class Teams {
- String teamName
- int teamMembers
- int numberOfGoals
- int points
+ String getTeamName()
+ int getNumberOfGoals()
+ void setNumberOfGoals(int numberOfGoals)
+ int getPoints()
+ void setPoints(int points)
+ int getTeamMembers()
+ toString()
}


Class Match {
- Teams teamOne
- Teams teamTwo
- int matchDate
- int matchTime
- int matchMonth
+ Teams getTeamOne()
+ Teams getTeamTwo()
+ int getMatchDate()
+ int getMatchTime()
+ int getMatchMonth()
+ String toString()
}

interface FileIO{
+ void saveData(ArrayList<T> arrayList)
+ ArrayList<T> loadData()
}

Class FileIOTeams{
+ void saveData(ArrayList<Teams> teams)
+ ArrayList<Teams>teams loadData()
}

Class FileIOTournament{
+ void saveData(ArrayList<Tournament> tournaments)
+ ArrayList<Tournament>tournaments loadData()
}

Class FileIOMatch{
+ void saveData(ArrayList<Match> matches)
+ ArrayList<Match> matches loadData()
}

@enduml