POO & Design Patterns

Introduction

Objectifs du cours (1/2)

Le but du cours n'est pas simplement de coder l'application mais de proposer une architecture logicielle :

  • maintenable
  • testable
  • évolutive

Non seulement, vous apprendrez à mieux architecturer votre code mais surtout, vous pourrez expliquer pourquoi votre architecture logicielle est performante.

⇛ Changement d'état d'esprit de votre part :
pas seulement, "est-ce que ça marche" mais plutôt:
est-ce que je peux défendre ce code dans un cadre professionnel ?

Objectifs du cours (2/2)

  • Principes du developpement orienté objet dans le monde professionnel
    principes SOLID
  • Les design patterns les plus courants pour un développeur full-stack:
    • identifier les situations où les design patterns s'appliquent,
    • savoir les mettre en place,
    • illustrer des exemples des pratiques SOLID,
    • répondre aux questions dans les entretiens d'embauche.

    plus que des recettes les design patterns crée un langage commun pour les développeurs.

Objectifs secondaires

  • Base d'ULM
    Suffisament pour pouvoir parler de code au tableau, ce ne sera pas du tout un cours complet.
  • Comprendre les nombreux dogmes que vous avez appris en L3 et M1.
    100% Forax-compatible ⇛ tous les codes que vous avez vu en Java jusqu'à maintenant adhèrent aux principes SOLID.

Philosophie du cours

  • Les principes SOLID et les design patterns peuvent être très abstrait si l'on n'a pas d'exemples concrets.
  • Les exemples aident mais seule la pratique permet de réellement comprendre.
  • Beaucoup de mises en situation en Java.
  • Ne pas traiter tous les design patterns seulement les patterns qui reviennent tout le temps.

Pourquoi le choix du language Java ?

Les exemples du cours seront en Java mais tous les principes et les design patterns que nous verrons s'appliquent à n'importe quel langage permettant la programmation orientée objet.

Mais monsieur...

  • C++ permet l'héritage multiple et pas Java
  • Rust ne permet pas l'héritage
  • ...

Nous verrons que l'héritage est un moyen technique de factoriser du code, qu'il est souvent peu adapté. Un seul design pattern utilise l'héritage.

Organisation

  • Un examen final sur machine,
  • Il faut finir et déposer les exercices sur e-learning,
  • Il faut travailler tous les exemples du cours.