|
|
@ -573,272 +573,3 @@ package Factory
|
|
|
|
@enduml
|
|
|
|
@enduml
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@startuml
|
|
|
|
|
|
|
|
' Définition des styles
|
|
|
|
|
|
|
|
skinparam classAttributeIconSize 0
|
|
|
|
|
|
|
|
skinparam classBackgroundColor #ffffb9
|
|
|
|
|
|
|
|
skinparam classBorderColor #800000
|
|
|
|
|
|
|
|
skinparam classArrowColor #800000
|
|
|
|
|
|
|
|
skinparam classFontColor #black
|
|
|
|
|
|
|
|
skinparam classFontName Tahoma
|
|
|
|
|
|
|
|
skinparam linetype ortho
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
package Model {
|
|
|
|
|
|
|
|
enum Role {
|
|
|
|
|
|
|
|
UTILISATEUR
|
|
|
|
|
|
|
|
MODERATEUR
|
|
|
|
|
|
|
|
ADMINISTRATEUR
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Utilisateur {
|
|
|
|
|
|
|
|
- id : int
|
|
|
|
|
|
|
|
- email : string
|
|
|
|
|
|
|
|
- motDePasse : string
|
|
|
|
|
|
|
|
- role : Role
|
|
|
|
|
|
|
|
+ getEmail() : string
|
|
|
|
|
|
|
|
+ getMotDePasse() : string
|
|
|
|
|
|
|
|
+ getRole() : Role
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Alumni {
|
|
|
|
|
|
|
|
- utilisateur : Utilisateur
|
|
|
|
|
|
|
|
- profil : Profil
|
|
|
|
|
|
|
|
+ getUtilisateur() : Utilisateur
|
|
|
|
|
|
|
|
+ getProfil() : Profil
|
|
|
|
|
|
|
|
+ getCollections() : InterfaceCollection
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Profil {
|
|
|
|
|
|
|
|
- id : int
|
|
|
|
|
|
|
|
- nom : string
|
|
|
|
|
|
|
|
- prenom : string
|
|
|
|
|
|
|
|
- linkedinURL : string
|
|
|
|
|
|
|
|
- portfolioURL : string
|
|
|
|
|
|
|
|
- githubURL : string
|
|
|
|
|
|
|
|
- photoProfil : string
|
|
|
|
|
|
|
|
+ getId() : int
|
|
|
|
|
|
|
|
+ getPhoto() : string
|
|
|
|
|
|
|
|
+ getCV() : CV
|
|
|
|
|
|
|
|
+ getNom() : string
|
|
|
|
|
|
|
|
+ getPrenom() : string
|
|
|
|
|
|
|
|
+ getLinkedinURL() : string
|
|
|
|
|
|
|
|
+ getPortfolioURL() : string
|
|
|
|
|
|
|
|
+ getGithubURL() : string
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class CV {
|
|
|
|
|
|
|
|
+ getExperience() : List<Experience>
|
|
|
|
|
|
|
|
+ addExperience(e: Experience)
|
|
|
|
|
|
|
|
+ suppExp(e: Experience)
|
|
|
|
|
|
|
|
+ updateExp(e: Experience)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Cursus {
|
|
|
|
|
|
|
|
+ getFormation() : List<Formation>
|
|
|
|
|
|
|
|
+ addFormation(f: Formation)
|
|
|
|
|
|
|
|
+ supFormation(f: Formation)
|
|
|
|
|
|
|
|
+ updateFormation(f: Formation)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Formation {
|
|
|
|
|
|
|
|
+ nom : string
|
|
|
|
|
|
|
|
+ ville : string
|
|
|
|
|
|
|
|
+ formationActuel : bool
|
|
|
|
|
|
|
|
+ dateFin : date
|
|
|
|
|
|
|
|
+ dateDebut : date
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Article {
|
|
|
|
|
|
|
|
+ titre : string
|
|
|
|
|
|
|
|
+ description : string
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Experience {
|
|
|
|
|
|
|
|
- id : int
|
|
|
|
|
|
|
|
- intitule : string
|
|
|
|
|
|
|
|
- dateDebut : Date
|
|
|
|
|
|
|
|
- dateFin : Date
|
|
|
|
|
|
|
|
+ getId() : int
|
|
|
|
|
|
|
|
+ getIntitule() : string
|
|
|
|
|
|
|
|
+ getDateDebut() : Date
|
|
|
|
|
|
|
|
+ getDateFin() : Date
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
enum TypeContrat {
|
|
|
|
|
|
|
|
INDIFFERENT
|
|
|
|
|
|
|
|
CDI
|
|
|
|
|
|
|
|
CDD
|
|
|
|
|
|
|
|
ALTERNANCE
|
|
|
|
|
|
|
|
STAGE
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
enum NiveauEtudes {
|
|
|
|
|
|
|
|
INDIFFERENT
|
|
|
|
|
|
|
|
BAC_PLUS_2
|
|
|
|
|
|
|
|
BAC_PLUS_3
|
|
|
|
|
|
|
|
BAC_PLUS_5
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
enum Exp {
|
|
|
|
|
|
|
|
JUNIOR
|
|
|
|
|
|
|
|
SENIOR
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Offre {
|
|
|
|
|
|
|
|
- id : int
|
|
|
|
|
|
|
|
- nom : string
|
|
|
|
|
|
|
|
- amorce : string
|
|
|
|
|
|
|
|
- description : string
|
|
|
|
|
|
|
|
- profilRecherche : string
|
|
|
|
|
|
|
|
- entreprise : string
|
|
|
|
|
|
|
|
- typeContrat : TypeContrat
|
|
|
|
|
|
|
|
- numero : int
|
|
|
|
|
|
|
|
- siteWeb : string
|
|
|
|
|
|
|
|
- mailContact : string
|
|
|
|
|
|
|
|
- img : string
|
|
|
|
|
|
|
|
- logo : string
|
|
|
|
|
|
|
|
- date : Date
|
|
|
|
|
|
|
|
- offreur : Alumni
|
|
|
|
|
|
|
|
- remote : bool
|
|
|
|
|
|
|
|
' Méthodes de Offre
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
interface InterfaceCollection {
|
|
|
|
|
|
|
|
+ getItems() : List<Object>
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class OffreTheque implements InterfaceCollection {
|
|
|
|
|
|
|
|
+ getOffre(id: int) : Offre
|
|
|
|
|
|
|
|
+ getAllOffres() : List<Offre>
|
|
|
|
|
|
|
|
+ suppOffre(id: int) : bool
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Evenement {
|
|
|
|
|
|
|
|
- id : int
|
|
|
|
|
|
|
|
- nom : string
|
|
|
|
|
|
|
|
- description : string
|
|
|
|
|
|
|
|
- nbParticipantsMax : int
|
|
|
|
|
|
|
|
- organisateur : Alumni
|
|
|
|
|
|
|
|
- date : Date
|
|
|
|
|
|
|
|
- img : string
|
|
|
|
|
|
|
|
' Méthodes de Evenement
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class EvenementTheque implements InterfaceCollection {
|
|
|
|
|
|
|
|
+ getEvenements() : List<Evenement>
|
|
|
|
|
|
|
|
+ addEvenement(e: Evenement)
|
|
|
|
|
|
|
|
+ suppEvenement(e: Evenement)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class MembresSite {
|
|
|
|
|
|
|
|
+ getAlumni() : List<Alumni>
|
|
|
|
|
|
|
|
+ addAlumni(a: Alumni)
|
|
|
|
|
|
|
|
+ suppAlumni(a: Alumni)
|
|
|
|
|
|
|
|
+ updateAlumni(a: Alumni)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class UserManager {
|
|
|
|
|
|
|
|
+ getAlumni() : List<Alumni>
|
|
|
|
|
|
|
|
+ connexion(email: string, motDePasse: string) : Alumni
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class APropos implements InterfaceCollection{
|
|
|
|
|
|
|
|
+ getArticle() : List<Article>
|
|
|
|
|
|
|
|
+ addArticle(a: Article)
|
|
|
|
|
|
|
|
+ updateArticle(a: Article)
|
|
|
|
|
|
|
|
+ supArticle(a: Article)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
' Relations
|
|
|
|
|
|
|
|
Utilisateur *-- Role : - role
|
|
|
|
|
|
|
|
Alumni *-- Utilisateur : - utilisateur
|
|
|
|
|
|
|
|
Alumni *-- Profil : - profil
|
|
|
|
|
|
|
|
Profil *-- CV : - cv
|
|
|
|
|
|
|
|
CV *-- Experience : - experiences
|
|
|
|
|
|
|
|
Cursus *-- Formation : - formations
|
|
|
|
|
|
|
|
Profil --> Cursus : - cursus
|
|
|
|
|
|
|
|
Offre --> Exp : - experience
|
|
|
|
|
|
|
|
Offre --> NiveauEtudes : - niveauEtudes
|
|
|
|
|
|
|
|
Offre --> TypeContrat : - typeContrat
|
|
|
|
|
|
|
|
OffreTheque --> Offre : - offres
|
|
|
|
|
|
|
|
APropos --> Article : - articles
|
|
|
|
|
|
|
|
EvenementTheque --> Evenement : - evenements
|
|
|
|
|
|
|
|
MembresSite --> Alumni : - alumnis
|
|
|
|
|
|
|
|
UserManager --> MembresSite
|
|
|
|
|
|
|
|
Alumni --> InterfaceCollection : - collections
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
package DAL {
|
|
|
|
|
|
|
|
abstract class Gateway {
|
|
|
|
|
|
|
|
+create(obj: Object): int
|
|
|
|
|
|
|
|
+read(id: int): Object
|
|
|
|
|
|
|
|
+update(obj: Object): bool
|
|
|
|
|
|
|
|
+delete(id: int): bool
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AlumniGateway {
|
|
|
|
|
|
|
|
+readByEmail(email: string): Alumni
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ProfilGateway {
|
|
|
|
|
|
|
|
+readByAlumniId(alumniId: int): Profil
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class OffreGateway {
|
|
|
|
|
|
|
|
+readAll(): List<Offre>
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class EvenementGateway {
|
|
|
|
|
|
|
|
+readUpcoming(): List<Evenement>
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ArticleGateway {
|
|
|
|
|
|
|
|
+readRecent(): List<Article>
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ExperienceGateway {
|
|
|
|
|
|
|
|
+readByCVId(cvId: int): List<Experience>
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class FormationGateway {
|
|
|
|
|
|
|
|
+readByCursusId(cursusId: int): List<Formation>
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Connection {
|
|
|
|
|
|
|
|
-dsn: string
|
|
|
|
|
|
|
|
-username: string
|
|
|
|
|
|
|
|
-password: string
|
|
|
|
|
|
|
|
+executeQuery(query: string, *params: string)
|
|
|
|
|
|
|
|
+getResults(): *string
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class PDO
|
|
|
|
|
|
|
|
Connection --|> PDO
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Gateway -up-|> AlumniGateway
|
|
|
|
|
|
|
|
Gateway -up-|> ProfilGateway
|
|
|
|
|
|
|
|
Gateway -down-|> OffreGateway
|
|
|
|
|
|
|
|
Gateway -down-|> EvenementGateway
|
|
|
|
|
|
|
|
Gateway -left-|> ArticleGateway
|
|
|
|
|
|
|
|
Gateway -right-|> ExperienceGateway
|
|
|
|
|
|
|
|
Gateway -right-|> FormationGateway
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Gateway *-- Connection : - conn
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
package Controlleur {
|
|
|
|
|
|
|
|
' Le package Controlleur utilise les packages Gateway et Model
|
|
|
|
|
|
|
|
' Nous n'avons pas spécifié les détails des classes à l'intérieur du package pour un gain de place
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
' Relations entre le package Controlleur et les autres packages
|
|
|
|
|
|
|
|
Controlleur ..> DAL : utilise
|
|
|
|
|
|
|
|
Controlleur ..> Model : utilise
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@enduml
|
|
|
|
|
|
|
|