====== 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
**Résumé par Jeanne Marcade et François Montigny (légèrement modifié) (janvier 2017)**\\
Si vous ne deviez retenir qu’une seule chose de ce carnet de bord, ce
serait celle-ci : il y a différents principes qui s'appliquent quand on conçoit une application orientée-objets. On ne peut pas toujours tous les concilier, on ne peut pas toujours tous les appliquer. Donc, il ne faut pas être dogmatique... mais il faut savoir réfléchir, choisir la meilleure solution, et surtout, il ne faut pas programmer par coïncidence ! Soyons capables, nous, développeurs, d’argumenter et expliquer nos solutions !
===== 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 |
| [[slazreg@visteon.fr|Sami Lazreg]] (SL) |IUT /UNS/ I3S | Bâtiment Templiers :Bureau 402 |
===== Planification =====
voir : [[2017_2018:s3:concprogobjet:plannification|Planification]]
===== 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=2017_2018: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 =====
* http://java-design-patterns.com/patterns/
* https://github.com/iluwatar/java-design-patterns
* http://openjdk.java.net/projects/code-tools/jmh/
* 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