Examen 1 - POO2 Flashcards
(32 cards)
Pratiques et principes de programmation
- Nettoyage du code (code mort, warning, formatage etc.)
- Tell don’t ask
- Loi de Déméter
- QCS Query-Command Separation
- KISS
- DRY
- YAGNI
- Clean code
Nettoyage du code
enlever code mort, jamais appeler, resoudre warning, formatage, nettoyer imports, enlever les string/num magiques
Tell don’t ask
ne pas demander une info a lobjet et faire le travail à sa place, juste lui dire de faire son boulot (ex: on demande pas le moteur de la voiture pour le demarrer on dit a la voiture de demarrer)
Loi de Démeter
on connait juste ces amis directe, on ne partage pas plus que necessaire et ainsi on limte les dependances
QCS
querry command separation, ne pas faire une modification et une obtention d’info dans la meme methode
KISS
keep it simple, stupid ne pas se compliquer la vie, ecrire du code simple, ne pas penser a faire des optimisations difficles des le debut
DRY
don’t repeat yourself, ne pas repeter du code, garde le tt simple
YAGNI
you are not gonna need it, reflechir avant de coder qq chose d’inutil qui n’est pas demander, ex : tt les getters ne sont pas forcements a coder
Principes de programmation objet
- SRP (S de SOLID)
- Encapsulation
- Séparation des interfaces (I de SOLID)
- Open-Closed Principle (O de SOLID)
SRP
single responsability principle, une classe ne fait qu’une seule chose et elle le fait bien
Encapsulation
garder attribut privé, ne pas donné accès à n’importe qui, be shyyy
Séparation des interfaces
ne pas obliger une classe a implementer des methodes dont elle n’a pas besoin, favoriser la creation de multiples interfaces que d’une grosse qui est sensé tout faire
Open closed principle
Le principe ouvert/fermé stipule que les entités (classes, modules, fonctions, etc.) doivent être ouvertes à l’extension mais fermées à la modification. Cela signifie que vous pouvez ajouter de nouvelles fonctionnalités sans modifier le code existant.
Nom d’objet = référence de l’objet
MyClass obj = new MyClass();
Ici, obj est une référence à l’objet de type MyClass qui a été instancié.
les differents types de passage
passage en para et les return se sont par valeurs donc une copie
si on fait une copie de la reference la c’est l’original donc si je fait Class ref = class; (class obj creer avant) et que je modifi ref, je modifi aussi class
static
rattaché à la classe et non à un objet, a eviter paratage entre instance
final
non modifiable une fois initialisé, ex : final int att; une fois construit peut plus etre changer (attribut) ou constante donc public static final int ALLO= 1;
Interface
contien juste signature methode, represente une capacité, mot clé implments, classe obligé de definir/redefinir les methodes de linterface, contrat de servie, c abstrait
Programmez avec les interfaces pas avec les implémentations
eviter usage classe concrete pour eviter dependance, necessite injection de dependance
Injection de dependance
fournit obj concret au lieu de le creer dans la classe, la classe parle juste de l’interface mais on peu lui passe du concret
Surcharge de méthodes
meme nom mais pas meme signature
Polymorphisme
implementer interface ou heriter d’une classe, se creer de facon general (super class ou interface) appeler methode presente dans interface/super (plus petit marche pas car est definis autrement) la methode sexecuters de facon override
Stratégie pattern
1 interface stratégie (au moins 1 méthode pour exécuter la stratégie)
o Classes concrètes de stratégie
o Classe de contexte : classe qui va utiliser les stratégies
▪ Programmer avec les interfaces pas avec les classes concrètes
▪ Injection de dépendance : méthode avec un paramètre du type de l’interface, qui permet de
recevoir la ou les stratégies concrètes
▪ Méthode qui va exécuter la ou les stratégies concrètes en utilisant le polymorphisme
o Tests de la classe de contexte : utilisation de mocks
Exemples de stratégie pattern
Moyens de paiement
o Éléments à dessiner
o Augmentations salariales de différents types
o Voiture et son moteur
o Comparateur de Java pour le tri d’une collection