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.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Mises en situation
  5. 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.json aprè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.dump traduit les types Python en JSON : False devient false, True devient true, 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 transient du 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 transient du champ, car c'est lui qui interdit son écriture

    Un champ transient est volontairement ignoré par la sérialisation. Un champ static n'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.