# GroupeNP
Date: 2022-10-31

fr.iutfbleau.projetIHM2022FI2.MNP

## Class GroupeNP

- java.lang.Object
- - fr.iutfbleau.projetIHM2022FI2.MNP.GroupeNP

All Implemented Interfaces:
  Groupe, MonPrint

    public class GroupeNP
    extends java.lang.Object
    implements Groupe

Un groupe

### Constructor Summary

Constructors
Constructor and Description
`GroupeNP(Groupe pere)` Nouveau groupe de type PARTITION dupliquant le groupe passé en paramètre (pour servir de racine à une partition de ce groupe de type FREE passé en paramètre).
`GroupeNP(Groupe pere, java.lang.String name, int min, int max)` Nouveau groupe vide de type FREE sans étudiants, sans sous-Groupe
`GroupeNP(java.lang.String name, int min, int max)` Nouveau groupe vide de type ROOT sans étudiants, sans sous-Groupe

### Method Summary

All Methods Instance Methods Concrete Methods
`boolean` `addEtudiant(Etudiant e)` Ajoute un étudiant.
`boolean` `addSousGroupe(Groupe g)` Ajoute un sous-groupe.
`java.util.Set<Etudiant>` `getEtudiants()` Potentiellement "vide" Attention nous renvoyons l'ensemble sans le copier
`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" Attention nous renvoyons l'ensemble sans le copier
`TypeGroupe` `getType()` permet de récupérer la nature du groupe
`boolean` `removeEtudiant(Etudiant e)` Enlève un étudiant.
`boolean` `removeSousGroupe(Groupe g)` Enlève un groupe.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface fr.iutfbleau.projetIHM2022FI2.API.Groupe

`monPrint`

### Constructor Detail

#### GroupeNP

    public GroupeNP(java.lang.String name,
                    int min,
                    int max)

Nouveau groupe vide de type ROOT sans étudiants, sans sous-Groupe

#### GroupeNP

    public GroupeNP(Groupe pere,
                    java.lang.String name,
                    int min,
                    int max)

Nouveau groupe vide de type FREE sans étudiants, sans sous-Groupe

#### GroupeNP

    public GroupeNP(Groupe pere)

Nouveau groupe de type PARTITION dupliquant le groupe passé en paramètre (pour servir de racine à une partition de ce groupe de type FREE passé en paramètre).

### Method Detail

#### addEtudiant

    public boolean addEtudiant(Etudiant e)

Ajoute un étudiant. Se comporte comme add de l'interface Set.

Specified by:
  `addEtudiant` in interface `Groupe`
Returns:
  true iff e est ajouté

#### removeEtudiant

    public boolean removeEtudiant(Etudiant e)

Enlève un étudiant. Se comporte comme remove de l'interface Set.

Specified by:
  `removeEtudiant` in interface `Groupe`
Returns:
  true iff e est enlevé

#### addSousGroupe

    public 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.

Specified by:
  `addSousGroupe` in interface `Groupe`
Returns:
  true iff g est ajouté

#### removeSousGroupe

    public boolean removeSousGroupe(Groupe g)

Enlève un groupe. Se comporte comme remove de l'interface Set.

Specified by:
  `removeSousGroupe` in interface `Groupe`
Returns:
  true iff e est enlevé

#### getId

    public int getId()

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

Specified by:
  `getId` in interface `Groupe`
Returns:
  l'identifiant.

#### getName

    public java.lang.String getName()

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

Specified by:
  `getName` in interface `Groupe`
Returns:
  le nom.

#### getMin

    public int getMin()

permet de récupérer le nombre minimum d'étudiants souhaités dans le groupe.

Specified by:
  `getMin` in interface `Groupe`
Returns:
  le minimum souhaité

#### getMax

    public int getMax()

permet de récupérer le nombre maximum d'étudiants souhaités dans un groupe.

Specified by:
  `getMax` in interface `Groupe`
Returns:
  le maximum souhaité

#### getSize

    public int getSize()

permet de récupérer le nombre d'étudiants dans ce groupe.

Specified by:
  `getSize` in interface `Groupe`
Returns:
  le nombre de places prises (pas forcément limité entre Min et Max, mais c'est le but)

#### getType

    public TypeGroupe getType()

permet de récupérer la nature du groupe

Specified by:
  `getType` in interface `Groupe`
Returns:
  le type du groupe

#### getPointPoint

    public Groupe getPointPoint()

permet de récupérer le groupe père un groupe racine devrait retourner lui-même

Specified by:
  `getPointPoint` in interface `Groupe`
Returns:
  le père

#### getSousGroupes

    public java.util.Set<Groupe> getSousGroupes()

Potentiellement "vide" Attention nous renvoyons l'ensemble sans le copier

Specified by:
  `getSousGroupes` in interface `Groupe`
Returns:
  l'ensemble des sous-groupes.

#### getEtudiants

    public java.util.Set<Etudiant> getEtudiants()

Potentiellement "vide" Attention nous renvoyons l'ensemble sans le copier

Specified by:
  `getEtudiants` in interface `Groupe`
Returns:
  l'ensemble des étudiants.