cours informatique 2015-2016 contenu · 2015. 9. 26. · page 6 sur 74 v01.07...

74
HEG Genève http://www.hesge.ch/heg/ Contenu : Analyse du cahier des charge; Modélisation : architecture en couche; Connexion et gestion SGBD ; Analyse des classes; Analyse IHM. Estimation temps : Cours : 120 minutes Cours informatique 2015-2016

Upload: others

Post on 19-Jun-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

HEG Genève http://www.hesge.ch/heg/

Contenu : • Analyse du cahier des charge; • Modélisation : architecture en couche; • Connexion et gestion SGBD ; • Analyse des classes; • Analyse IHM.

Estimation temps : • Cours : 120 minutes

Cours informatique 2015-2016

Page 2: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 2 sur 74 v01.07

Introduction

Les codes sources ont été développés par Peter Daehne

Page 3: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 3 sur 74 v01.07

Objectifs

Correction et discussion détaillées du TP-02

Objectif de cette analyse est de mettre l’accent sur :

o Architecture en couches;

o Accès aux base de données;

o cRuD : traitements de Lecture (R) et Suppression (D)

o Représentation orientée objets du résultat d’une requête à une base de données relationnelle;

o Implémentation de règles de gestion;

o Modélisation des données métier par des classes spécialisées;

o Interface IHM avec comportements, règles de validation et de complétude.

Page 4: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 4 sur 74 v01.07

Organisation

1. Analyse du cahier des charges;

2. Organisation du projet à partir du cahier des charges (rôles);

3. Analyse des responsabilités;

4. Architecture en couche;

5. Etude des classes (code) :

o De la couche «domaine»; o De la couche «base»; o De la couche «metier»; o De la couche «presentation».

6- Interface IHM (code) : o Comportement o Validation o Complétude

7. Test de l’application

Page 5: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 5 sur 74 v01.07

1 : ANALYSE DU CAHIER DES CHARGES

Page 6: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 6 sur 74 v01.07

Cahier des charges

Développer une application de gestion des emprunts de bandes dessinées dans une bibliothèque;

Les buts métiers de cette application sont :

o Lister tous les membres de la bibliothèque;

o Consulter pour chacun d’eux la liste de leurs emprunts de bandes dessinées;

o Valider le retour des bandes dessinées empruntées;

o Disposer des informations sur les dessinateurs de chaque bande dessinée.

La persistance des données est assurée par un SGBDR.

Page 7: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 7 sur 74 v01.07

Maquette de l’IHM

Liste des membres de la bibliothèque

Liste des livres empruntés par le membre sélectionné

Données sur le dessinateur de la BD sélectionnée dans la liste des emprunts

Sélectionnable

Sélectionnable

Un livre rendu est supprimé de la liste des emprunts

Fin de l’application. Cette interface se ferme.

Page 8: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 8 sur 74 v01.07

Règles de gestion (1/3)

Démarrage o A l’ouverture de l’application, la liste des membres est chargée et

présentée dans la zone de la liste des membres de l’IHM; o Les noms sont en majuscules et les prénoms en minuscules; o La liste est classée par ordre alphabétique des membres par leurs

NOM et PRENOM; o Le premier membre est sélectionné et la liste de ses emprunts est

présentée dans la zone des emprunts de l’IHM.

Logique IHM o La sélection d’un membre provoque l’affichage de la liste de ses

emprunts; o Cette sélection modifie le libellé de la zone de emprunt :

"Emprunt de " suivi du nom du membre emprunteur. o Les emprunts sont classés par ordre alphabétique des titres; o Le premier emprunt de la liste est sélectionné et les données sur

l’auteur est affiché dans la zone des données auteurs; o La sélection d’un emprunt provoque la présentation des données de

l’auteur : nom auteur et pseudonyme.

Page 9: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 9 sur 74 v01.07

Règles de gestion (2/3)

Cas d’utilisation o Rendre un ouvrage

Le bouton [Rendre] est actif si un ouvrage est sélectionné; Appuyer sur [Rendre] provoque la suppression de l’ouvrage

dans la liste des ouvrages empruntés par le membre; Une fois l’ouvrage retiré de la liste, le premier ouvrage de la liste

restante est sélectionné (et les données de l’auteur sont ajustées);

S’il ne reste plus d’ouvrage, le bouton [Rendre] est désactivé; La suppression d’un emprunt met à jour la base de données.

o Terminer l’application Le bouton [Fermer] termine l’application; Le bouton [Fermer] est toujours actif; La fermeture de l’application assure une gestion correcte de la

finalisation de la connexion à la base de donnés; L’appuis sur le bouton [Fermer] ferme la fenêtre IHM et termine

l’application correctement.

Page 10: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 10 sur 74 v01.07

Règles de gestion (3/3)

Validité des données

o Rien à valider

Complétude

o Rien à tester

Page 11: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 11 sur 74 v01.07

Modèle physique de la base de données

Le SGBDR n’est pas fixé; Pour cette analyse, nous utiliserons MySql.

Association forte : Si un membre est supprimé, Alors tous ses emprunts également

Association forte : Si une BD est supprimée, Alors tous ses emprunts également

Association faible: Si une BD est supprimée, Alors pas son dessinateur

Relation n:m Un membre peut emprunter plusieurs BD; Une BD peut être empruntée par plusieurs membres. Remarque : une BD ne peut pas être empruntée physiquement par plusieurs membres en même temps. Mais la bibliothèque peut avoir plusieurs exemplaires de chaque ouvrage. C’est pourquoi dans cet exercice, il est possible de faire plusieurs emprunts du même ouvrage.

Clés principales de la table et étrangères

Page 12: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 12 sur 74 v01.07

Architecture en couche

1. Repérer les objets du domaine;

2. Réaliser les connexions à la base;

3. Sur la base du schéma physique, créer les classes permettant de populer les objets du domaine;

4. Mettre en place les structures pour la gestion des données au niveau du métier;

5. Implémenter les procédures, les traitements et les calculs métiers ;

6. Créer les IHM pour la présentation et la gestion des données par les utilisateurs;

7. Implémenter les validations, les comportement et les traitements spécifiques à l’interface utilisateur.

Le développement réel ne suit pas nécessairement tous ces points dans l’ordre

Page 13: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 13 sur 74 v01.07

2 : ORGANISATION DU PROJET

Page 14: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 14 sur 74 v01.07

Introduction

Pour élaborer l’organisation du projet :

o Faire un inventaire des entités par couche : du domaine; de la base; du métier; de la présentation.

o Décrire : leurs rôles leurs points clés.

Page 15: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 15 sur 74 v01.07

Organisation des entités du domaine

Description des objets du domaine

o Membre Entité centrale de l’application; Représente un acteur humain qui utilise le service d’emprunt

de la bibliothèque; o Dessinateur

Représente un acteur humain qui est auteur de bandes dessinées; o BD (bande dessinée)

Représente l’objet de l’emprunt d’un membre; Référence avec un dessinateur(NoDess);

o Emprunt L’entité emprunt est l’expression de la relation n-m entre les

membres et leurs emprunts; Référence avec un membre (NoMembre); Référence avec une BD (NoBD); Aucune information particulière n’est ajoutée à cette relation.

Page 16: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 16 sur 74 v01.07

Organisation des entités de la base Description des objets d’accès à la base de données

o Objets de connexion «standards» Outils : driver, profil utilisateur, chaîne de connexion

• Cette classe est spécifique à chaque type de SGBD et à chaque utilisateur d’accès aux bases de données. Est placé dans un package spécifique.

ConnexionBase : paramètre la base de données, crée et fourni une référence sur la connexion, ferme la connexion;

• Cette classe est un singleton (une seule connexion par base et application).

o MembreDao S’occupe de toutes les opérations pour fournir une liste d’objets de classe

«Membre» populée à partir de la base de données (table Membre).

o DessinateurDao S’occupe de toutes les opérations pour fournir une liste d’objets de classe

«Dessinateur» populée à partir de la base de données (table Dessinateur).

o BDDao S’occupe de toutes les opérations pour fournir une liste d’objets de classe

«BD» empruntées par un membre particulier à partir de la base de données; S’occupe de toutes les opérations pour supprimer dans la base de donnée

un emprunt donné par les références d’un membre et de la BD empruntée. (DAO

: da

ta a

cces

s ob

ject

)

Page 17: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 17 sur 74 v01.07

Organisation des entités du métier

Description des objets du métier

o Liste des membres Gestion de la liste des membres sous la forme d’une collection d’objets de

classe Membre; Offre les services :

• Permet de récupérer le membre courant (membre sélectionné); • Permet de rechercher un membre par sa référence; • Connaître la taille de la liste, vérifier si un objet appartient à la liste, supprimer

/ ajouter l’objet courant, supprimer / ajouter un objet.

o Liste des emprunts Gestion de la liste des emprunts d’une BD d’un membre sous la forme

d’une collection d’objets de classe BD; Offre les services :

• Permet de récupérer en tout temps la BD courante (BD sélectionnée); • Permet de rechercher avec sa référence une BD empruntée par le membre

courant; • Permet de rendre une BD empruntée par le membre courant (bd donné par sa

référence);

• Connaître la taille de la liste, vérifier si un objet appartient à la liste, supprimer / ajouter l’objet courant, supprimer / ajouter un objet.

Page 18: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 18 sur 74 v01.07

Organisation des entités de présentation

Description des objets de l’interface IHM

o Main Entité principale de l’application; Démarre l’IHM principal.

o FrmMain

Interface IHM principale; Données

• Liste des membres; • Liste des emprunts du membre sélectionné; • Informations sur les dessinateurs de la BD sélectionnée.

Actions • Sélectionner un membre; • Sélectionner une BD; • Supprimer un emprunt; • Fermer l’application.

Complétude (non pertinent ici)

Validité (non pertinent ici)

(IHM

: Int

erfa

ce H

omm

e M

achi

ne (o

u G

UI))

Page 19: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 19 sur 74 v01.07

3 : ANALYSE DES RESPONSABILITÉS

Page 20: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 20 sur 74 v01.07

Responsabilité des entités du domaine

Concerne les classes : o Membre, Dessinateur, BD.

Ces classes du domaine sont responsables de : o Des données qu’ils transportent (entre autres : accesseurs); o De mettre à disposition des comparateurs :

Egalité ; Ordonnancement (si applicable).

o Permettre à la couche «base» de les instancier, de les initialiser avec des valeurs ainsi que de les gérer;

o Permettre à toutes les couches de les utiliser.

Ces classes du domaine ne sont pas responsables de : o Assurer la cohérence entre leurs données transportées et les

données de la base de données; o Assurer que les opérations réalisées sur leur contenu ont un

sens, ou même une cohérence, avec le traitement en cours.

Page 21: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 21 sur 74 v01.07

Responsabilité des entités de la base

Concerne les classes : o Outils et ConnexionBase.

Ces classes sont responsables de : o Gérer les données de l’accès SGBD et à la base de données

(! Données confidentielles visibles en claires dans le code); o Créer et initialiser une connexion à la base de données; o Fournir une référence sur un objet «Connection» prêt à l’emploi; o Garantir qu’une seule connexion ne soit réalisée (singleton); o Permettre de fermer la connexion; o Informer le client des problèmes de connexion (exception);

Ces classes ne sont pas responsables de :

o Gérer les requêtes; o Gérer les objets métier; o Gérer les traitements métiers; o Gérer les données.

Page 22: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 22 sur 74 v01.07

Responsabilité des entités DAO (D

AO :

data

acc

ess

obje

ct)

Concerne les classes : o MembreDao, DessinateurDao, BDDao.

Ces classes sont responsables de : o Accéder à la base de données via les objets de connexion; o Populer leurs structures internes avec ces données reçues; o Mettre à disposition des traitements techniques sur ces

données (pas de traitement métier à ce niveau); o Mettre à disposition des traitements CRUD

(Create, Read, Update, Delete).

Ces classes ne sont pas responsables de : o La sémantique métier des données; o La synchronisation entre la base de données et leurs données

internes : sauf si explicitement spécifié.

Page 23: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 23 sur 74 v01.07

Responsabilité des entités métier

Concerne la classe : o ListeMembres.

Cette classe est responsables de : o Créer la liste des membres quelle qu'en soit la source; o Fournir la référence sur le membre en cours de traitement; o Fournir la référence sur un membre donné par son identifiant; o Permettre la gestion de la liste des membres :

Rechercher, taille, position; ajouter / supprimer : avec implication dans la base de données.

Cette classe n’est pas responsables de :

o La validité de la gestion des modifications des données des objets dont la référence a été fournie;

o La cohérence des données métiers; o La cohérence des données après des traitements métier.

Page 24: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 24 sur 74 v01.07

Responsabilité des entités métier BD

: ba

nde

dess

inée

Concerne la classe :

o ListeBDMembres.

Cette classe est responsables de : o Créer la liste des BD empruntées par un membre donné par son

identifiant, quelle qu'en soit la source; o Fournir la référence sur la BD en cours de traitement; o Fournir la référence sur une BD empruntée par le membre courant

(BD donnée par son identifiant); o Permettre la gestion de la liste des BD empruntées par le membre

courant : Rechercher, taille, position; ajouter / supprimer : avec implication dans la base de données.

Cette classe n’est pas responsables de : o La validité de la gestion des modifications des données des objets

dont la référence a été fournie; o La cohérence des données métiers; o La cohérence des données après des traitements métier.

Page 25: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 25 sur 74 v01.07

Responsabilité des entités de présentation

Concerne la classe : o Main.

Cette classe est responsables de : o Faire démarrer l’application; o Afficher l’IHM principal; o Terminer l’application.

Cette classe n’est pas responsables de :

o Gérer les bases de données; o Gérer les données; o Gérer les interactions utilisateur.

Page 26: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 26 sur 74 v01.07

Responsabilité des entités de présentation

Concerne la classe : o FrmMain.

Cette classe est responsable de : o Présenter les données; o Gestion du comportement des contrôles; o Initialiser le chargement des données; o Assurer les validations, la complétudes des saisies; o Terminer l’application.

Cette classe n’est pas responsable de :

o La gestion des bases de données; o La gestion de la persistance et de la mise à jour technique; o La gestion métier des traitements ou des données.

Page 27: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 27 sur 74 v01.07

4 : ARCHITECTURE

Page 28: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 28 sur 74 v01.07

Classes du domaine

Les entité métiers sont : o Membre / Dessinateur / BD

Entité structurelle (pas modélisée par une classe explicite) o Emprunt : est utilisée au dans les opérations métier

domaine

Page 29: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 29 sur 74 v01.07

Classes de gestion de la base de données

JDBC, Pilote et connexion

SGBD

Page 30: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 30 sur 74 v01.07

Classes DAO

Classe de gestion des données application sous forme de structures de liste d’objets

(DAO : data access object)

mysql

base

Méthode mettant à jour la base de données (table : emprunt)

Page 31: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 31 sur 74 v01.07

Classes métier (données)

Classe de mise à disposition des données au niveau du métier (abstraction complète des sources et des aspects techniques de population de ces structures ainsi que des mises à jour de la base de données). metier

Généralisions des attributs et des méthodes appartenant purement à la gestion de listes. Cette factorisation permet de définir une classe générique parente de toutes les classes métier gérant des listes d’objets. Instancier cette classe n’a pas de sens, c’est pourquoi elle est déclarée comme abstraite.

Les classe de mise à disposition des données intègrent toutes la logique métier sur ses données. Par exemple ListeDBMembre se charge de gérer le «rendu» des bandes dessinées.

Page 32: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 32 sur 74 v01.07

Relations classes base-domaine-métier

Vue transversale des relations entre les classes des couches base – domaine - métier

base domaine metier

Agrégation implémentée par une liste d’objets (ArrayList)

Page 33: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 33 sur 74 v01.07

Classes présentation (vue générale)

Vue générale IHM et classes de gestion des données au niveau métier.

(IHM: Interface Homme Machine (ou GUI))

metier presentation

Classe de l’application. C’est de sa responsabilité de démarrer l’IHM.

Con

trôle

s IH

M

Actio

ns IH

M

Actio

ns IH

M

Page 34: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 34 sur 74 v01.07

5.1 : ETUDE DES CLASSES Codes couche «domaine»

Page 35: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 35 sur 74 v01.07

Intégration

Les objets du domaine de cette application n’ont pas de comportements particuliers;

Leur rôle est de mettre à disposition de toutes les couches de l’application les données métiers;

Aucun des objets du domaine ne peut être «vide», ils contiennent la donnée qui a servi à leur instanciation;

Ces données métier sont présentées sous la forme d’objets dont le contenu et le comportement sont entièrement :

o Maîtrisables : accesseurs (get / set);

o Homogène : utilisation de ces classes dans toute l’application.

Page 36: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 36 sur 74 v01.07

Services

Les services :

o Membre Construction avec les données d’un membre; Obtenir le n° du membre : getNoMembre; Obtenir le nom du membre : getNom; Test d’égalité (sur le n° du membre) : equals.

o BD (bande dessinée) Construction avec les données d’une BD et une réf. sur un dessinateur; Obtenir le n° de la BD : getNoBD; Obtenir le titre de la BD : getTitre; Obtenir la référence sur le dessinateur: getDessinateur; Test d’égalité (sur le n° de la BD) : equals.

o Dessinateur Construction avec les données d’un dessinateur; Obtenir le n° du dessinateur : getNoDess; Obtenir le nom du dessinateur: getNom; Obtenir le pseudo du dessinateur: getPseudo; Test d’égalité (sur le n° du dessinateur) : equals.

Page 37: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 37 sur 74 v01.07

Codes : Membre

Pas de constructeur par défaut

Place la classe dans sa couche par la définition de son package. Rappel : le fichier de la classe doit être situé dans une structure de dossiers identique à celle de la description du package. Par exemple ici : il existe un sous dossier du projet nommé «domaine» qui contient le fichier «Membre.class» / «Membre.java»

Accesseurs en lecture seule

Compare deux objets sur un critère métier et non pas sur un critère technique.

Assure le contrôle sur les données

Page 38: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 38 sur 74 v01.07

Codes : BD (bande dessinée)

«equals» généré automatiquement Comparer et discuter : qui a la responsabilité de la validité des données ? qu’est-ce qui est pertinent à tester ? au niveau performance un test a un coût,

Page 39: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 39 sur 74 v01.07

Codes : Dessinateur

«this» car les noms de ses arguments sont identiques à ceux des données membres

Page 40: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 40 sur 74 v01.07

5.2 : ETUDE DES CLASSES Codes couche «base»

Page 41: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 41 sur 74 v01.07

Intégration

La classes «ConnexionBase» est unique est accessible par les couches : o Base o Métier o Présentation

C’est le point unique de l’application pour l’accès à une connexion sur une base de données;

Objet dit DAO : data access object;

Une application peut utiliser autant de connexions qu’elle a d’accès à des bases de données distinctes o Chaque connexion n’aura qu’une seule instance (singleton).

Page 42: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 42 sur 74 v01.07

Services

Les services :

o ConnexionBase Pas de construction : méthodes static; Obtenir une référence sur l’objet connexion (si n’existe pas création) : get; Libération des ressources et fermeture de la connexion : close.

o MembreDao Pas de construction : méthodes static; Obtenir une référence sur la liste des membres (ordre des noms) : getListeMembres.

o BDDao Pas de construction : méthodes static; Obtenir une référence sur la liste des BD empruntées par un membre: getListeBD; Suppression d’un emprunt fait par un membre : removeBDMembre.

o DessinateurDao Pas de construction : méthodes static; Obtenir une référence sur un dessinateur : getDessinateur.

Page 43: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 43 sur 74 v01.07

Codes : Outils

Les classes de connexion

Chaîne de connexion dépendant du SGBD

Réalisation de la connexion et retourne une référence sur l’objet «Connection» initialisé.

Les données d’accès au SGBD. ! confidentielles

Le package déterminant le SGBD spécifique

Si la connexion échoue : une exception est levée, c’est de la responsabilité du client de la traiter

Pas besoin d’instancier la classe. A considérer comme un service.

Page 44: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 44 sur 74 v01.07

Codes : ConnexionBase (1/3)

La référence sur la connexion est conservée une fois l’objet instancié (Singleton)

Le nom de la base de données doit être connu de «ConnexionBase»

Constante

Page 45: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 45 sur 74 v01.07

Codes : ConnexionBase (2/3)

Demande une référence sur l’objet de connexion

C’est le client (précisément cette classe) qui est responsable de gérer les problèmes de connexion. En effet, c’est lui seul qui sait et décide de l’action à entreprendre si la connexion a échoué

Soit la chaîne de connexion est incorrecte, Soit le driver n’est pas installé ou absent

Erreur d’accès à la base. Principalement dû à des paramètres de connexion erronés

Personne d’autre que ConnexionBase peut établir une connexion : singleton

Page 46: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 46 sur 74 v01.07

Codes : ConnexionBase (3/3)

Si la connexion n’existe pas, ne rien faire de spécial

Gestion du pattern Singleton. SSI l’instance de connexion n’existe pas : la créer. Dans tous les cas, rendre une référence sur l’objet de classe «Connection» initialisé.

Fermer la connexion ET supprimer la référence (garbage collector)

C’est le client (précisément cette classe) qui est responsable de gérer les problèmes avec la connexion. En effet, c’est lui seul qui sait et décide de l’action à entreprendre en cas de problème

Page 47: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 47 sur 74 v01.07

Codes : MembreDao

Classe de la couche «domaine»

Classes pour la gestion de l’accès SGBD et de base de données

Recherche des membres dans base de données

Parcours la liste des résultats et crée un objet par enregistrement. Chaque objet est ensuite placé dans la liste.

! Fermer le «Statement» et pas a connexion

Page 48: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 48 sur 74 v01.07

Codes : BDDao (1/2)

Structure de stockage de objets «bande dessinée» Crées sur la base du résultat de la requête

Les classes de connexion

Les classes de la couche «domaine»

Création et initialisation des objets «bande dessinée»

Retourne une référence sur la liste

Page 49: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 49 sur 74 v01.07

Codes : BDDao (2/2)

Requête de suppression de l’enregistrement de l’emprunt. Remarque : l’emprunt est supprimé, mais ni la bande dessinée, ni le membre.

Page 50: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 50 sur 74 v01.07

Codes : Dessinateur

Même s’il n’y a qu’un seul enregistrement, il faut placer le curseur en première position.

Page 51: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 51 sur 74 v01.07

5.3 : ETUDE DES CLASSES Codes couche «métier»

Page 52: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 52 sur 74 v01.07

Intégration

Intention o Représenter les données sous une forme, ou des formes, exploitables

par les opérations métiers; o Mettre à disposition des services métiers spécifiques au domaine de

l’utilisateur et des objectifs de l’application; o Masquer la complexité des opérations aux clients métiers; o Masquer la/les sources de données.

Moyen o Mettre à disposition un ensemble de classes couvrant tous les aspects

métiers relatifs aux données ainsi que leurs traitements; o Créer une abstraction globale (si possible) de structures partagées

par toutes les classes.

Service attendu o Présenter à l’application les opérations métiers couvrant les besoins utilisateur

ainsi que ceux du cahier des charges sans s’occuper des aspects techniques.

Page 53: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 53 sur 74 v01.07

Services

Les services :

o ListeObjects (abstrait : propose des services généraux de gestion de liste)

Le constructeur est de la responsabilité des classes enfants; Conserve une référence sur l’objet courant; Gestion de la position et de l’accès : getPos / setPos / getCourant / get; CRUD : add / del / delCourant; Général : size / contains.

o ListeMembres Construction : MembreDao.getListeMembres(); Obtenir une référence sur le membres courant : getCourant; Rechercher un membre par son n° de membre : get.

o ListeBDMembre Construction sur la base d’un membre (m) : BDDao.getListeBD(m); Obtenir une référence sur la bande dessinée courante : getCourant; Rechercher une BD empruntée par un membre par son n° de BD: get; Suppression d’un emprunt fait par un membre : rendre.

Page 54: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 54 sur 74 v01.07

Codes : ListeObjects (1/2)

Instancier cette classe pour elle-même n’a pas d’intérêt. Seuls les enfants ayants spécifiés les attributs et les méthodes utiles pour l’application pourront le faire. C’est pourquoi la classe est déclarée «abstraite».

Nous conservons la position courante plutôt qu’une référence sur l’objet courant. La référence à l’objet étant présente dans la liste, il est possible de la retrouver avec la position (getCourant). En fait les deux approches sont possibles et le choix dépend des situations particulières. Pour la gestion d’une liste dans un contrôle IHM, la position est pertinente (car elle correspond à celle de la liste). Dans d’autres situations, la conservation de la référence peut être mieux adaptée (on peut aussi trouver la position à partir de la référence dans une collection).

Assurer que k soit bien défini et pas hors intervalle

Valeur «impossible» pour une liste = non définie.

«protected» pour être accessible par les enfants (les classes dérivées).

«final» pour ne pas pouvoir être redéfini par les enfants (les classes dérivées).

Page 55: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 55 sur 74 v01.07

Codes : ListeObjects (2/2)

Mise à jour de la position courante (la liste est triée). Il faut veiller au cas où l’on se supprime soit même («pos == k»). Auquel cas, il n’y a plus de position définie. Si on supprime en-deçà de la position courante («pos > k»), alors «on remonte» et il faut ajuster la position. Sinon rien à faire, la position courante n’a pas bougé.

Assurer que k soit bien défini et pas hors intervalle

Mise à jour de la position courante (la liste est triée). Il faut veiller au cas où l’on ajoute un élément en-deçà de la position courante («pos >= k»). Cette position aura «bougé» avec la liste, il faut donc ajuster la position. Sinon rien à faire, la position courante n’a pas bougé.

Page 56: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 56 sur 74 v01.07

Codes : ListeMembres «liste» est un attribut défini dans la classe parente (protected)

La position courante est définie et gérée dans la classe parente («ListeObjects»)

Classe parente («super») doit être spécifiée, car la méthode est redéfinie (même nom et même signature).

Récupère une référence sur la liste des membres classée par les noms. Dont la source est une requête dans la base de données.

«Type guard» pour annoncer au compilateur quelles classes est attendue (question de confiance). Car la «liste» nous retourne une référence «Object».

Page 57: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 57 sur 74 v01.07

Codes : ListeBDMembre La liste des bandes dessinées empruntées par un membre doit être construite par rapport au membre concerné. C’est pourquoi il est essentiel de conserver une référence sur ce membre.

Le constructeur oblige faire référence sur un membre sur lequel la liste de BD empruntées sera construite. Il est à noter qu’une référence null pourrait poser des problèmes qui seront gérés dans des couches plus basses par des exceptions.

Après avoir retiré l’emprunt dans la base de données, il ne faut pas oublier de mettre à jour la liste. En effet, ce sont deux structures différentes.

Page 58: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 58 sur 74 v01.07

5.4 : ETUDE DES CLASSES Codes couche «présentation»

Page 59: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 59 sur 74 v01.07

Intégration

Intention o Au niveau de l’interface homme machine, présenter les

données et les moyens de leurs gestion par un utilisateur; o Les données doivent pouvoir être manipulées par l’utilisateur

sans qu’il se soucie des aspects techniques;

Moyen o Utilisation des classes principalement des la couches métier et

domaine pour les accès et la gestion des données.

Service attendu o Présenter à l’utilisateur des données métier; o Permettre à l’utilisateur des interactions avec les données pour

répondre à ses besoins métier pris en charge par l’application.

Page 60: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 60 sur 74 v01.07

Services

Les services :

o class Main Classe de démarrage de l’application : instancie et affiche l’IHM; Possibilité de passer des paramètres de configuration.

o class FrmMain IHM présentant les données et mettant à disposition les opérations métier; Constructeur : initialise les composants / charge les listes; selectMembre : s’active à la sélection d’un membre et charge les données; selectBD : s’active à la sélection d’une BD et charge les données; selectPremiereBD : se positionne automatiquement sur la première BD; chargerLstMembres : charge la liste des membres; finApplic : libère les ressources et ferme la connexion à la base de données.

Page 61: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 61 sur 74 v01.07

Codes : Main

Présente la fenêtre IHM

Argument(s) de la ligne de commande (Ici pas utilisés)

Démarrage de l’application

Classe de la fenêtre principale

Page 62: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 62 sur 74 v01.07

Codes : FrmMain (1/5)

Page 63: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 63 sur 74 v01.07

Codes : FrmMain (2/5)

Le «Frame» pour l’IHM

Référence sur l’objet de gestion de la liste des Membres

Référence sur l’objet de gestion de la liste des Emprunts des Membres

Initialisation de l’application

Initialisation de données

Page 64: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 64 sur 74 v01.07

Codes : FrmMain (3/5)

Le fait se sélectionner la première ligne, une mise à jour de tous les autres contrôles de l’HM est provoquée.

Création de la liste des membres. Cette liste est populée avec les données issues de la base de données.

Popule le contrôle IHM «lstMembres»

Si pertinent, place la sélection active sur la première ligne

Page 65: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 65 sur 74 v01.07

Codes : FrmMain (4/5)

Positionner la sélection sur la ligne demandée dans l’IHM

Assurer que la sélection soit valide

Si la sélection n’est pas valide, lever une exception de classe «IllegalArgumentException» En commentant l’erreur

Positionner le Membre courant dans la structure de données

Récupérer une référence sur le membre courant.

Mise à jour du libellé de la zone «Emprunts»

Etant donné que le Membre a changé, sa liste d’emprunts doit être mise à jour dans l’IHM.

Remplissage de la liste des emprunts.

Présélectionner la première BD empruntée, ce qui aura pour effet de mettre à jour les données du dessinateur.

Bien que dans l’application, nous sommes sûr de l’indice, nous désirons nous protéger lors de développements ultérieurs.

Page 66: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 66 sur 74 v01.07

Codes : FrmMain (5/5)

Rechercher le dessinateur et afficher ses données sur l’interface IHM

Assurer la validité de la sélection

Positionner les listes sur la bande dessinée «ind» qui devient la BD courante

.getCourant() retourne un objet «bande dessinée» (classe «BD»)

.getDessinateur() retourne un objet de classe «Dessinateur» issu directement de la bande dessinée.

Gestion des contrôles IHM pour assurer un comportement cohérent

Bien que dans l’application, nous sommes sûr de l’indice, nous désirons nous protéger lors de développements ultérieurs.

Page 67: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 67 sur 74 v01.07

6 : INTERFACE IHM Codes

Page 68: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 68 sur 74 v01.07

Codes : FrmMain (1/4)

Libère es ressource base et ferme la connexion à la base de données.

Libère es ressource application et quitte.

Actions fermant l’application : • fermeture de la fenêtre IHM. • bouton [Fermer]

Page 69: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 69 sur 74 v01.07

Codes : FrmMain (2/4)

Nouvelle sélection (première si possible) pour mettre à jour les données de l’interface IHM.

Suppression de la ligne dans la liste du contrôle IHM.

Actions de rendu d’une BD : • bouton [Rendre]

Suppression dans la structure de données et également dans la base de données.

Il faut toujours pendre en compte les deux structures : • Interface IHM; • Données métier et base de données.

Page 70: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 70 sur 74 v01.07

Codes : FrmMain (3/4)

Déclenchement • de la sélection de la ligne Membre; • de la mise à jour de la liste des emprunts du membre; • de la sélection de la première ligne Emprunt; • de la mise jour des données Dessinateur.

Actions de la sélection d’une ligne sur les contrôles listes : • liste [Membres]

Actions de la sélection d’une ligne sur les contrôles listes : • liste [Emprunts]

Déclenchement • de la sélection de la ligne Emprunt; • de la mise jour des données Dessinateur.

Page 71: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 71 sur 74 v01.07

Codes : FrmMain (4/4)

Les références sur les contrôles IHM

Page 72: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 72 sur 74 v01.07

7 : TEST DE L’APPLICATION

Page 73: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 73 sur 74 v01.07

PARTIE INTERACTIVE Questions - réponses

Page 74: Cours informatique 2015-2016 Contenu · 2015. 9. 26. · page 6 sur 74 v01.07 johann.sievering@edu.ge.ch Cahier des charges Développer une application de gestion des emprunts de

[email protected] page 74 sur 74 v01.07

FIN ANALYSE

HEG_634-1_AnalyseDiscussionCodeJDBC_(2014-2015)_FR_JSI_01.07d.pdf