@startuml class Comune { - nome: String - codice: String + getNome(): String + getCodice(): String } class Comuni { - comuni: ArrayList + addComune(Comune): void + removeComune(Comune): void + getComuni(): ArrayList + getCodiceComune(String): String } enum Formato { JSON XML } enum StatoGioco { IN_CORSO GIUSTIZIATO RIVOLUZIONE DODICESIMO_GIORNO NON_ABBASTANZA_SOLDI ARRESTATO } class PatenteELibbrettoPregohMain { +main(String[]): void -gameLoop(GameData): void -gestisciPersona(GameData, ArrayList): void -datiSbagliatiRifiutati(Persona, GameData, ArrayList): void -personaRifiutata(Persona, ArrayList): void -gestisciMazzetta(Persona, GameData, ArrayList): void -mazzettaRifiutata(Persona, ArrayList): void -mazzettaPoliziotto(Persona, GameData, ArrayList): void -mazzettaRivoluzionario(Persona, GameData, ArrayList): void -datiCorrettiRifiutati(Persona, ArrayList, GameData): void -datiSbagliatiAccettati(Persona, ArrayList, GameData): void -datiCorrettiAccettati(Persona, ArrayList): void -endGame(GameData): void -controllaPersona(Persona, Comuni, GameData): boolean -getFormato(): Formato } class Persona { -nome: String -cognome: String -sesso: String -dataNascita: String -comuneNascita: String -codiceFiscale: String -scadenzaDocumento: String +getNome(): String +getCognome(): String +getSesso(): String +getDataNascita(): String +getComuneNascita(): String +getCodiceFiscale(): String +getScadenzaDocumento(): String +isCodiceFiscaleValido(Comuni): boolean +calcolaCodiceFiscale(Comuni): String } class GameData { - formato: Formato - nomePersonaggio: String - diario: ArrayList - comuni: Comuni - persone: ArrayList - saldo: double - numeroMazzetteAccettatePolizia: int - numeroRivoluzionariAccettati: int - statoGioco: StatoGioco - giorno: int - data: LocalDate + getDiario(): ArrayList + getComuni(): Comuni + getPersone(): ArrayList + getSaldo(): double + getPersonaDaControlare(): Persona + getNumeroMazzetteAccettatePolizia(): int + getNumeroRivoluzionariAccettati(): int + addPaginaDiario(PaginaDiario): void + addSaldo(double): void + pagaMulta(double): void + incrementaMazzetteAccettatePolizia(): void + incrementaRivoluzionariAccettati(): void + getNomePersonaggio(): String + getStatoGioco(): StatoGioco + getGiorno(): int + incrementaGiorno(ArrayList): void + getData(): LocalDate + saveDiario(): void } class PaginaDiario { - data: String - bilancio: double - personeControllate: ArrayList + getGiorno(): int + getData(): String + getBilancio(): double + getPersoneControllate(): ArrayList + addPersonaControllata(PersonaControllata): void + removePersonaControllata(PersonaControllata): void } class Parser { + parsePersone(Formato, String): ArrayList + parseComuni(Formato, String): Comuni + saveDiario(String, ArrayList, Formato): void } class PersonaControllata { - esitoControllo: boolean <<@SerializedName("approvato")>> - tipoPersonaControllata: TipoPersonaControllata <> -- + PersonaControllata(persona: Persona, esitoControllo: boolean, tipoPersonaControllata: TipoPersonaControllata) + isEsitoControllo(): boolean + getTipoPersonaControllata(): TipoPersonaControllata + getStatoTransito(): String + toString(): String } PersonaControllata --|> Persona PatenteELibbrettoPregohMain --> GameData PatenteELibbrettoPregohMain --> PersonaControllata PatenteELibbrettoPregohMain --> Persona PatenteELibbrettoPregohMain --> Formato PatenteELibbrettoPregohMain --> StatoGioco PatenteELibbrettoPregohMain --> Comuni PatenteELibbrettoPregohMain --> Parser Persona --> Comuni Comune <-- Comuni GameData --> Comuni GameData --> "0..*" Persona GameData --> "0..*" PaginaDiario GameData --> Formato GameData --> StatoGioco GameData --> "0..*" PersonaControllata } @enduml