Vous êtes sur la page 1sur 2

Université Abdelmalek Essaâdi Contrôle Final Département Informatique

Faculté des Sciences Tétouan Interface Homme Machine (IHM) M2I & MQL - S9

Questions :
1 - Citer la différence entre les frameworks de développement d’Interface Homme Machine (IHM) : Tkinter, PyQt, wxPython et
PyGTK ?
2 - Quel est le rôle des formes Lambda ?
3 - L’IHM est un domaine pluridisciplinaire, citer les disciplines concernées ?
4 - Préciser le rôle l’App wxPython-demo ?
5 - Donner des définitions pour : XML, DTD et XSL ?
6 - Quelle est la différence entre les plateformes : wxFormBuilder et QtDesigner ?
7- Éclaircir le rôle de l’instruction : curseur.execute("PRAGMA foreign_keys = ON") ?
8- Citer quelques exemples de frameworks qui permettent de convertir un script Python en un programme exécutable ?
9- Expliquer les points de différence entre Django, Flask et Pyramid ?
10- Soit x un objet et f un fichier ouvert en écriture, à quoi sert l’instruction : pickle.dump(x, f) ?
11- En Django, quel est le rôle de l’intégration d’un Template dans l’architecture MVT ?
12- Citer quelques applications des SCADA ?
13- Expliquer la différence entre l’Anti-pattern et le Design Pattern ? avec un exemple illustratif ?
14 - À quoi sert la bibliothèque SOYA ?
15 - Préciser le rôle du composant graphique MDIFrame ?
16- Parmi les fonctionnalités de Django est l’ORM, quel est son rôle ?
17- À quoi sert le module Pickle ?
18- Quelle est la différence entre l’approche technocentrée et l’approche anthropocentrée ?
19- Expliquer le point de différence entre l’instruction connexion.in_transaction) et l’instruction connexion.commit() ?
20- L’ergonomie des IHM se base sur 30 concepts-clés :
a. Expliquer le concept de la navigation « mystère » ?
b. Citer la différence entre la zone fovéale et les zones sensibles ?
c. Brièvement, citer les lois de la Gestalt ?
Exercice 1 : IHM sous le framework PyQT
Sous PyQT, une interface graphique est développée afin de gérer les étudiants des
deux Masters M2I et MQL. L’interface est composée de :
• Trois QLineEdit : zones de saisies (TXTID, TXTNom et TXTPrenom) pour
entrer les informations des étudiants, et ses trois QLabels ;
• Trois QPushButton : des boutons d’action (BTLoad, BTInsert et BTDelet) ;
• Un QTableWidget : (table) pour charger les enregistrements à partir d’une
base de données SQLite3 crée pour cette objectif "dataMst" qui contient la
table "Etudiant : id, nom, prenom" avec ces enregistrements.
Supposant que l’interface est créée et une connexion à la base de données "dataMst" est établie, donner le code nécessaire de :
1. La méthode def chargeretudiant(self, event): déclenchée comme évènement (event) du bouton "Charger les données" de
la présente interface (self) en cas de clique, afin d’afficher la liste des étudiants inscrits à partir de la base de données
"dataMst" ?
2. La méthode def insereretudiant(self, event): déclenchée comme évènement (event) du bouton "Insérer" de la présente
interface (self) en cas de clique, afin d’ajouter l’étudiant (ID, Nom et Prenom) dans la base de données "dataMst" ?
3. La méthode def supetudiant(self, event): déclenchée comme évènement du bouton "Supprimer" en cas de clique, afin de
supprimer un étudiant à partir de la base de données "dataMst". L’étudiant à supprimer est sélectionné dans le composant
graphique table (QTableWidget) ?

Exercice 2 : Back-End sous le framework Django


Django est un framework de développement Web en Python. Pour une gestion de back-end d’un projet web, on propose d’utiliser
le Django. Pour cela, on utilise les vues afin de répondre à la visite d'un utilisateur sur le site de ce projet en renvoyant une page
que l’utilisateur peut voir.
Exemple : Un modèle d'URL est présenté dans le fichier "url.py". Un module vue crée "view.py", puis relié avec le modèle URL.

2022-2023 1/ 2
Université Abdelmalek Essaâdi Contrôle Final Département Informatique
Faculté des Sciences Tétouan Interface Homme Machine (IHM) M2I & MQL - S9

1. Expliquer le processus de fonctionnement de Django qui relie le view.py et url.py ?


2. Avec une petite modification sur ce projet web, on a eu la possibilité gérer les étudiants inscrits dans les deux Masters M2I
& MQL (stockés dans la table etudiant de la base de données SQLite3) en modifiant la vue "view.py" :

Cette vue a trop de responsabilités, ça devient ingérable. Il faut déplacer la responsabilité de la présentation hors de la vue
et en la plaçant à sa place légitime : un gabarit "hello.html".
A. Donner le code contenu de ce gabarit "hello.html" afin d’afficher la liste de tous les étudiants sélectionnés
comme des objets etudiant de la base de données ?
B. Écrire la version finale de votre vue "view.py" afin de récupérer un objet (etudiants) qui représente la liste
de toutes les données qui peuvent être trouvés dans la base de données des étudiants et faire passer cet objet
contextuel au gabarit contenant la liste d'étudiants.

Exercice 3 : Back-End sous le framework Flask


Flask est micro-framework python pour réaliser des applications web évolutives. Pour une gestion de back-end d’un projet web,
on propose d’utiliser le Flask. Commence à développer notre application, on va créer un fichier python à la racine de ce projet
(app.py).

>>>
1. L’admin du projet web désire ajouter une deuxième route d'URL pour une nouvelle page "A propos" pour décrire une
brève description sur le projet en cours de développement. Décrire les modifications nécessaires à réaliser sur le fichier
"app.py" ?
2. Le Jinja2 comme moteur de templates, cela permettre d'avoir des fichiers lisibles (retour des pages en HTML), qui ne
contiennent pas du Python. L’intégration d’un Template (template.py) associé avec les méthodes HTTP dans ce projet web,
permettent d’ajouter la possibilité de gérer l’authentification des utilisateurs (page HTML : login.html).

>

A. Expliquer le processus de fonctionnement de Flask qui relie le template.py et login.html ?


B. Donner le code contenu de ce gabarit "login.html" afin d’afficher la page d’authentification et redirigé le nom
comme paramètre du Template ?
C. Écrire la version finale de votre Template "template.py" afin de récupérer le paramètre de la page "login.html" et le
rediriger vers la route paramétrée "success".

2022-2023 1/ 2

Vous aimerez peut-être aussi