Session - 2e moitié Flashcards
Qu’est-ce qu’une collection?
Une classe dont l’objectif est de contenir plusieurs éléments d’un même type.
Elle a des fonctionnalités avancées. (taille dynamique, gestion simplifiée des ajouts/retraits, toString, contains, etc.)
Qu’elle est la collection que nous utilisons dans le cours?
ArrayList
Quelles sont les autres collections que nous avons rapidement mentionnées en classe?
LinkedList (liste chainée, un élément contient une référence vers le suivant)
File (First-in, first-out. Comme à la caisse)
Pile (Last-in, first-out. Comme les assiettes dans l’armoire)
Set, Map, …
Que faut-il utiliser pour modifier une collection?
Un iterator.
Comment s’utilise un iterator?
ArrayList<String> recipe = new ArrayList<>();</String>
Iterator<String> ite = recipe.iterator();
while(ite.hasNext())
{
String s = ite.next();
if(s.startsWith("c"))
{
ite.remove();
}
}
System.out.println(recipe);</String>
Qu’est-ce qu’une wrapper class?
Une classe qui permet d’envelopper un type primitif Java.
(int, char, boolean -> Integer, Character, Boolean)
Les collections n’acceptent que des objets.
Comment tester une exception dans les tests?
assertThrows(IllegalArgumentException.class,()->{fred.changeAge(-5);});
À quoi sert une exception?
À afficher une alerte, lorsque le programme ne suit pas le HappyPath
Permet de s’assurer de l’exactitude et la robustesse du programme
Comment créer une classe exception maison?
public class NomBidon extends RuntimeException
{
private static final long serialVersionUID = - 154879651354879645L;
NomBidon(int a, String b)
{
super(“”);
}
}
Quels sont les deux types d’exceptions en Java?
Unchecked (non-vérifiées, non-signées)
Checked (vérifiées, signées)
Dans notre cours, on utilise seulement les Unchecked (Runtime)
Pourquoi les tests unitaires sont-ils importants?
Ils permettent de faire du code de qualité :
- Correct (sans bug)
- Robuste
- (Plus) facile à maintenir
- (Plus) facile à comprendre
- Mieux architecturé/mieux conçu
En POO, comment testons-nous les méthodes et fonctions privées?
On les teste au travers des méthodes publiques.
(IMPORTANT : Ne pas rendre des méthodes publiques simplement pour les tester.)
Il existe différents types de test, lesquels utilisons-nous en classe?
Tests fonctionnels (exactitude -> Ce qu’on fait déjà)
Tests de fiabilité (robustesse -> Exceptions)
Qu’est-ce que le test coverage?
S’assurer que nos tests testent toutes nos classes et toutes les fonctions/méthodes de nos classes.
Une couverture de 100% est visée, mais les tests doivent être de bonne qualité.
Qu’est-ce que le TDD (Test-Driven Development)?
Technique Agile qui consiste à :
- Écrire un test avant d’écrire le code.
- N’écrire que le code minimal nécessaire pour faire passer notre test
- Faire un refactor du code
- On itère de cette façon jusqu’au développement de notre fonctionnalité.
Pourquoi est-ce pertinent d’écrire les tests avant?
Cela permet de réfléchir au problème et de bien le comprendre avant de coder.
Car pour écrire les tests, on doit bien comprendre.
(Il faut être capable de résoudre le problème manuellement)
À quoi servent les packages?
Ils servent à organiser les répertoires de code de façon universelle.
Quelle est la nomenclature de package suggérée?
- Le nom de domaine de l’organisation inversé : ca.csfoy
- L’unité dans l’organisation : h2024.poo1.gr3.fg
- Le projet : exercice99
En tout : ca.csfoy.h2024.poo1.grp3.fg.exercice99
Où indique-t-on le package dans une classe?
Au début.
(Ex: package csf.poo.gagnon;
Public class Patate…)
Comment faire la javadoc d’une classe?
Il faut écrire (en commentaire) une description de la classe (ex : le concept qu’elle représente) avec possiblement un tag @author et @version.
Ex :
/**
* Représente un légume
* @author FBeaulieu
* @version 2.0
*/
Comment écrire de la javadoc pour les méthodes/fonctions?
Une description de la méthode (quel problème elle résout) en plus des tags suivants lorsque nécessaire. (Seulement pour les méthodes publiques)
- @param : Pour chaque paramètre, son nom et son rôle dans le problème.
- @return : ce que la valeur retourne
- @throws : pour chaque exception qui peut être lancée par la méthode, le type de l’exception et une description de pourquoi cette exception survient (dans quelle situation)
Notre javadoc est écrite.
Comment la générer en HTML?
Commande : javadoc -d doc src*
À partir de l’IDE
Contrairement à la composition (has a), quelle relation représente l’héritage?
Est un (is a)
Ex : Un chat EST UN félin.
La relation «est un» est utilisée pour ___________ la définition d’un concept.
Étendre.
(Par exemple, les chats et des tigres sont des félins car ils ont des caractéristiques communes, donc les griffes rétractables, les moustaches et une queue. Mais le tigre a aussi des caractéristiques ou comportements qui lui sont propre. Comme des rayures et des couleurs limitées.)
Comment se nomme la classe «parent» et la classe «enfant»?
Super classe (Félin)
Sous classe (Tigre, chat, lion, etc.)