:: Enseignements :: Master :: M1 :: 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 corriger le td B de la semaine précédente fait en autonomie, la seconde pour faire le TD A sur le thème de le semaine et questions sur le poly de la semaine. et approfondissements des notions de la semaine, et discussions pour compléter le poly.
- La première semaine est bien sûr un peu différente : td A et td B fait le premier jour, td C à faire en autonomie, en binôme.
- Le TD B est donc à faire en binôme (en autonomie) et compte-rendu à rendre sur e-learning avant le dimanche soir 20h.
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.
- 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 !
Vos évaluations doivent être faites au plus tard le mardi 12h
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.
Seul un des membres du binôme doit faire le dépôt du CR, celui qui est le premier dans l'ordre alphabétique des noms de famille
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-C à faire en binôme, sur l'atelier TD1 sur elearning
- Et correction (individuelle) des binômes proposés par la plate-forme e-learning
- Lire le poly avant le TD-A 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
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 en binôme, sur l'atelier TD2 sur elearning
- Et correction (individuelle) des binômes proposés par la plate-forme e-learning
- 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]
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 en binôme, sur l'atelier TD3 sur elearning
- Et correction (individuelle) des binômes proposés par la plate-forme e-learning
- 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 en binôme, sur l'atelier TD4 sur elearning
- Et correction (individuelle) des binômes proposés par la plate-forme e-learning
- 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 en binôme, sur l'atelier TD5 sur elearning
- Et correction (individuelle) des binômes proposés par la plate-forme e-learning
- 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
© Université de Marne-la-Vallée