Examen 1 - POO2 Flashcards

(32 cards)

1
Q

Pratiques et principes de programmation

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Nettoyage du code

A

enlever code mort, jamais appeler, resoudre warning, formatage, nettoyer imports, enlever les string/num magiques

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Tell don’t ask

A

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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Loi de Démeter

A

on connait juste ces amis directe, on ne partage pas plus que necessaire et ainsi on limte les dependances

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

QCS

A

querry command separation, ne pas faire une modification et une obtention d’info dans la meme methode

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

KISS

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

DRY

A

don’t repeat yourself, ne pas repeter du code, garde le tt simple

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

YAGNI

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Principes de programmation objet

A
  • SRP (S de SOLID)
  • Encapsulation
  • Séparation des interfaces (I de SOLID)
  • Open-Closed Principle (O de SOLID)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

SRP

A

single responsability principle, une classe ne fait qu’une seule chose et elle le fait bien

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Encapsulation

A

garder attribut privé, ne pas donné accès à n’importe qui, be shyyy

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Séparation des interfaces

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Open closed principle

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Nom d’objet = référence de l’objet

A

MyClass obj = new MyClass();

Ici, obj est une référence à l’objet de type MyClass qui a été instancié.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

les differents types de passage

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

static

A

rattaché à la classe et non à un objet, a eviter paratage entre instance

17
Q

final

A

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;

18
Q

Interface

A

contien juste signature methode, represente une capacité, mot clé implments, classe obligé de definir/redefinir les methodes de linterface, contrat de servie, c abstrait

19
Q

Programmez avec les interfaces pas avec les implémentations

A

eviter usage classe concrete pour eviter dependance, necessite injection de dependance

20
Q

Injection de dependance

A

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

21
Q

Surcharge de méthodes

A

meme nom mais pas meme signature

22
Q

Polymorphisme

A

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

23
Q

Stratégie pattern

A

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

24
Q

Exemples de stratégie pattern

A

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

25
Fabrique simple (Factory pattern)
Le patron de fabrique est souvent utilisé avec le patron Stratégie pour créer des instances de stratégies sans spécifier leur classe concrète.
26
Mocks
Couper la dépendance avec les classes qui ne sont pas sous test o Comment ça marche? ▪ Permet de contrôler le comportement du mock pour le rendre prévisible
27
Code under test
toujours comprendre quel est le code testé dans un testtoujours comprendre quel est le code testé dans un test
28
Spy
Espionne l’appel à des méthodes o Espionne la valeur des paramètres
29
Stub
Bouchon o Renvoie toujours la même valeur
30
Fake
Substitut o Contrôle la valeur de retour (qui peut prendre donc plusieurs valeurs)
31
Dummy
Fantôme o Il ne fait rien o Il est là parce qu’il est nécessaire au test mais n’est pas impliqué dans le code testé
32
Conseils/Attention :
Code le plus simple o Aucune logique d’application o On ne teste pas un mock o On ne regarde pas les classes concrètes pour écrire un mock. On regarde uniquement l’interface que le mock doit implémenter.