ajout crypto
This commit is contained in:
151
DEV3.2/ancien_controle/controle_unit/class.txt
Normal file
151
DEV3.2/ancien_controle/controle_unit/class.txt
Normal file
@@ -0,0 +1,151 @@
|
||||
export CLASSPATH=".:/usr/share/java/junit.jar:/usr/share/java/hamcrest-core.jar:$CLASSPATH"
|
||||
|
||||
|
||||
assertThows
|
||||
assertTrue
|
||||
assertFalse
|
||||
assertEquals
|
||||
assertNotEquals
|
||||
|
||||
|
||||
Voici une réponse détaillée pour chaque question et une explication de ce qu'il faut compléter :
|
||||
|
||||
1) [3 points en tout]
|
||||
a) Quel patron de conception est à l'œuvre ici ?
|
||||
Réponse :
|
||||
Le patron de conception utilisé est l'adaptateur (Adapter Pattern). Cette classe agit comme une enveloppe autour d'une implémentation existante de Deque (comme celle dans java.util) pour qu'elle corresponde à l'interface MinimalDeque demandée.
|
||||
|
||||
b) Comment fonctionne cette classe ?
|
||||
Réponse :
|
||||
La classe SimpleDequeThatsNotCricket délègue toutes ses opérations directement à une instance interne de Deque fournie par java.util. Elle ne réimplémente pas les fonctionnalités mais agit comme une passerelle pour adapter une implémentation existante à une interface spécifique.
|
||||
|
||||
2) [-6 à 4 points en tout]
|
||||
a)
|
||||
a1) Il est possible de décider si un programme Java va s’arrêter quelle que soit son entrée.
|
||||
Réponse : F (C'est le problème de l'arrêt, qui est indécidable).
|
||||
|
||||
a2) Il est possible de décider si un programme C va s’arrêter quelle que soit son entrée.
|
||||
Réponse : F (Même raison que pour Java).
|
||||
|
||||
a3) Il est possible de décider si un programme Python ne va pas s’arrêter pour certaines entrées.
|
||||
Réponse : F (Le problème de l'arrêt est indécidable pour tous les langages Turing-complets).
|
||||
|
||||
b)
|
||||
b1) Il est possible de décrire les propriétés souhaitées d'un programme en utilisant des langages de spécifications inspirés de la logique du premier ordre.
|
||||
Réponse : V
|
||||
|
||||
b2) Il existe des logiciels qui, étant donné une spécification et un programme, peuvent décider à coup sûr que le programme satisfait la spécification ou pas.
|
||||
Réponse : F (C'est une généralisation trop forte, en raison des limitations de la vérification formelle).
|
||||
|
||||
b3) Il existe des logiciels qui, étant donné une spécification et un programme, peuvent décider si le programme satisfait la spécification ou pas en demandant à un logiciel d'IA générative (comme ChatGPT) pour générer une preuve.
|
||||
Réponse : F (Bien que l'IA puisse assister, elle ne garantit pas une vérification formelle).
|
||||
|
||||
3) [1 point en tout]
|
||||
a) Commande pour lancer les tests si junit.jar et hamcrest-core.jar sont dans le même répertoire :
|
||||
bash
|
||||
Copier le code
|
||||
javac -cp .:junit.jar:hamcrest-core.jar TestSimpleDeque.java
|
||||
java -cp .:junit.jar:hamcrest-core.jar org.junit.runner.JUnitCore TestSimpleDeque
|
||||
b) Commande pour lancer les tests si les archives sont dans le CLASSPATH :
|
||||
bash
|
||||
Copier le code
|
||||
javac TestSimpleDeque.java
|
||||
java org.junit.runner.JUnitCore TestSimpleDeque
|
||||
4) [12 points en tout]
|
||||
Complétez le fichier TestSimpleDeque.java en fonction des descriptions des tests.
|
||||
Test addFirstNull:
|
||||
Ajoutez une assertion pour vérifier qu'une exception est levée. Exemple :
|
||||
java
|
||||
Copier le code
|
||||
@Test(expected = NullPointerException.class)
|
||||
public void addFirstNull() {
|
||||
MinimalDeque<String> d = new SimpleDeque<>();
|
||||
d.addFirst(null);
|
||||
}
|
||||
Test addLastNull:
|
||||
Pareil que pour addFirstNull.
|
||||
|
||||
Test addNoneIsEmpty:
|
||||
Vérifiez qu'un Deque vide est effectivement vide. Exemple :
|
||||
|
||||
java
|
||||
Copier le code
|
||||
@Test
|
||||
public void addNoneIsEmpty() {
|
||||
MinimalDeque<String> d = new SimpleDeque<>();
|
||||
assertTrue(d.isEmpty());
|
||||
}
|
||||
Test addOneIsNotEmpty:
|
||||
Vérifiez qu'un Deque avec un élément n'est pas vide.
|
||||
|
||||
Test pasDeResquilleur:
|
||||
Ajoutez des éléments devant, enlevez-les derrière, et vérifiez l'ordre.
|
||||
|
||||
Test pasDeResquilleurQuantique:
|
||||
Ajoutez des éléments derrière, enlevez-les devant, et vérifiez l'ordre.
|
||||
|
||||
Test removeFirstFromEmpty:
|
||||
Vérifiez qu'une exception est levée lorsqu'on essaie de retirer un élément d'un Deque vide.
|
||||
|
||||
Test removeLastFromEmpty:
|
||||
Même logique que removeFirstFromEmpty.
|
||||
|
||||
Test mangerLaBananeParLesDeuxBouts:
|
||||
Ajoutez un élément, enlevez-le des deux côtés, et vérifiez.
|
||||
|
||||
Test invariantTaille:
|
||||
Implémentez le test aléatoire avec ajout/suppression jusqu'à ce que le Deque soit vide.
|
||||
|
||||
|
||||
Chain of Responsibility
|
||||
|
||||
But : Permet à plusieurs objets de traiter une requête, chaque objet ayant la possibilité de la traiter ou de la transmettre.
|
||||
Exemple : Système de support technique avec plusieurs niveaux d'escalade.
|
||||
Command
|
||||
|
||||
But : Encapsule une requête en un objet pour paramétrer des actions, les annuler ou les enregistrer.
|
||||
Exemple : Boutons Annuler/Refaire dans un éditeur de texte.
|
||||
Interpreter
|
||||
|
||||
But : Fournit une représentation grammaticale d'un langage et un interprète pour traiter ses instructions.
|
||||
Exemple : Interprétation de scripts dans un moteur de jeu.
|
||||
Iterator
|
||||
|
||||
But : Fournit un moyen d'accéder séquentiellement aux éléments d'une collection sans exposer sa représentation.
|
||||
Exemple : Parcours des éléments d'une liste.
|
||||
Mediator
|
||||
|
||||
But : Définit un objet pour centraliser la communication entre plusieurs objets.
|
||||
Exemple : Gestionnaire de chat dans une application de messagerie.
|
||||
Memento
|
||||
|
||||
But : Capture l'état interne d'un objet pour pouvoir le restaurer ultérieurement.
|
||||
Exemple : Sauvegarde dans un jeu vidéo.
|
||||
Observer
|
||||
|
||||
But : Définit une relation 1-n où les objets sont notifiés automatiquement lorsqu'un autre objet change d'état.
|
||||
Exemple : Notifications pour les abonnés dans un système de messagerie.
|
||||
State
|
||||
|
||||
But : Permet à un objet de changer son comportement lorsqu'il change d'état.
|
||||
Exemple : Système de verrouillage/déverrouillage dans une application.
|
||||
Strategy
|
||||
|
||||
But : Définit une famille d'algorithmes, les encapsule, et permet de les interchanger dynamiquement.
|
||||
Exemple : Algorithmes de tri dans une application.
|
||||
Template Method
|
||||
|
||||
But : Définit la structure d'un algorithme tout en laissant certaines étapes spécifiques aux sous-classes.
|
||||
Exemple : Méthode de rendu dans un moteur de jeu.
|
||||
Visitor
|
||||
|
||||
But : Sépare un algorithme de la structure des objets sur lesquels il opère.
|
||||
Exemple : Calcul de taxes dans un système de commerce électronique.
|
||||
|
||||
java org.junit.runner.JUnitCore TestSimpleDeque
|
||||
|
||||
javac -cp .:junit.jar:hamcrest-core.jar TestSimpleDeque.java
|
||||
java -cp .:junit.jar:hamcrest-core.jar org.junit.runner.JUnitCore TestSimpleDeque
|
||||
|
||||
javac TestSimpleDeque.java
|
||||
java org.junit.runner.JUnitCore TestSimpleDeque
|
||||
Reference in New Issue
Block a user