====== M3105 - Conception et Programmation Objet Avancées ====== ===== Objectifs du module ===== * Produire une conception détaillée en appliquant des patrons de conception, la mettre en oeuvre en utilisant des bonnes pratiques de programmation orientée objet. ==== Compétences visées ==== * FA1-A : Analyse d’une solution informatique * FA1-B : Conception technique d’une solution informatique * FA1-C : Réalisation d’une solution informatique ===== Contenus (Extrait du PPN 2013) ===== * C1 : //Approfondissement de la modélisation objet pour l’analyse, la conception et la programmation// * Rappels du cours de S2 * Retours sur les diagrammes de séquence en conception, à la lumière des patterns MVC et DAO * Retours sur les diagrammes de classes * Diagrammes de packages * Interfaces et Classes abstraites * Point de vue : Intégration * C2 : //Compréhension et mise en oeuvre de patrons de conception (design pattern), éléments d'architecture logicielle// * Quelques patterns d'architectures: DAO, CRUD * Quelques patterns de conception. D'autres "design patterns" seront étudiés dans un module dédié en S4. * C3 : //Notions avancées de programmation orientée objet (par exemple : responsabilité unique, principe ouvert-fermé, notions de dépendance et de couplage)// * GRASP, SOLID, Programmation Pragmatique, ... * C4 : //Sensibilisation aux tests d'intégration// * Nous étudierons les Mocks et autres approches de l'intégration * Le projet en méthodologie forcera une étape importante d'intégration. ===== Modalités de mise en oeuvre ===== * Utilisation d’un environnement de développement intégré (EDI / IDE) comprenant la modélisation, d'un gestionnaire de versions et d'un environnement de test unitaire * Nous nous basons sur l'environnement ECLIPSE intégrant JUnit. * Les notions doivent être abordées au travers de réalisations concrètes ===== Intervenants ===== ^ Nom ^ Affiliation ^ Adresse ^ | __[[blay@unice.fr|Mireille Blay-Fornarino]]__(MBF) | IUT /UNS/ I3S | Bureau XXX Ou Bâtiment Templiers :Bureau 449 ([[http://www.polytech.unice.fr/~blay|www]]) | | [[Rosa.LECAT@unice.fr|Rosa Lecat]] (RL) | IUT| Bureau XXX | | [[cecchine@i3s.unice.fr|Cyril Cecchinel]] (CC) |IUT /UNS/ I3S | Bureau XXX | | [[Simon Urli |Simon Urli]] (SU) |Start-up The 6th Screen | Bureau XXX | ===== Planification ===== Ce module sera mené en concordance avec le module [[2015_2016:s3:methodo:start|M3301]]. * //13h de cours sur 13 semaines// * //28h de TD sur 14 semaines// - **(S3T : 1/9, S3A : 4/9)** * Cours : * {{:2015_2016:s3:concprogobjet:deanalysealaconception2015.pdf|Rappels : De l'analyse à la conception orientées objets}} //(MBF) (SU)// * TD : * (1h) [[2015_2016:s3:concprogobjet:td:tdPictionary|TD : Pictionnary UML]] //(MBF,RL) (CC)// * (1h) [[2015_2016:s3:concprogobjet:td:td1|TD : Rappels de COO et environnement de développement sous Eclipse]] //(C1)// // (CC)// - **(S3T : 7/9, S3A : 15/9)** * Cours : * {{:2015_2016:s3:concprogobjet:graspcours2015.pdf|Bases de GRASP : COO et responsabilités}}//(C2,C3)// //(MBF) (SU)// * TD : * [[2015_2016:s3:concprogobjet:td:td1|TD : Rappels de COO et environnement de développement sous Eclipse]] //(C1)// //(MBF,RL) (CC)// - **(S3T : 14/9, S3A : 29/9)** * Cours : * {{:2015_2016:s3:concprogobjet:graspcours2015.pdf|Suites de Bases de GRASP : COO et responsabilités}}//(C2,C3)// //(MBF) (SU)// * TD : * [[2015_2016:s3:concprogobjet:td:td2|TD : Qui est responsable ?]] //(MBF,RL) (CC)// - **(S3T : 21/9, S3A : 13/10)** * Cours : * {{:2015_2016:s3:concprogobjet:codesolid2015.pdf|principes SOLID}} //(C2 C3)// * TD : * [[2015_2016:s3:concprogobjet:td:td2|TD : Qui est responsable ?]] - **(S3T : 28/9, S3A : 27/10)** * Cours : * Pas de cours * TD : * [[2015_2016:s3:concprogobjet:td:td2|TD : Qui est responsable ?]] //(MBF,RL)// - **(S3T : 5/10, S3A : 10/11)** * Cours : * Suite du cours sur "The pragmatic Programmer" et Principes SOLID //(C2 C3)// * TD : * [[2015_2016:s3:concprogobjet:td:tdGIT|TD : Gestion de versions, GIT]] //(C1)// - **(S3T : 12/10, S3A : 24/11)** * Cours : * Présentation de la complexité des programmes par Timour UNCUOGLU * {{:2015_2016:s3:concprogobjet:designpatterns-2015-partie1.pdf|Introduction aux DP}} * {{:2015_2016:s3:concprogobjet:designpatterns-2015-partie1.pdf|Design Pattern Observer}} * TD : * [[2015_2016:s3:concprogobjet:td:td3|Application des principes SOLID]] - **(S3T : 19/10, S3A : 8/12)** * Cours : * {{:2015_2016:s3:concprogobjet:designpatterns-2015-partie1.pdf|Design Pattern Composite}} * {{:2015_2016:s3:concprogobjet:designpatterns-2015-partie1.pdf|Design Pattern Adapter}} * Introduction aux Mocks en ligne * TD : * [[2015_2016:s3:concprogobjet:td:td3|Application des principes SOLID]] - **(S3T : 26/10)** VACANCES - **(S3T : 2/11, S3A: 12/1)** * Cours : * {{:2015_2016:s3:concprogobjet:pattern_dao_par_willian.pdf|DAO : William Zaborowski}} * {{:2015_2016:s3:concprogobjet:designpatterns-2015-decorateur-etat.pdf|Suite du cours sur les DP : Decorateur et Etat}} * TD : * [[2015_2016:s3:concprogobjet:td:td4|TD: Réutilisation]] //(MBF,RL) (SU)// - **(S3T : 9/11)** * Cours : * PAS DE COURS * TD : * PAS DE COURS - **(S3T : 16/11)** * Cours : * MVC sur le web (Etudiants : ?) * TD : * Fin du [[2015_2016:s3:concprogobjet:td:td4|TD sur la réutilisation]] - **(S3T : 23/11)** * Cours : * Fabrique(s)//(MBF)// * TD : * [[2015_2016:s3:concprogobjet:td:tdEvaluation|Evaluation des derniers rendus]] //(MBF,RL) (SU)// - **(S3T : 30/11)** * Cours : * Cours par un extérieur en Méthodo * TD : * [[2015_2016:s3:concprogobjet:td:td8|TD : Qualité des codes]] //(MBF,RL)// - **(S3T : 07/12)** * TD : * [[2015_2016:s3:concprogobjet:td:td-ObserverObservable|TD Maison Numérique]] //(MBF,RL) (SU)// - **(S3T : 14/12)(S3A : 26/1 & 9/2)** * TD : * [[2015_2016:s3:concprogobjet:td:td-ObserverObservable|TD Maison Numérique]] //(MBF,RL) (SU)// ===== Evaluation du module ===== Ce module est évalué par un examen (coeff. 1) et une note de TD (coeff. 1,5) composée de 2 notes (cf. [[https://mbf-iut.i3s.unice.fr/doku.php?id=2015_2016:s3:concprogobjet:td:start#evaluation_des_tds|évaluation des TDs]]). Une page recto-verso A4 est autorisée à l'examen (pas forcément manuscrite). ===== Références ===== * https://blog.crafting-labs.fr/ * http://industriallogic.com/xp/refactoring/ * Des cours en ligne sur YouTube de Xavier Blanc: * Introduction cours 1 : https://www.youtube.com/watch?v=BNEtWb3WceQ * //cohésion : 20:49 du 1e// * //couplage : 22:07 du 1e// * //Un SUPER exemple (un jeu!) expliquant la conception// * [[https://www.youtube.com/watch?v=6ZN3-pKU8e4| MVC illustré]] * [[https://www.youtube.com/watch?v=DK6vSUVfyug| Design Patterns]] * Le couplage et quelques règles: http://www.labri.fr/perso/xblanc/teaching.html * [[http://www.eyrolles.com/Informatique/Livre/uml-2-et-les-design-patterns-9782744070907| UML 2 et les design patterns de Craig Larman]] : ce livre est disponible en bibliothèque universitaire, une partie du cours s'appuie sur ce livre. * http://williamdurand.fr/from-stupid-to-solid-code-slides/#/ * http://at2011.agiletour.org/files/agile-architecture-atmontreal2011.pdf * http://www.amazon.com/The-Pragmatic-Programmer-Journeyman-Master/dp/020161622X * http://users.encs.concordia.ca/~abdelw/sba/papers/FIE08-OpenSource.pdf * [[http://www.amazon.fr/Les-patrons-ab%C3%AEm%C3%A9s-Explications-Restructuration/dp/6131535019|Les patrons abimés]] http://www.goprod.bouhours.net/?lang=fr& * Sur le choix d'une structure : https://qntm.org/gay