Programmation mobile I
420-V41-SF

Cours 18 - L’Architecture et les Données

Par Jimmy Gilbert

23 avril 2018

Introduction

Introduction

Déroulement du cours

  1. Introduction (en cours)

  2. Exercice sur SQLite

  3. Théorie sur Pattern Repository

  4. Temps en équipe TP3

Objectifs

  • Mettre en pratique l'utilisation de SQLite sous Android

  • Comprendre comment utiliser le Pattern Repository

Exercice 11

Base de données SQLite

  1. Faites la création d'une BD SQLite nommée "beatsaber"

  2. Faites une table nommée player qui contient:

    1. id: id du joueur auto increment

    2. name: nom du joueur

    3. score: score le plus haut du joueur

  3. Faites l'insertion manuelle en java d'une ligne en BD (INSERT)

  4. Afficher les scores à l'écran de votre application mobile (READ)

  5. Remettez tous vos fichiers sur Léa dans exercice 11

Introduction

Mise en contexte

  • Nous devons changer tout le code qui utilise le SQLite

  • Nous devons tester à nouveau le CRUD

  • Des bogues de compatibilités SQL pourraient survenir

  • Etc.!

Si en plein milieu d'un projet, nous voudrions changer de SGBD, quelles seront les problématiques?

Introduction

Mise en contexte

Repository Pattern

Comment s'en servir?

Repository Pattern

Définition

  • Le patron de conception « Repository » est une recette simple pour créer une couche d’accès aux données.
  • Un « Repository » est une classe permettant d’accéder à des données.
  • Implémente généralement au moins les 4 actions CRUD :
    • ­Create à Insert
    • ­Read à Select
    • ­Update à Update
    • ­Delete à Delete
  • ­Peux aussi en contenir d’autres méthodes plus spécialisées.
  • En général, il existe un « Repository » par source de données.

Repository Pattern

Implémentation d’un Repository

  • L’implémentation d’un « Repository » diffère en fonction des sources de données.
    • ­Un fichier sur le disque.
    • ­Un service Web.
    • ­Une base de données SQL.
  • Par contre, l’utilisation d’un « Repository » ne change pas.
    C’est l’avantage de ce patron!

Pouvez-vous me nommer des sources de données que vous connaissez?

Repository Pattern

Concept d'interface

  • C'est une classe abstraite (pas 100% du temps)
  • N'est pas de l'héritage
  • Décrire le comportement d'un objet
  • Permettre à plusieurs objets d'avoir les même comportements!

Pouvez-vous me décrire, dans vos mots, ce qu'est une interface en POO?

Repository Pattern

Interface Repository

L’implémentation d’un « Repository » respecte, en général, un contrat:

-Les classes utilisant ce « Repository » n’ont pas besoin de savoir comment il fonctionne.

-Il est alors aisé de modifier la source de données.

Repository Pattern

Exemple d'interface

public interface MyObjectRepository {

    public void create(MyObject myObject);
    public MyObject read(int id);
    public List<MyObject> readAll();
    public void update(MyObject myObject);
    public void delete(int id);

}

Repository Pattern

Exemple de Repository SQL

public class SQLiteMyObjectRepository implements MyObjectRepository {
    private SQLiteDatabase sqLiteDatabase;

    public MyObjectRepository(SQLiteDatabase sqLiteDatabase) {
        this.sqLiteDatabase = sqLiteDatabase;
    }

    public void create(MyObject myObject) { /* code SQL ici */ }
    public MyObject read(int id) { /* code SQL ici */ }
    public List<MyObject> readAll() { /* code SQL ici */ }
    public void update(MyObject myObject) { /* code SQL ici */ }
    public void delete(int id) { /* code SQL ici */ }
}

Repository Pattern

Créer le Repository

    SQLiteMyObjectRepository repository;
    MyTableDatabaseHelper applicationDatabaseHelper;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    table = 
        new MyTableDatabaseHelper(this, DATABASE_FILE_NAME);

    repository = 
        new SQLiteMyObjectRepository (table.getWritableDatabase());
}
  • Pour créer un repository, il suffit de l'appeler dans l'activité, après avoir créé la table qu'il va utiliser.

Repository Pattern

Vidéo YouTube

Utilisation de Git

Vidéo YouTube

Utilisation de P4Merge

Vidéo YouTube

Utilisation des WebView

Vidéo YouTube

Progmobile - Présentation 18

By Jimmy Gilbert

Progmobile - Présentation 18

L’Architecture et les Données

  • 395