:: Enseignements :: Master :: M1 :: 2018-2019 :: Programmation Orientée Objet - Design Patterns ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Programmation Orientée Objet - Design Patterns |
ResponsableDominique Revuz -- www -- @ Philippe Finkel -- www -- @
|
|
|
|
|
|
Objectifs du cours
A l'issue de ce cours:
- vous serez capable de réaliser des tests unitaires JUnit pour toutes les classes que vous écrivez.
- vous serez capable de mettre en œuvre une dizaine de design patterns dans vos projets d'école, en respectant correctement la terminologie.
- vous serez capable d'écrire des codes simples (inférieur à 5 j.h) respectant les principes essentiels de responsabilité unique des classes, de localité.
- vous serez capable de décrire les dépendances d'un code simple et vous serez en mesure de jugez la pertinence de ces dépendances.
- vous serez capable de concevoir et développer des logiciels relativement complexes (charge inférieure à 30 j.h) en mettant en œuvre les principes S.O.L.I.D. de la programmation orientée objet et les design patterns étudiés.
- vous serez capable, pour de tels logiciels, de modéliser votre conception à l'aide de schémas UML.
- vous serez capable de reprendre un code relativement complexe (charge inférieure à 15 j.h), de le comprendre, de le tester avec des tests JUnit et de le restructurer pour améliorer la distribution des responsabilités entre classes.
Déroulement
L'alternance classique cours/td est remplacée par des séances mixtes cours/td/corrections/discussions/questions + une partie en autonomie et du travail d'évaluation par les pairs.
Il y a un thème par semaine :
- vous devrez chaque semaine lire les lectures indiquées plus bas et préparer le thème de la semaine
- il y a 2 séances avec les enseignants. La première pour corriger le td de la semaine précédente fait en autonomie et séances de questions sur le thème de la semaine,
la seconde pour faire le premier TD sur le thème de le semaine et présentation + échanges sur le thème de la semaine.
- La première semaine est bien sûr un peu différente
- Les TD à faire en autonomie sont à faire en binôme mais le compte-rendu est à faire individuellement, donc AVEC VOS MOTS.
les rendus doivent systématiquement inclure des schémas UML corrects ( cf annexe UML des notes de cours ) ; vous devez utiliser PlantUML pour faire vos schémas.
- le CR est à déposer sur elearning au plus tard le dimanche à 14h
- 5 évaluations par les pairs : vous devez évaluer le compte-rendu et le code de 5 autres binômes. Que vos commentaires soient constructifs ! Ces évaluations sont à faire sur l'atelier e-learning.
L'évaluation est à faire individuellement !
Consultez les ateliers sur e-learning pour avoir les dates de rendu et les dates d'évaluation
- Les évaluations peuvent démarrer le dimanche à 14h05 et doivent être réalisées avant le lundi 18h. Vous devriez prendre environ 1 heure pour les 5 évaluations
- Nous travaillerons avec Java 11, sous Eclipse (ou IntelliJ)
pas de projet.
pas d'autre CR de TD à faire en dehors de celui à rendre.
l'évaluation sera sous forme d'un TP noté de 4 heures. La dernière semaine sera consacrée à un entraînement pour ce TP noté.
e-Learning
La page
elearning correspondant à ce cours.
C'est sur cette page que vous devrez déposer les compte-rendus (individuels) de TD.
Vérifiez bien les dates limites de rendu et d'évaluation par les pairs
Prérequis
Java (pour être efficace en TD !) :
- aisance avec la syntaxe java
- minimum de connaissance des api du jdk. connaître au moins deux types List et un type Map. savoir lire et écrire un fichier. utiliser un Scanner. ...
- aisance minimum avec eclipse. Explorez le menu REFACTORING
Sujets de TD
Programmation Objet
Objectifs de la semaine :
- révision sur les hiérarchie de classe et le polymorphisme
- comprendre la différence entre héritage et délégation
- prendre conscience de la souplesse supplémentaire avec la délégation
- apprendre (et commencer à comprendre) les principes SOLID
Dessinons !
[Etudes techniques librairie Canvas]
[Dessins des lignes]
[Et des ellipses ...]
[Un peu de selection]
[Selection colorée]
Jouons !
[Enfin la paye]
- Compte-rendu du TD en autonomie, sur l'atelier sur elearning
- Et correction (individuelle) des binômes proposés par la plate-forme elearning
- Lectures avant le TD suivant
Tests unitaires : tester avant, pendant, toujours !
Objectifs de la semaine :
- comprendre que les tests, ce n'est pas un truc de prof !, ça va vous AIDER et rendre le développement plus agréable
- savoir mettre en oeuvre des tests unitaires (JUnit uniquement). Sur une classe ou un ensemble de classes. Sans dépendances extérieures, Sans mock. tests unitaires uniquement.
- comprendre les bonnes pratiques pour savoir quoi et comment tester
- initiation au TDD
JUnit5 et tests
[Liste de course]
TDD
[Questions]
[Conversion de nombre Romain vers les entiers]
[Conversion d'entiers vers les chiffres Romain]
[Nombre Romain préfix]
- Compte-rendu du TD en autonomie, sur l'atelier sur elearning
- Et correction (individuelle) des binômes proposés par la plate-forme elearning
- Lectures avant le TD suivant
Design Patterns de création
Objectifs de la semaine :
- découverte des DP
- différencier construction et initialisation
- être capable de repérer les problématiques où une factory améliore le design et le code
- comprendre les différences d'intention et de fonctionnement des différentes factories
- maîtrise de la terminologie des DP creational
Equilibrium
[Equilibrium]
Passe ton bac
[Questions]
[Des bacs et des camions]
[et les Motos ?]
[Factory ?]
[Adaptons !]
[Déléguons !]
[OCP]
[Fermeture]
- Compte-rendu du TD en autonomie, sur l'atelier sur elearning
- Et correction (individuelle) des binômes proposés par la plate-forme elearning
- Lectures avant le TD suivant
DP Decorator, Proxy, Adapter, Composite
Objectifs de la semaine :
- découvrir les DPs Decorator, Proxy, Adapter, Composite
- savoir les mettre en oeuvre
- s'initier à l'utilisation simultanée de plusieurs DPs
Je loggue, tu loggues, ...
[Mon logger à moi]
Jouons à la guerre !
[Questions]
[Des unités militaires]
- Compte-rendu du TD en autonomie, sur l'atelier sur elearning
- Et correction (individuelle) des binômes proposés par la plate-forme elearning
- Lectures avant le TD suivant
DP observer, visitor
Objectifs de la semaine :
- découvrir les DPs Observer, Visitor
- savoir les mettre en oeuvre
- continuer à composer plusieurs DPs
Un serveur de commandes
[Un serveur de commandes]
ça vaut le détour
[Questions]
[Encore une calculette !]
[Le visiteur avec des lambdas]
- Compte-rendu du TD en autonomie, sur l'atelier sur elearning
- Et correction (individuelle) des binômes proposés par la plate-forme elearning
- Lectures avant le TD suivant
Entraînement !
Ce sont les TPs notés des années précédentes
Notes de cours et lectures INDISPENSABLES
Les
notes-de-cours sont à lire au fur et à mesure. Faites nous des retours précis chaque semaine pour nous aider à améliorer ces notes.
- semaine 1
- semaine 2
- semaine 3
- semaine 4
- semaine 5
Bibliographie
Notes sur les comptes-rendus de TD
La rédation du compte-rendu est un travail individuel
Un compte rendu de TP est un document destiné :
- à vous permettre de faire une synthèse de votre travail
- à clarifier les difficultés rencontrées et la compréhension des solutions
- à faciliter la compréhension du code pour le correcteur
- à expliquer et justifier la démarche suivie lors de la conception/implémentation
- à mettre en valeur votre travail et à vous évaluer
Quelques règles simples pour le contenu
Ce document sera lu avant de parcourir le code, il doit donc, pour chaque exercice, comporter une analyse du problème, une explication des difficultés rencontrées et des solutions mises en oeuvre. Le cas échéant, une description des tests sera nécessaire.
Votre document doit contenir une introduction et une conclusion.
Évitez les généralités.
Soyez synthétique mais exhaustif.
Si des points de l'énoncé vous ont semblé flous, précisez votre interprétation.
Votre rédaction doit faire apparaître votre démarche et la manière dont vous êtes arrivé à la conception de la solution
Vous devez inclure les schémas UML, à faire en
PlantUML.
Vous pouvez inclure des extraits de code mais limitez ces insertions à ce qui est vraiment significatif pour l'exercice.
N'hésitez pas à montrer des exemples d'exécution illustrant le fonctionnement de votre solution (ou ses limites).
Le compte-rendu doit être délivré en temps et en heure pour être validé.
L'archive avec les sources ne doit pas contenir de fichiers générés (.class, répertoire bin/, ...).
La forme
Cf votre cours de comm, si vous en avez eu...
Conclusion
Les conseils ci-dessus n'ont aucun caractère obligatoire, mais ils sont en général respectés dans les
bon rapports. Ils ne suffisent pas non plus à faire un bon rapport.
Annexes
- Joindre les sources à votre rapport.
- ZIP: Le rapport doit être envoyé sous la forme d' UN zip unique, contenant le rapport et les sources.
Le nom du zip doit contenir votre filiere, votre nom et le numéro du td.
- MAIL: rappeler la filière, votre nom et le numéro du td dans le sujet du mail
© Université de Marne-la-Vallée