Examen 1 - POO2 Flashcards

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
Q

Fabrique simple (Factory pattern)

A

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
Q

Mocks

A

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
Q

Code under test

A

toujours comprendre quel est le code testé dans un testtoujours comprendre quel est le code testé dans un test

28
Q

Spy

A

Espionne l’appel à des méthodes
o Espionne la valeur des paramètres

29
Q

Stub

A

Bouchon
o Renvoie toujours la même valeur

30
Q

Fake

A

Substitut
o Contrôle la valeur de retour (qui peut prendre donc plusieurs valeurs)

31
Q

Dummy

A

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
Q

Conseils/Attention :

A

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.