ntro.ca

        • Contrats de classe
        • Liens utiles
        • Calendrier
        • Calendrier groupe 2
        • Calendrier groupes 1, 3
        • Structure du cours
        • Évaluations
        • Matériel à se procurer
        • Les profs
          • Marc-Olivier Tremblay
          • Mathieu Bergeron
        • Module 1.1: installation + trier des cartes
        • Module 1.2: rappels POO
        • Module 1.3: tableau d'objets
        • Examen 1
        • Module 2.1: données JSON
        • Module 2.2: données en Java
        • Module 2.3: récursivité
        • Examen 2
        • Module 3.1: structure générique
        • Module 3.2: efficacité (1)
        • Module 3.3: efficacité (2)
        • Examen 3
        • Module 4.1: liste naïve
        • Module 4.2: liste par tableau
        • Module 4.3: liste chaînée
        • Examen 4
        • Module 5.1: mappage naïf
        • Module 5.2: mappage par hachage
        • Module 5.3: mappage par arbre
        • Examen 5
        • Équipes
          • Horaire groupe 1
          • Horaire groupe 2
          • Horaire groupe 3
          • Groupe 1
          • Groupe 2
          • Groupe 3
        • Projets vedettes 2022
        • Projets vedettes 2023
        • Projets vedettes 2024
        • Projets vedettes 2025
        • Survol
        • Structure
        • Calendrier
        • Calendrier des séances
        • Évaluations
        • Exemples de jeu
        • Exemples de pages
        • Réponses à vos questions
        • Module 1: créer le projet
        • Module 2: concevoir l'application
        • Module 3: vues NtroFx
        • Module 4: modèle et navigation
        • Module 5: ajouter le dorsal, modifier le modèle
        • Module 7: améliorer l'affichage
        • Module 8: jeu en 2d
        • Module 9: client/serveur
        • Module 10: plusieurs instances du même modèle
        • TP1
        • Examen 1
        • TP2
        • Examen 2
        • Projet de fin de session
        • Calendrier
        • Structure du cours
        • Évaluations
        • Contrat de classe
        • Le prof
        • 01: Windows et Word
          • Astuces et raccourcis
        • 02: Word
        • 03: Word
          • Exercice Word: insertion d'éléments spéciaux
          • Exercice Word: tableaux
        • 04: Word
          • Exercice Word: références
          • TP01: Word (15%)
        • 05: PowerPoint
          • TP02: PowerPoint (10%)
        • 06: Examen Word (20%)
        • 07: Excel
        • 08: Excel
        • 09: Excel
          • TP03: Excel (15%)
        • 10: Excel
        • 11: Examen Excel (20%)
        • 12: Access
        • 13: Access
        • 14: Access
        • 15: Examen Access
      • Sondage H2023 (dept. info)
      • Vision H2023 (dept. info)
      • P1) exercices interactifs de lecture
      • P2) transition Excel vers Python
        • Atelier 2: un exemple
      • Jquery
      • Jquery Ui
      • Point de vue sur l'IA
    Session
    • Théorie: session
      • Informations spécifiques au Frontal
      • Pour déclarer la session
      • Pour utiliser la session dans le code
      • Pour démarrer l’application avec une session
      • Où sont sauvegarder les sessions?

    Théorie: session #

    Informations spécifiques au Frontal #

    1. La session mémorise des informations spécifiques au Frontal, pex.

      • la vue courante / page courante
      • le dernier modèle affichée (p.ex. la dernière partie affichée).
    2. En quittant l’application, Ntro va sauvegarder la session

    3. La session permet donc de reprendre l’affichage «là où on était rendu»

    Pour déclarer la session #

    1. Il faut créer une classe qui hérite de Session

      public class SessionPong extends Session<SessionPong> {
      
          // ajouter des attributs, p.ex. la vue courante ou la partie courante
      
      }
      
      
    2. Ensuite, il faut déclarer la classe session dans le Frontal

      public class FrontalPong implements FrontendFx {
      
          // ...
      
          @Override
          public void registerSessionClass(SessionRegistrar registrar) {
              registrar.registerSessionClass(SessionPong.class);
          }
      
      

    Pour utiliser la session dans le code #

    1. Soit dans le graphe des tâches:

      private static void choisirPremiereVue(FrontendTasks tasks) {
      
          tasks.task("choisirPremiereVue")
      
                // dépendance à la session
                .waitsFor(session(SessionPong.class))                
      
                .executes(inputs -> {
      
                    // récupérer la session 
                    SessionPong session = inputs.get(session(SessionPong.class));
      
                    // ....
      
                });
      }
      
    2. Soit ailleurs dans le code:

      SessionPong session = Ntro.session();
      
      // autre version
      Ntro.session(SessionPong.class).memoriserPartieCourante(idPartie);
      

    Pour démarrer l’application avec une session #

    $ sh gradlew pong:alice
    
    $ sh gradlew mon_projet:bob
    
    $ sh gradlew mon_projet:charlie
    
    # ajouter d'autres tâches dans build.gradle pour créer d'autres sessions
    

    Où sont sauvegarder les sessions? #

    1. Fichiers lus par Ntro: mon_projet/_storage/sessions

    2. Pour les sauvegarder dans Git: mon_projet/json

      $ sh gradlew saveJson
      
    3. Pour ré-installer les sessions sauvegardées dans Git

      $ sh gradlew restoreJson
      
    Creative Commons License Creative Commons Attribution Creative Commons ShareAlike
    • Théorie: session
      • Informations spécifiques au Frontal
      • Pour déclarer la session
      • Pour utiliser la session dans le code
      • Pour démarrer l’application avec une session
      • Où sont sauvegarder les sessions?