@startuml
class Main{}

Main *-- UI

class UI{
    + String userInput(Scanner msg)
    - Scanner writeToFile()
}

UI *-- Player
UI *-- Team
UI *-- Admin
class Player{
    - String playerName;
    - ArrayList<String> teamPlayers;
}

class Team{
    - String teamName;
    - ArrayList<String> players;
    - Boolean haveLost = false;
    - int gamesWon = 0;
    - int teamPoints;
}

class Admin{
    - Scanner readFromFile;
    - String deadline;
    + String setDeadline()
    + int setGamesWon(int won)
    + Boolean setHaveLost(Boolean lost)
    + int setTeamPoints(int teamPoints)
}

class Date{
    - int day;
    - int month;
    - int year;
    + void setDate(int _day, int _month, int _year)
    + String getDate()
}

class Knockout{
    - Scanner setGameDate;
    - void sortTeams(ArrayList<Team> _teams)
    + void setGameDate(ArrayList<Team> _teams, Scanner input)
    + void printGamePlan(ArrayList<Team> _teams)
}

class GroupStage{
    - ArrayList<ArrayList> bracket = new ArrayList<>()
    - ArrayList<Team> teamPlacement = new ArrayList<>()
}

Interface Tournament{
    - ArrayList<ArrayList> matches
    + void setGameDate(ArrayList<Team> _teams), Scanner input)
    + void printGamePlan(ArrayList<Team> _teams)
    + void makeTournament()
}

Abstract Matches{
    - ArrayList<Team> match
    - Team teamWon()
}



Team <-- Player
Team <-- Matches

Admin <-- Knockout
Admin <-- GroupStage
Admin <-- Date
Admin <-- Team

Matches *-- GroupStage
Matches *-- Knockout

Tournament *-- Knockout
Tournament *-- GroupStage
Knockout <-- Date
GroupStage <-- Date


@enduml