La persistance des données d'une application
Garder l'état entre deux lancements : fichier texte, CSV ou JSON, sérialisation d'objets, préférences, base embarquée ; quand charger et quand enregistrer ; un modèle qui ignore son support.
- 26 cartes
- 5 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
- Mises en situation
- Comprendre
Quelques cartes du deck
Persistance : de quoi s'agit-il ?
Voir la réponse
Propriété des données qui survivent à l'arrêt du programme parce qu'elles sont écrites sur un support durable.
Une variable ou un objet n'existe qu'en mémoire vive : à la fermeture, tout disparaît. Un fichier, des préférences ou une base gardent l'état d'un lancement à l'autre.
Quel est le contenu exact du fichier
taches.jsonaprès l'exécution de ce programme ?
```python
import json
taches = [{"titre": "Acheter du pain", "faite": False}, {"titre": "Appeler Ada", "faite": True}]
with open("taches.json", "w") as f:
json.dump(taches, f)`[{"titre": "Acheter du pain", "faite": false}, {"titre": "Appeler Ada", "faite": true}][{"titre": "Acheter du pain", "faite": "false"}, {"titre": "Appeler Ada", "faite": "true"}][{'titre': 'Acheter du pain', 'faite': false}, {'titre': 'Appeler Ada', 'faite': true}]{"titre": "Acheter du pain", "faite": false}, {"titre": "Appeler Ada", "faite": true}
Voir la réponse
[{"titre": "Acheter du pain", "faite": false}, {"titre": "Appeler Ada", "faite": true}]json.dumptraduit les types Python en JSON :Falsedevientfalse,Truedevienttrue, les clés et les chaînes prennent des guillemets doubles, et la liste devient un tableau entre crochets, sans retour à la ligne par défaut.On charge l'état au … et on l'enregistre dès qu'il change, pas seulement à la … : un plantage ou un arrêt brutal empêcherait cette dernière sauvegarde.
Voir la réponse
On charge l'état au démarrage et on l'enregistre dès qu'il change, pas seulement à la fermeture : un plantage ou un arrêt brutal empêcherait cette dernière sauvegarde.
Une sauvegarde à chaque changement important, ou à intervalle régulier, limite ce qu'on perd en cas d'incident.
Sérialisation : de quoi s'agit-il ?
Voir la réponse
Transformation d'un objet en une suite d'octets ou de texte qu'on peut écrire dans un fichier ou envoyer sur un réseau.
Elle choisit un format : le JSON est lisible et indépendant du langage ; la sérialisation Java native produit des octets liés à la classe.
Les préférences d'un utilisateur sont sauvegardées avec la sérialisation Java, mais son champ
theme, marquétransient, revient ànullà chaque lancement. Que faut-il faire pour le garder ?- Retirer
transientdu champ, car c'est lui qui interdit son écriture - Déclarer le champ
static, pour qu'il soit partagé entre les lancements - Appeler le constructeur de la classe après la relecture du fichier
- Faire implémenter
Serializableà la classe, qui ne le fait pas encore
Voir la réponse
Retirer
transientdu champ, car c'est lui qui interdit son écritureUn champ
transientest volontairement ignoré par la sérialisation. Un champstaticn'appartient pas à l'objet et n'est pas écrit non plus ; et la classe est déjà sérialisée, puisque le reste est relu.- Retirer