ﺍاﻟﺟـﻣـــﻬﮭـﻭوﺭرﻳﯾﺔ ﺍاﻟﺗــــﻭوﻧـﺳـﻳﯾـﺔ
ﻭوﺯزﺍاﺭرﺓة ﺍاﻟـﺗﻌﻠﻳﯾﻡم ﺍاﻟﻌﺎﻟﻲ
ﺟﺎﻣــــﻌــﺔ ﺗــﻭوﻧــﺱس ﺍاﻟﻣــﻧـﺎﺭر
ﺍاﻟﻣﻌـﻬﮭـﺩد ﺍاﻟـﻌﺎﻟـﻲ ﻟﻺﻋـﻼﻣـﻳﯾـﺔ
Année Universitaire : 2010/2011
EXAMEN PRINCIPAL
Niveau d’étude : 2ème année ARS Documents non autorisés
Matière : Ateliers de Génie logiciel
Question de cours : (5 pts)
1. Donner le (les) diagramme(s) faisant partie de la vue logique (1pt)
a- diagramme de déploiement
b- diagramme de classes
c- diagramme de séquence
2- A la conception d’une IHM, on doit s’intéresser au modèle d’interaction,
qu’est-ce que c’est ? (1pt)
a- Le contenu et l’esthétique de l’interface
b- La facilité d’utilisation de l’interface
c- La connaissance des utilisateurs
d- La connaissance de la tâche
3- Qu’est-ce que le Reuse ? (1pt)
a- L’étude d’un objet pour déterminer son fonctionnement interne
b- La réutilisation des objets ou éléments déjà existants en utilisant
des bibliothèques de composants
c- L’analyse sémantique du code
4- Les outils de l’AGL doivent connaitre la structure logique et
l’organisation des fichiers qu’ils utilisent. A quel niveau de l’intégration se
trouve-t-on ? (1pt)
a- Intégration des données
b- Intégration des activités
c- Intégration de l’interface
1
5- Un IDE est un AGL qui intervient principalement dans la phase : (1pt)
a- Conception
b- Développement
c- Spécification
Exercice 1 (2 pts)
Donner le diagramme de classes correspondant à cette fenêtre (concentrez-vous
sur les composantes de cette fenêtre).
Barême :
• Classes : (1)
• Composition (1) ou Agrégation (0.5)
• Héritage (optionnel) (+0.5)
2
Exercice 2 (7 pts)
1/ Description Textuelle (2)
Résumé
Titre
:
Gestion
du
festival
«
Doc
A
Tunis
»
But
:
Création
d’une
application
pour
la
classification
des
documentaires
du
festival
et
la
gestion
des
notes,
des
rôles
et
des
utilisateurs.
Acteurs
:
Personne,
Responsable
des
inspections,
Responsable
d e
p roduction,
Jury
et
Président
du
jury
Responsable
:
Moi-‐même
Date
de
création
:
01/05/2011
Préconditions
1.
Chaque
acteur
manipulant
le
système
doit
s’authentifier
2.
Les
rôles
des
d ifférents
acteurs
sont
définis
par
le
créateur
du
système
au
préalable
3.
Cette
application
doit
être
hébergée
sur
internet
4.
Un
jury
doit
choisir
l’ensemble
des
films
qui
pourront
participer
au
festival
Enchaînements
Evènement
déclencheur
:
les
films
qui
vont
participer
au
festival
sont
sélectionnés
Séquences
nominales
:
1.
Enregistrement
des
films
:
Le
responsable
des
inspections
doit
enregistrer
les
documentaires
dans
le
système
et
les
classifier.
2.
Publication
du
planning
de
projection
:
Le
responsable
de
production
doit
établir
le
planning
de
projection
des
différents
documentaires
sur
la
d urée
du
festival
et
les
publier
sur
le
site.
3.
Saisie
des
notes
:
les
différents
membres
du
jury,
dont
le
président
du
jury,
visualisent
les
différents
documentaires
et
leu
attribuent
des
notes
d’évaluation.
Une
fois
toutes
les
notes
attribuées,
le
président
du
jury
les
réunit
et
les
saisit
dans
le
bulletin
de
n otes
final.
Séquences
exceptionnelles
:
1.
A
l’établissement
du
planning
de
projection,
le
système
doit
informer
le
responsable
de
production
en
cas
de
chevauchement
d’horaire
2.
Le
président
du
jury
ne
pourra
saisir
les
notes
q ue
si
tous
les
membres
du
jury
ont
terminé
leur
évaluation.
Postconditions
Le
système
classe
les
d ocumentaires
selon
les
notes
qui
leur
sont
attibuées
et
affiche
le
documentaire
gagnant.
Besoins
d’IHM
Ce
site
web
soit
être
facile
à
utiliser
pour
la
plupart
des
personnes,
et
doit
fournir
une
interface
personnalisée
pour
chacun
des
acteurs
prédéfinis
Contraintes
non
fonctionnelles
1.
L’accès
aux
différentes
parties
du
site
doit
être
sécurisé
par
login/mdp
2.
Le
site
doit
s’adapter
à
tous
les
navigateurs
web
3
2/ Diagramme du cas d’utilisation. (3)
3/ Diagramme de séquence du cas d’utilisation “Saisir notes” (2)
4
Exercice 3 (6 pts)
Générer le code C++ correspondant à ce diagramme de classes.
Barême :
• Déclaration des classes, méthodes et attributs simples : (1)
• Déclaration des attributs hérités des autres classes (0.25 chacun -> 2)
• Initialisation des attributs dans les constructeurs : (0.5 chacun -> 2.5)
• Delete dans le destructeur de la classe Employé : (0.5)
5
class
Employé{
class
Fonction{
private
:
private
:
string
nom_
;
string
nom_
;
string
prenom_
;
int
RTT_
;
date
dateNaissance_
;
date
dateEmbauche_
;
public
:
real
quotite_
;
Fonction(string,
int)
;
Fonction
*
fonction_
;
~Fonction()
;
Service
*
service_
;
}
;
List<Salaire>
*
salaires_
;
Fonction
::Fonction(string
nom,
int
RTT)
:
List<Congé>
*
congés_
;
nom_(nom),
RTT_(RTT){}
public
:
Fonction
::~Fonction(){}
Employé(string,string,date,date,real,
Service*,Fonction*)
;
class
Congé{
~Employé()
;
private
:
int
Age()
;
int
congésRestants()
;
date
dateDebut_
;
int
congésTotaux()
;
date
dateFin_
;
int
congésPris()
;
public
:
void
prendreCongés(date,date)
;
Congé(date,
date)
;
void
changerSalaire(real,real,real)
;
~Congé()
;
}
;
int
nbJours()
;
Employé
::Employé(string
nom,
string
prenom,
date
dateNaiss,
date
}
;
dateEmb,
real
quotite,
Service*
service,
Congé
::Congé(date
deb,
date
fin)
:
Fonction*
fonction)
:
dateDebut_(deb),
dateFin_(fin){}
nom_(nom),
Congé
::~Congé(){}
prenom_(prenom),
dateNaissance_(dateNaiss),
class
Salaire{
dateEmbauche_(dateEmb),
private
:
quotite_(quotite),
real
chargesPatronales_
;
service_(service),
real
chargesSalariales_
;
fonction_(fonction){
salaires_
=
new
List<Salaire>()
;
real
brut_
;
congés_
=
new
List<Congé>()
;
date
dateDebut_
;
}
date
dateFin_
;
Employé
::~Employé(){
public
:
delete
salaires_
;
Salaire(real,real,real,date,date)
;
}
~Salaire()
;
class
Service{
real
salaireChargé()
;
private
:
real
SalaireNet()
;
string
nom_
;
boolean
SalaireEnCours
?()
;
int
RTT_
;
}
;
public
:
Salaire
::Salaire((real
charPat,real
charSal,
Service(string,
int)
;
real
brut,date
deb,date
fin)
:
~Service()
;
chargesPatronales_(charPat),
}
;
chargesSalariales_(charSal),
Service
::Service(string
nom,
int
brut_(brut),
RTT)
:
nom_(nom),
RTT_(RTT){}
dateDebut(deb),dateFin(fin){}
Service
::~Service(){}
Salaire
::~Salaire(){}
6