:: Enseignements :: ESIPE :: E4INFO :: 2017-2018 :: 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 td/corrections/discussions/questions + une partie en autonomie et du travail d'auto-correction.
un thème par semaine :
- vous devrez lire le poly et préparer le thème de la semaine
- 2 séances avec les enseignants. Le premier pour faire le TD A sur le thème de le semaine et questions sur le poly de la semaine, le second pour corriger le td B de la semaine fait en autonomie, et approfondissements des notions de la semaine, et discussions pour compléter le poly.
- Le TD B est à faire en autonomie et le compte-rendu à rendre sur e-learning avant le jeudi soir 20h. Vous pouvez travailler en binôme pour réfléchir et coder mais le CR doit être fait individuellement : explications avec vos mots, et avec vos schémas UML.
les rendus doivent systématiquement inclure des schémas UML corrects ( cf annexe UML du poly ). Il n'est pas nécessaire/recommandé d'utiliser un logiciel UML; faites un simple schéma au crayon + une photo.
- Evaluations par les pairs : en fin de séance du vendredi, vous devrez individuellement évaluer le compte-rendu et le code d'un autre étudiant. Vos commentaires devront être constructifs ! Ces évaluations seront à faire sur l'atelier e-learning.
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 de TD.
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]
Ré-écrivons ls
[Ligne de commande et liste de fichiers]
Jouons !
[Enfin la paye]
- Compte-rendu du TD-B à faire et à déposer sur l'atelier TD1 sur elearning
- Lire le poly
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
JUnit 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-B à faire et à déposer sur l'atelier TD2 sur elearning
- Lire le poly avant le TD-A 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 (refactoring)]
[Equilibrium (extensions)]
Passe ton bac
[Questions]
[Des bacs et des camions]
[et les Motos ?]
[Factory ?]
[Adaptons !]
[Déléguons !]
[OCP]
[Fermeture]
- Compte-rendu du TD-B à faire et à déposer sur l'atelier TD3 sur elearning
- Lire le poly avant le TD-A 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-B à faire et à déposer sur l'atelier TD4 sur elearning
- Lire le poly avant le TD-A 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-B à faire et à déposer sur l'atelier TD5 sur elearning
- Lire le poly avant le TD-A suivant
Entraînement !
Ce sont les TPs notés des années précédentes
Poly (en cours)
Quelques références
Bibliographie
Quelques liens PlantUML
© Université de Marne-la-Vallée