15
Diagramme de Classes
Baptiste DUDONNE edited this page 1 year ago
Diagramme de Classes
@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
}
package Fabrique
{
interface Factory
{
+ create() : InterfaceCollection
}
class FactoryOffreTheque
{
+ create() : OffreTheque
}
class FactoryEvenementTheque
{
+ create() : EvenementTheque
}
class FactoryAPropos
{
+ create() : APropos
}
FactoryOffreTheque ..|> Factory
FactoryEvenementTheque ..|> Factory
FactoryAPropos ..|> Factory
}
DAL ..> Fabrique : utilise
Model ..> Fabrique : utilise
@enduml