:: Enseignements :: ESIPE :: E4INFO :: 2016-2017 :: 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 -- @ Remi Forax -- 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. La première pour faire le TD A sur le thème de le semaine et questions sur le poly de la semaine. La seconde pour corriger le td fait en autonomie, et approfondissements des notions de la semaine, et discussions pour compléter le poly.
- Le TD B est donc à faire en binôme (en autonomie) et compte-rendu à rendre sur e-learning avant le mercredi soir 22h.
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.
- 1 correction par les pairs : corriger le compte-rendu d'un autre binôme et lui envoyer votre correction (constructive !) sur le forum e-learning.
Vos corrections doivent être envoyées au plus tard le jeudi 22h
Si la plateforme e-learning n'est pas disponible pour recevoir vos compte-rendus, envoyez-les simplement par mail aux 3 enseignants.
Si le forum de la plateforme e-learning n'est pas disponible pour recevoir vos corrections, envoyez-les simplement par mail aux 2 membres du binôme corrigé, et les 3 enseignants en copie.
pas de projet.
pas d'autre CR de TD à faire en dehors de celui à rendre.
e-Learning
La page
elearning correspondant à ce cours (à venir).
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]
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]
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 (optionnel)]
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. Et correction du binôme désigné.
à déposer 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]
Ca vaut le détour
[Questions]
[Encore une calculette !]
[Le visiteur avec des lambdas]
Compte-rendu du TD-B à faire en binôme.
à déposer sur elearning
- et envoyer au binôme vous corrigeant
- et lire le poly avant le TD-A suivant
- et envoyer la correction par mail, en mettant en copie les 2 enseignants
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