====== 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 !
===== 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
**Communication et Rendus via SLACK** espace de travail : **dut-info-nice-18-19**; Canal : **CPO-AVANCEE**
(Téléchargez l'application sur vos machines personnelles et/ou téléphones, c'est un moyen vite adopté pour communiquer rapidement dans un contexte professionnel.) https://join.slack.com/t/dut-info-nice-18-19 avec le [[https://join.slack.com/t/dut-info-nice-18-19/shared_invite/enQtNDMxODg5Mjc0MDE4LTk3M2JkMzU2ZjU0ODU3MzdmOTVjM2JkMGQyOTIwNDk4NGRmNWFlOTljNmYxMGZlY2U5ZTQzMjUzNGZjMTM1MW|lien d'invitation ci-joint]]
===== Intervenants =====
^ Nom ^ Affiliation ^ Adresse ^
| __[[blay@unice.fr|Mireille Blay-Fornarino]]__(MBF) | IUT /UCA/ I3S | Bureau XXX Ou Bâtiment Templiers :Bureau 449 ([[https://mireilleblayfornarino.i3s.unice.fr/|www]]) |
| __[[lecat@unice.fr|Rosa Lecat]]__(RL) | IUT /UNS/ | Bureau XXX |
===== Planification =====
voir : [[2018_2019:s3:concprogobjet:plannification|Planification]]
===== Evaluation du module =====
Ce module est évalué par
- ** Evaluation des TDs, coefficient 0,75**
* Tous les TDs sont potentiellement évalués à la fois par le rendu de TD et/ou par la participation en TD.
- **[[https://mbf-iut.i3s.unice.fr/doku.php?id=2018_2019:s3:concprogobjet:start#carnet_de_bord|Carnet de Bord]], coefficient 0,75**
- **DS, coefficient 1** : examen(s), des QCM bonus peuvent compléter cette note.
Une page recto-verso A4 est autorisée à l'examen (pas forcément manuscrite).
==== Carnet de bord ====
Le carnet de bord peut se faire par binôme (exceptionnellement triplet).
* Son contenu correspond aux différents TDs et vise à mettre en relief ce que vous avez appris.
* Sa forme peut être un document textuel ou un document web
* Il a pour cible d'expliquer à d'autres développeurs, l'art d'une programmation pragmatique au travers d'exemples issus de l'expérience acquise dans ce module et dans le module "Méthodologie" ou éventuellement des projets tutorés. Il ne peut pas s'appuyer sur d'autres exemples.
* Pour chaque exemple, utiliser les moyens les plus adéquates pour expliquer : diagrammes UML, codes, traces d'exécution ....
* Voici quelques questions auxquelles nous voulons trouver des réponses dans votre document :
* Questions de QCM
* Des tests pour s'auto-évaluer
* Quelles sont les erreurs à ne pas commettre? Raconter votre expérience et expliquer où était l'erreur.
* A quelles situations complexes, avez-vous été confronté et comment les avez-vous résolues?
* Quels patterns avez-vous utilisés?
* Quelles sont les architectures logicielles que vous avez utilisées? Quand? Pourquoi?
RENDU pour le** 11 janvier 17h00 en S3T**, pour le 21/2 9h00 en S3A sous [[http://jalon.unice.fr/cours/blay/Cours-blay-20150930110548/BoiteDepot-blay-20151209112645693925|Jalon]]
NE METTEZ PAS TOUTES LES BETISES QUE VOUS TROUVEZ SUR LE WEB DANS VOS DOSSIERS !!!!!
via GIPHY
/*
http://yann.fzcommunication.fr
*/
===== 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