Conception orientée objet
Table of Contents
Code moodle : 6mjzby
1. Les mocks
Si une classe Obj est abstraite, random ou autre, on crée (dans tests), une classe ObjMock qui ne sert qu'au test. C'est un code factice pour du test
2. Les principes de conception
2.1. SOLID
C'est un ensemble de principes qui, si bien appliqué, améliore la qualité du code
- OCP
- Principe de substitution de Liskov
- Si ça ressemble à un canard, qu'il fait coin coin mais qu'il a besoin de batteries, il y a un soucis.
3. Type générique
Une classe générique est une classe paramétrée par un type : On écrit public class Renter<T>
3.1. Wildcard
C'est Renter<?>. Renter<Car> n'est pas un sous type de Renter<Vehicle>, même si Car est un sous type de Vehicle
3.2. Méthode générique
Déclaration
public <T> T rentSomething(Renter<T> renter)
3.3. Contraindre/borner le type paramètre
public class Renter<T extends Rentable>
Si on veut contraindre sur plusieurs listes:
public class Renter<T extends A & B>
4. Design patterns
Il y a 3 familles de design :
- De création d'objets
- De comportement
- De structure
4.1. Creational Patterns
C'est une abstraction d'un processus de création
4.1.1. Builder
Là pour éviter de devoir changer les propriétés et le constructeur d'une classe, la classe builder construit l'instance pour nous à l'aide de setters
Le builder est là pour :
- Éviter les constructeurs à rallonge
- Construire des objets avec beaucoup de paramètres optionnels
4.1.2. Singleton
On s'assure qu'une classe n'a qu'une seule instance
4.2. Structural Patterns
4.2.1. Adapter
Ça adapte
4.2.2. Composite
Gérer des objets qui contiennent des objets de même type