Package API

# Interface Groupe

All Superinterfaces:
  `MonPrint`

All Known Implementing Classes:
  `GroupeNP`

public interface Groupe extends MonPrint
Un groupe

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `addEtudiant(Etudiant e)`
  Ajoute un étudiant.
  `boolean`
  `addSousGroupe(Groupe g)`
  Ajoute un sous-groupe.
  `Set<Etudiant>`
  `getEtudiants()`
  Potentiellement "vide"
  `int`
  `getId()`
  permet de récupérer l'identifiant d'un groupe (référence interne sans intérêt irl).
  `int`
  `getMax()`
  permet de récupérer le nombre maximum d'étudiants souhaités dans un groupe.
  `int`
  `getMin()`
  permet de récupérer le nombre minimum d'étudiants souhaités dans le groupe.
  `String`
  `getName()`
  permet de récupérer le nom d'un groupe (utile irl).
  `Groupe`
  `getPointPoint()`
  permet de récupérer le groupe père un groupe racine devrait retourner lui-même
  `int`
  `getSize()`
  permet de récupérer le nombre d'étudiants dans ce groupe.
  `Set<Groupe>`
  `getSousGroupes()`
  Potentiellement "vide"
  `TypeGroupe`
  `getType()`
  permet de récupérer la nature du groupe
  `default String`
  `monPrint()`
  Fonctionne comme ToPrint() sauf car une interface n'a pas le droit de faire un override sur ToPrint().
  `boolean`
  `removeEtudiant(Etudiant e)`
  Enlève un étudiant.
  `boolean`
  `removeSousGroupe(Groupe g)`
  Enlève un groupe.

- ## Method Details

  - ### addEtudiant

    boolean addEtudiant(Etudiant e)
    Ajoute un étudiant. Se comporte comme add de l'interface Set.
    Returns:
      true iff e est ajouté

  - ### removeEtudiant

    boolean removeEtudiant(Etudiant e)
    Enlève un étudiant. Se comporte comme remove de l'interface Set.
    Returns:
      true iff e est enlevé

  - ### addSousGroupe

    boolean addSousGroupe(Groupe g)
    Ajoute un sous-groupe. Se comporte comme add de l'interface Set. vérifie que le groupe passé en argument a bien renseigné this comme son père.
    Returns:
      true iff g est ajouté

  - ### removeSousGroupe

    boolean removeSousGroupe(Groupe g)
    Enlève un groupe. Se comporte comme remove de l'interface Set.
    Returns:
      true iff e est enlevé

  - ### getId

    int getId()
    permet de récupérer l'identifiant d'un groupe (référence interne sans intérêt irl).
    Returns:
      l'identifiant.

  - ### getName

    String getName()
    permet de récupérer le nom d'un groupe (utile irl).
    Returns:
      le nom.

  - ### getMin

    int getMin()
    permet de récupérer le nombre minimum d'étudiants souhaités dans le groupe.
    Returns:
      le minimum souhaité

  - ### getMax

    int getMax()
    permet de récupérer le nombre maximum d'étudiants souhaités dans un groupe.
    Returns:
      le maximum souhaité

  - ### getSize

    int getSize()
    permet de récupérer le nombre d'étudiants dans ce groupe.
    Returns:
      le nombre de places prises (pas forcément limité entre Min et Max, mais c'est le but)

  - ### getType

    TypeGroupe getType()
    permet de récupérer la nature du groupe
    Returns:
      le type du groupe

  - ### getPointPoint

    Groupe getPointPoint()
    permet de récupérer le groupe père un groupe racine devrait retourner lui-même
    Returns:
      le père

  - ### getSousGroupes

    Set<Groupe> getSousGroupes()
    Potentiellement "vide"
    Returns:
      l'ensemble des sous-groupes.

  - ### getEtudiants

    Set<Etudiant> getEtudiants()
    Potentiellement "vide"
    Returns:
      l'ensemble des étudiants.

  - ### monPrint

    default String monPrint()
    Description copied from interface: `MonPrint`
    Fonctionne comme ToPrint() sauf car une interface n'a pas le droit de faire un override sur ToPrint(). Toutes nos interfaces vont étendre cette interface.
    Specified by:
      `monPrint` in interface `MonPrint`
    See Also:
      - `NB. On n'utilise le mécanisme des méthodes par défaut pour donner du code dans une interface. C'est un petit peu laid et à contre-emploi mais pratique ici.

        NB2. On ne peut pas utiliser le toString de Objects https://stackoverflow.com/questions/24016962/java8-why-is-it-forbidden-to-define-a-default-method-for-a-method-from-java-lan

        `