Commit 367d6baa authored by Gaetan Carabetta's avatar Gaetan Carabetta

add uml

parent 32d05388
@startuml
hide circle
hide empty members
skinparam linetype ortho
note "On suppose qu'un traitement\n n'est prescrit que par un\n seul veterinaire." as N1
note "On suppose qu'un médicament\n correspond à une molécule" as N2
note "Tous les héritages sont exclusifs" as NGeneral1
note "Tous les attributs sont NOT NULL par défaut" as NGeneral2
class Personne <<Abstract>> {
nom : string
prenom : string
date de naissance : date
adresse : string
numero de telephone : int
}
note left of Personne
Le numéro de téléphone est
composé de 10 chiffres.
(nom, prenom, DDN) {key}
endnote
class Client
class Personnel <<Abstract>> {
specialité : string
}
note left of Personnel
La valeur de spécialité doit
correspondre à une des valeurs
de nomClasse de la ClasseEspece
endnote
class Veterinaire
class Assistant
class Classe_espece {
nomClasse : string {key}
}
class Espece {
nomEspece : string {key}
}
class Animal {
nom : string
poids : float
taille : float
naissance : date
}
note left of Animal
date de naissance peut etre NULL
poids>0
taille>0
endnote
class Traitement
class Posologie {
debut : date
duree : int
nbJournalier : int
}
note right of Posologie
duree > 0
nbJournalier > 0
endnote
class Medicament {
nomMolec : string {key}
description : string
espece_autoriser() : bool
}
note bottom of Medicament
Si l'animal peut prendre
le médicament, espece_autoriser()
renvoit vrai. Faux sinon.
endnote
Medicament .. N2
Personne <|-- Personnel
Personne <|-- Client
Personnel <|-- Veterinaire
Personnel <|-- Assistant
' Association
Traitement "0..*" <-- "1" Animal : prescrit à >
' Association
Veterinaire "1" -- "0..*" Traitement : prescrit >
Veterinaire .. N1
N1 .. Traitement
' Association
Animal "1..*" <-- "1" Client : possede <
' Association et groupe d'association
Traitement "0..*" <-- "1..*" Medicament : liste >
(Traitement, Medicament) .. Posologie
' Association modéliser dans un attribut de Personnel
' Personnel "1..*" -- "1" Classe_espece : spécialisé >
' Composition class_espece et espece
Classe_espece -- "1..*" Espece : appartient <
Espece "1..*" <-- "1..*" Medicament : peut prendre >
' Association
Espece -- "1..*" Animal : appartient <
@enduml
#### Notes
Tous les attributs sont NOT NULL par défaut
Tous les héritages sont exclusifs
#### Relationnel
Client(#idClient:int, nom: string, prenom: string, ddn: date, adresse: string, numero: int) avec {(nom, prenom, ddn) KEY, 0100000000 < numero < 0799999999 }
Assistant(#idAssistant: int, nom: string, prenom: string, ddn: date, adresse: string, numero: int, specialite=>ClasseEspece(nomClasse)) avec {(nom, prenom, ddn) KEY, 0100000000 < numero < 0799999999 }
Veterinaire(#idVeterinaire: int, nom: string, prenom: string, ddn: date, adresse: string, numero: int, specialite=>ClasseEspece(nomClasse)) avec {(nom, prenom, ddn) KEY, 0100000000 < numero < 0799999999 }
ClasseEspece(#nomClasse: string)
Espece(#nomEspece: string, nomClasse=>ClasseEspece)
Animal(#idAnimal: int, nom: string, poids: float, taille: float, naissance: date,
idClient=>Client(idClient), especeNom=>Espece(nom))
avec {poids > 0, taille > 0; naissace = (NULL OR date)}
Traitement(#idTraitement: int, idAnimal=>Animal(idAnimal),
idVeterinaire=>Veterinaire(idVeterinaire))
Medicament(#nomMolec: string, description: string)
avec { la methode espece_autoriser() qui renvois
vrai si l'animal peut prendre le médicament }
EspeceMedicament(#nomEspece=>Espece, #nomMolec=>Medicament)
Posologie(#idAnimal=>Animal(idAnimal), #nomMolec=>Medicament(nomMolec),
#debut: date, duree: int, nbJourna: int)
avec {debut > 0, duree > 0, nbJourna > 0; debut {local key}}
#### Contraintes
<nomClasse NOT NULL> AND Projection(ClasseEspece, nomClasse) = Projection(Espece, nomClasse)
Projection(Veterinaire, nom,prenom,DDN) = Projection(Traitement, nomVeto, prenomVeto,DDNVeto)
Dans la classe Client: <(nom,prenom,DDN) NOT NULL> AND Projection(Client, nom,prenom,DDN)=Projection(Animal,clientNom,clientPrenom,ClientDDN)
<nomEspece NOT NULL> AND Projection(Espece,nomEspece)=Projection(Animal,nomEspece)
Projection(Médicament,nomMolec)=Projection(EspeceMédicament,nomMolec) AND Projection(Espece,nomEspece)=Projection(EspeceMédicament, nomEspece)
Projection(Médicament,nomMolec)=Projection(Posologie,nomMolec) AND Projection(Traitement,nomAnimal,poids,taille)=Projection(Posologie,nomAnimal,poids,taille)
#### Vues
vPersonnel(
Union(
Projection(Assistant, nom, prenom, ddn, adresse, numero, specialite),
Projection(Veterinaire, nom, prenom, ddn, adresse, numero, specialite)
)
)
vPersonne(
Union(
Union(
Projection(Veterinaire, nom, prenom, ddn, adresse, numero, specialite)
Projection(Assistant, nom, prenom, ddn, adresse, numero)
),
Projection(Client, nom, prenom, ddn, adresse, numero),
)
)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment