Programmation orientée projet
Topic outline
-
Programmation Orientée Projet (en C++)
pour étudiants de Microtechnique et ElectricitéLe cours utilise et complète ce MOOC :Projet du semestre de printemps 2023-24 : MicroRécifOrganisation de l'évaluation sem2 2024:
Projet de programmation (3 rendus + 1 mini-oral individuel) = 65%
Examen écrit 3 mai de 10h à 12h = 35%
Horaires, Planning, Dates importantes :
- COURS ex-cathedra en présentiel au CO1 de 14h à 16h, seulement sur 7+1 semaines ( 7 x 2h = 14 x 1h) ; consulter le planning détaillé ci-dessus. Le cours sera aussi donné en streaming sur ce webinar (Webinar ID:632 5638 1328) avec un.e TA en-ligne pour répondre aux questions. La video sera mise à disposition après le cours sur moodle.
Composante de contrôle continu (65% de la note finale):- 3 rendus de projet aux dates suivantes : 28 mars, 28 avril, 20 mai
- Les deux premiers rendus peuvent donner lieu à un oral pour cas particuliers (détection de plagiat, contrôle aléatoire)
- Oral final projet obligatoire non noté en semaine 13 : vendredi 24 mai 2023 de 16h à 19h30
- Oral final noté pour cas particuliers (détection de plagiat, oral projet insuffisant)
-
S'inscrire pour pouvoir suivre ce MOOC dès la PREMIERE semaine du semestre ; l'heure hebdomadaire en auditoire sera effectuée en classe inversée, ce qui requiert d'avoir suivi la leçon et les quizzs du MOOC avant l'heure de la classe inversée.
-
V1.01: le caractère # d'un commentaire est toujours en début de ligne
-
18 mars: le test t06.txt et la sortie out06.txt ont été mis à jour pour être cohérents avec message.cc
-
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
-
Avec questions Quizz:
Pour la première question, la bonne réponse est B) car au moment où le compilateur compile (séparément) prog.cc il n'a pas accès au code source de l'implémentation du module calcul et donc il ne dispose pas de la définition complète de la fonction div. Par contre il a inclus l'interface et il dispose au moins de la déclaration de la fonction div() ce qui permet de vérifier que la syntaxe de l'appel est correcte. La compilation produit simplement une instruction d'appel de fonction qui sera complétée à l'étape d'édition de liens quand on aura (enfin) aussi le code objet calcul.o.
Pour la seconde question: c'est la réponse A) car le fichier d'interface est inclus dans prog.cc ; s'il change prog.cc doit être recompilé.
-
Suivre le MOOC semaine_1 / Introduction 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
-
La réponse est "Non" car, même si techniquement il y a une encapsulation stricte avec les attributs en private, cette protection est contournée en offrant un manipulateur qui affecte directement la valeur des paramètres aux attributs sans aucun controle. Il y a donc là aussi une perte de contrôle du module Datum sur la validité des instances du type Datum.
-
L'exercice 2 est optionnel ; utilisez ce temps pour la série théorique avancée sur le développement de projet.
-
-
Suivre le MOOC semaine_2 / Constructeur_Destructeur 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
-
Quizz1: La bonne réponse est E car un constructeur ayant été défini, le compilateur ne met pas en place le constructeur par défaut par défaut pour la variable r dans main(). Il produit une erreur de compilation car aucun constructeur n'existe pour cette déclaration de r.
Quizz2: réponse B car, grâce aux valeurs par défaut des paramètres, le constructeur joue aussi le rôle du constructeur par défaut. de plus les valeurs par défauts des paramètres sont prioritaires par rapport aux valeurs par défaut des attributs.
-
c'était normal que l'exécution s'arrête sans afficher la valeur de la surface car le manipulateur de hauteur contenait un exit(). Si on l'enlève l'exécution se poursuit et l'affichage de 2 apparait dans le terminal.
-
il y a suffisamment de contenu dans les exercices 5 et 8 ; Les exercices 6 et 7 sont optionnels
-
Suivre le MOOC semaine_3 / Surcharge & notion de "type paramétré"
Cours h1: classe inversée sur static, variable de classe et Surcharge
Cours h2: Forces et faiblesses de vector ; Forces et faiblesses d'un type paramétré
TP h1: static à l'échelle d'un module ; type paramétré
TP h2: exercices MOOC semaine 3 (sauf exercice 11)
-
Suivre le MOOC semaine_4 / Héritage avant la classe inversée
Cours h1: héritage (première partie), pointeur de fonction
Cours h2: petit exemple héritage + Architecture Model-View-Control / GTKmm / dessin
TP h1: GTKmm / dessin
TP h2: exercices MOOC semaine 4
-
il reste à gérer les 2 cas où |delta_a| > Pi pour éviter de tourner dans le sens de l'arc le plus long
-
Projet : Rendu1 le jeudi 28 mars 23h59
-
Suivre le MOOC semaine_5 / Polymorphisme 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
-
Suivre le MOOC semaine_6 / Héritage_multiple avant la classe inversée
Cours h1: classe inversée héritage multiple
Cours h2: GTK idle vs timer
TP h1: GTKmm / programmation par événement
TP h2: exercices MOOC semaine 6
-
TP h1 et h2: temps dédié au projet avec encadrement en salles de TPProjet : Rendu2
-
EXAMEN écrit de 10h15 à 11h45
TP h1 et h2: temps dédié au projet avec encadrement en salles de TP
examen en contrôle continu le 3 mai 10h15-11h45
Tous les documents "papier" sont autorisés: livre, notes personnelles, tout document imprimé (cours, séries, projet, etc...)LES APPAREILS ELECTRONIQUES SONT INTERDITS, EN PARTICULIER LES CALCULATRICESVotre salle d'examen est indiquée dans le fichier pdf ci-dessous ; voici le résumé:
xxx -
TP h1 et h2: temps dédié au projet avec encadrement en salles de TP
-
TP h1 et h2: temps dédié au projet avec encadrement en salles de TP
Projet : rendu final lundi 20 mai (férié)
-
Oral final hybride présentiel(CO 020+021+023)/ Online(Zoom) vendredi 24 mai 2024, à partir de 16h00 et jusqu'à 19h30
Accès présentiel : attendre son tour en CO 020 ; on viendra vous appeler pour passer l'oral en CO 021-23
-
Oral individuel approfondi au cas par cas