9. Alors comme ça c’est compliqué ?
Making Software:
What Really Works and Why We Believe It
Why is it So Hard
to Learn to Program?
10. Compliqué ?
Concevoir un algorithme est simple.
Communiquer un algorithme à un humain est
simple.
Communiquer un algorithme à une machine
est moins simple.
18. Deux styles de méthodes privées
// field equals x
updateField();
// field equals y
Parfum de variable globale
// field equals x
field = computeValue();
// field equals y
Méthode détachée de son objet
19. Des objets à la rescousse
Test
Interface
mpub
Implémentation
Nouvelle
dépendance
Nouvelle
dépendance
mpub
mpub
cp
cp
37. C’est l’enfer !
●
●
●
●
Difficile à tester
Difficile à maintenir
Dépendances ‘cycliques’
Et ça sert à...quoi exactement ?
■ L’héritage d’interfaces fournit déjà le
polymorphisme
■ La composition fournit déjà de quoi réutiliser les
implémentations
38. Solution : composition
interface MembreDeLaFamille {...}
class Mère implements MembreDeLaFamille {...}
class Fille implements MembreDeLaFamille {
private final MembreDeLaFamille mère;
public Fille(MembreDeLaFamille mère) {
this.mère = mère;
}
...
}
45. L’enfer 2.0
●
●
●
●
Difficile à tester
Difficile à maintenir
Détruit tout polymorphisme
Rend les classes potentiellement variables…
alors qu’elles sont globales !