# Groupe
Date: 2022-10-31

fr.iutfbleau.projetIHM2022FI2.API

## Interface Groupe

All Superinterfaces:
  MonPrint

All Known Implementing Classes:
  GroupeNP

    public interface Groupe
    extends MonPrint

Un groupe

### Method Summary

All Methods Instance Methods Abstract Methods Default Methods
`boolean` `addEtudiant(Etudiant e)` Ajoute un étudiant.
`boolean` `addSousGroupe(Groupe g)` Ajoute un sous-groupe.
`java.util.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.
`java.lang.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.
`java.util.Set<Groupe>` `getSousGroupes()` Potentiellement "vide"
`TypeGroupe` `getType()` permet de récupérer la nature du groupe
`default java.lang.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 Detail

#### 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

    java.lang.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

    java.util.Set<Groupe> getSousGroupes()

Potentiellement "vide"

Returns:
  l'ensemble des sous-groupes.

#### getEtudiants

    java.util.Set<Etudiant> getEtudiants()

Potentiellement "vide"

Returns:
  l'ensemble des étudiants.

#### monPrint

    default java.lang.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`