Programmation orientée projet
Topic outline
-
Programmation Orientée Projet (en C++)
pour étudiants de Microtechnique et ElectricitéLe cours exploite partiellement le MOOC suivant auquel il est demandé deS'INSCRIRE DES LA PREMIERE SEMAINE DU SEMESTREProjet du semestre de printemps 2019-20 : ArchipelagoHoraires, Planning, Dates importantes et Salles : Mise à jour du 12 mai 2020 :
cours et sessions TP en-ligne
oral du projet en-ligne le 29 mai
travail écrit à téléverser le 31 mai en remplacement de l'examen en aout .
- Cours ex-cathedra chaque vendredi de 14h15 à 16h00 en BCH 2201 pendant les 7 premières semaines => en-ligne
- Examen écrit remplacé par un travail écrit à téléverser le 31 mai sur moodle
- TP : de 16h15 à 18h00 pendant les 12 premières semaines en CO 020-021-023, CO4 et CO 016
- Machine Virtuelle (VM): il est plus que recommandé de travailler avec la VM en local sur votre machine + VPN
- Oral final en semaine 13: vendredi 29 mai 2020 de 16h à 19h30 : en-ligne avec zoom ; précisions à venir
Salles : Assistants-DOCTORANTS / Assistants-ETUDIANTS : mode en-ligne avec discord jusqu'à la fin du semestre-
Ce Forum est dédié aux Projets : donnée, rendu, bugs
Vérifiez si la question n'a pas déjà été posée avant d'écrire un nouveau message. Pour cela vous avez deux moyens très efficaces:
- la table des matières des messages montre le sujet des messages qui se doit d'être précis
- l'outil "search" qui vous montre tous les messages contenant le mot recherché
Privilégiez le forum pour partager les questions et n'hésitez pas à répondre si vous connaissez la réponse.
N'envoyez PAS de message individuels sur le forum, par exemple si vous voulez remercier quelqu'un d'avoir répondu à votre question, alors envoyez-lui un email personnel ; vous épargnez ainsi les 223 autres étudiants de ce type de message inutile pour eux.
--------------
En cas de bug: NE PAS MONTRER plus de 10 lignes de code sur ce forum ; décrivez votre problème et selon sa nature je vous demanderai des compléments à envoyer par email à l'enseignant ronan.boulic@epfl.ch
-----------
-
15.05.2020: section 6.1.4 : on accepte les 2 events Press et Release pour cette action.24.03.2020: [rendu2-3] ajustement de l'architecture présentée dans les Fig10 et 11b pour préserver l'indépendance du Modèle visi à vis de GTKmm. La Fig10 correspond au choix de la Fig 11 b1. Le Topic5 présente en détail comment cet ajustement est possible, à la suite de la présentation de GTKmm.05.03.2020: petite correction en 2.2.3: il faut lire "le temps passé... est donné par la division de la distance ... par la vitesse..."
-
il faudra redonner le droit en exécution
-
13.03.2020: section 2.2.3.1: le texte en bleu précise que les erreurs sur les nombres d'éléments sont optionnelles ; nous ne les testerons pas / il n'y a pas de fonction dans error pour cela.
05.03.2020 : Prenez le temps de vérifier que les conventions de présentation sont respectées
Pour mémoire, je cite:
L02Le nombre maximum de caractère par ligne est 87 = pas de wrapping (geany est paramétrable pour matérialiser cette limite)
L03Le nombre maximum de lignes par fonction est 40 = taille écran
Pour prendre en compte la complexité de l'automate de lecture nous accepterons au maximum DEUX fonctions de longeur maximum 80 lignes.
-
Contacter le doctorant Aurélien Bloch / aurelien.bloch@epfl.ch (avec CC à R. Boulic) pour toute communication concernant cette note.
Les fichiers de test sont disponibles ci-dessus.
-
Contacter le doctorant Lars Klein / lars.klein@epfl.ch (avec CC à R. Boulic) pour toute communication concernant cette note.
-
Contacter le doctorant Lars Klein / lars.klein@epfl.ch (avec CC à R. Boulic) pour toute communication concernant cette note.
-
03.04: Fig 11 b1 : la tranformation de coordonnées du Modèle vers la fenêtre graphique peut être faite soit au niveau de gui, soit au niveau du module graphic. Elle ne doit pas être dans le Modèle.
- Cours ex-cathedra chaque vendredi de 14h15 à 16h00 en BCH 2201 pendant les 7 premières semaines => en-ligne
-
Cours : Introduction au second semestre / présentation de la programmation modulaire et de la compilation séparée
TP h1: make et makefile
TP h2: présentation des méthodes de développement de programme avec quelques questions théoriques
-
Suivre le MOOC semaine 1 avant la classe inversée
Cours h1: Lien entre le MOOC semaine1 programmation orientée objet et la programmation modulaire
Cours h2: vue générale du projet : fonctionnement, architecture modulaire, classes et types concrets
TP h1: exercices MOOC semaine 1
TP h2: prise de connaissance de la donnée du projet / finalisation des groupes
-
Suivre le MOOC semaine 2 avant la classe inversée
Cours h1: classe inversée constructeur / destructeur
Cours h2: lecture de fichier, préprocesseur
TP h1: lecture de fichier, préprocesseur et stubs, questions avancées sur la notion de type concret
TP h2: exercices MOOC semaine 2
-
il est fondamental de relire le cours du semestre d'automne sur les entrées-sorties conversationnelles (semaine 13) avant ce cours
-
Suivre le MOOC semaine 3 avant la classe inversée
Cours h1: classe inversée sur static, variable de classe et Surcharge
Cours h2: structuration des données ; exemple d'exécution de l'algorithme de Dijkstra
TP h1: static à l'échelle d'un module, représentation d'un graphe à partir d'une classe noeud contenant une liste de liens vers les noeuds voisins.
TP h2: exercices MOOC semaine 3
-
Relire ces 2 éléments du sem1: fiche sur vector et le cours Topic12 sur la manière dont un vector est mis en oeuvre en mémoire
-
En particulier, plusieurs options de représentation des liens sont discutées
-
(pour rendu2) A utiliser pour suivre la video associée. Le pseudocode fourni dans la donnée du projet est également très utile ; la différence principale est que dans cet exemple et la video on part d'un noeud et qu'on cherche l'ensemble des plus courts chemins vers tous les autres noeuds.
-
Suivre le MOOC semaine 4 avant la classe inversée
Cours h1: bref rappel héritage, présentation invitée d'un exemple d'utilisation de l'héritage (en Robotique)
Cours h2: pointeur de fonction, Architecture Model-View-Control / GTKmm / dessin
TP h1: GTKmm / dessin
TP h2: exercices MOOC semaine 4
Projet : Rendu1 le dimanche 29 mars-
SpeakUp room 18521
-
[07.04.2020] GTKmm ne fait pas de conversion automatique ; c'est à nous d'implémenter les formules de conversions fournies dans le slide 12 ou les transformations translate/scale (nouveau slide 13). Le code correspondant est disponible à la suite du corrigé de la série6 (Topic6).
Ajout d'un slide précisant ce qu'il faut faire pour éviter une distorsion du dessin (nouveau slide 16)
-
nouvelle video avec discussion des 2 méthodes de conversion 1) directement sur les coordonnées, 2) avec translate et scale
-
Section les plus utiles:
3. Les bases des fenêtres
5. Les boutons
7. Les widgets non-spéciaux, en particulier le 7.1 qui est le label
17. Le dessin
16.1 Pour ouvrir des fichiers avec une interface
-
-
Suivre le MOOC semaine 5 avant la classe inversée
Cours h1: classe inversée polymorphisme
Cours h2: Programmation par événement / GTKmm
TP h1: GTKmm / GUI
TP h2: exercices MOOC semaine 5
-
one more exercise on coordinate transformation (in english)
-
Dans ce code j'ai écrit la fonction orthographic_projection qui utilise les informations du cadrage dans l'espace du Modèle et la taille de la fenêtre pour permettre ensuite d'utiliser les commandes de dessin directement dans l'espace du Modèle. Vous pouvez vous en servir pour le projet comme alternative à la conversion des coordonnées.
Le sllide 13 du cours sur le dessin avec GTKmm explique le rôle de chaque transformation:
https://moodlearchive.epfl.ch/2019-2020/mod/resource/view.php?id=1060657
-
-
jour férié
-
Suivre le MOOC semaine 6 avant la classe inversée
Cours h1: classe inversée héritage multiple
Cours h2: GTK keyboard & mouse event
TP h1: GTKmm / programmation par événement
TP h2: exercices MOOC semaine 6
-
mise à jour avec plus d'exemples ; vous disposez du code source, après la video, pour obtenir la réponse aux 3 questions SpeakUp.
-
Cette année l'outil de Timer n'est pas nécessaire pour le projet (exercice optionnel).
-
Avec event souris et clavier dans GTKmyevents
-
-
TP h1 et h2: temps dédié au projet avec encadrement en salles de TP
Projet : Rendu2 le dimanche 3 mai
-
TP h1 et h2: temps dédié au projet avec encadrement en salles de TP
-
Début du travail écrit à téléverser le 31 mai en remplacement de l'examen écrit en aout
TP h1 et h2: temps dédié au projet avec encadrement en salles de TP
-
Vous pouvez mettre à jour le fichier pdf de votre rendu jusqu'à la date limite du 31 mai 23h59.
Le rendu est le second document contenant les questions, complété avec un logiciel de traitement de texte et sauvegardé en format pdf.
-
Projet : rendu final dimanche 24 mai 23h59
-
Oral final vendredi 29 mai 16h15-19h30