// File Persona.java
import java.util.*;

public class Persona {

  //rappr. attributi della classe uml
  private final String nome, cognome; 
  private final int giorno_nascita, mese_nascita, anno_nascita; 
    
  //rappr. associazione (0..*) giunta
  private InsiemeLista giunta; 
  
  //costruttore
  public Persona(String n, String c, int g, int m, int a) { 
    nome = n; 
    cognome = c; 
    giorno_nascita = g; 
    mese_nascita = m; 
    anno_nascita = a; 
    giunta = new InsiemeLista(TipoLinkGiunta.class);
  }
    
  //funzioni d'accesso agli attributi
  public String getNome() { return nome; } 
  public String getCognome() { return cognome; } 
  public int getGiornoNascita() { return giorno_nascita; } 
  public int getMeseNascita() { return mese_nascita; } 
  public int getAnnoNascita() { return anno_nascita; } 
  
  //funzioni d'accesso alle associazioni
  public int quantiLinkGiunta() { return giunta.size(); }
  public Set getLinkGiunta() {
    if (quantiLinkGiunta() < 1)
      throw new RuntimeException(
        "partecipazione obbligatoria di Persona in Giunta violata");
    return (InsiemeLista)giunta.clone(); 
  }

  //funzioni ausiliarie necessare per il corretto inserimento e
  //cancellazione di tuple dalla associazione Giunta
  public void inserisciLinkGiunta(AssociazioneGiunta a) { 
    if (a != null  && 
        a.getLink().getPersona() == this && a.getLink().getRegione() != null)
      giunta.add(a.getLink());
  }
  public void eliminaLinkGiunta(AssociazioneGiunta a) {
    if (a != null  && a.getLink().getPersona() == this)
      giunta.remove(a.getLink());
  }
}







