# diagramme de classe du module "groupe"

@startuml

title Diagramme de classe du module "groupe"

package "PersonBundle" {
   class Person
   class Center
}

package "GroupBundle" {
  Person "1" <--  Membership
  Membership "0..*" <--> "Group"
  Type "1" --> "1..*" Role
  Membership -right-> "1" Role
  Group -right-> "1" Type
  Group -left-> "1" Center
}

class Membership {
 - role
 - person
 - group
}
note left: <b>Membership</b> relie les groupes aux\npersonnes. Chaque membership a un\n <b>role</b>, le rôle est à choisir\nparmi ceux possibles pour le <b>type</b> de <b>groupe</b>

class Group {
 - type
 - memberships
 - name
 - center
}
note left: Un groupe a un type qui est défini à sa création.

class Type {
 - roles
}
note right: Les types de groupe qu'il est possible de créer \nsont définis dans l'interface d'administration.\nExemple de type: "famille", "groupe de parole", "stage", ...

class Role {
 - name
}
note right: Pour chaque <b>Type</b> on définit des rôles\npossibles pour ce type de groupe. Par exemple, pour le\ntype "famille" on peut avoir les rôles <i>parents</i> et <i>enfants</i>.




@enduml
