Série JAVA II: "L’orienté objet en langage JAVA"

Exercice 1 :
1. Ecrire le programme "Banque.java" permettant d'implémenter la classe "Banque"
2. Ecrire un programme "test.java" pour :
·         Créer un compte : 1, 5000.75, "AB 1200"
·         Afficher les informations de ce compte
·         Afficher son solde
·         Déposer 500
·         Afficher les informations de ce compte
·         Afficher son solde
·         Retirer 200
·         Afficher les informations de ce compte
·         Afficher son solde
3. Refaire la question précédente de telle sorte que les informations du compte seront passées en argument

____________________________________________________________________________________________________
Solution :
public class banque {
            private int NCompte;
            private float Solde;
            private String CIN;
public banque(int NCompte,float Solde,String CIN){
            this.NCompte=NCompte;
            this.Solde=Solde;
            this.CIN=CIN;}
public int getn(){
            return NCompte;}
public void deposer(float Somme){
            Solde=Solde+Somme;}
public void retirer(float Somme){
            if(Solde<Somme)
                         System.out.println("SOLDE INSUFFISANT");
            else
            Solde=Solde-Somme;}
public float avoirSolde(){
            return Solde;}
public String avoirInf(){
            return("N° carte:"+CIN+ "\nsolde:"+Solde + "NCompte"+NCompte);}}
public class test {
            public static void main(String[] args) {
                         banque b = new banque(1,5000,"AB1200");
                         System.out.println(b.avoirInf());
                         System.out.println(b.avoirSolde());
                         b.deposer(500);
                         System.out.println(b.avoirInf());
                         System.out.println(b.avoirSolde());
                         b.retirer(7000);
                         System.out.println(b.avoirInf());
                         System.out.println(b.avoirSolde());}}
____________________________________________________________________________________________________
Exercice 2 :
Soit la classe prédéfinie dans "java.net"
class InetAddress{
public static InetAddress getLocalHost();
//retourne l'adresse Internet de la machine locale
public static InetAddress getByName(String);
//retourne l'adresse d'un machine à partir de son nom
public String getHostName();
//retourne le nom d'une machine à partir d'une adresse Internet
 }
1-Ecrire un programme "test.java" pour afficher l'adresse Internet et le nom d'une machine (locale ou distante). Evoquer le cas où la machine est donnée en argument
____________________________________________________________________________________________________
Solution :
import java.net.InetAddress;
public class test {
            public static void main(String[] args) throws Exception {
                        // TODO Auto-generated method stub
                        InetAddress adr=InetAddress.getLocalHost();
                        InetAddress adr2=InetAddress.getByName("iga-1");
                        String nom=adr.getHostName();
                        System.out.println("@de la machine local"+adr);
                        System.out.println("@de la machine a"+adr2);
                        System.out.println("le nom de la machine"+adr+"est:"+nom);}}
____________________________________________________________________________________________________
Exercice 3 :
Soit le diagramme de classes d'UML suivant :
1. Créer les classes "Personne.java" et "Salarie.java", sachant que la prime est
    calculée à la base de la formule suivante : prime = (5*Salaire*Nombred'enfant)/100
2. Ecrire un programme "test1.java" pour tester vos classes
____________________________________________________________________________________________________
Solution :
public class Personne {
protected int nbEnfants;
protected String nom;
public Personne(int nbEnfants,String nom) {
this.nbEnfants=nbEnfants;
this.nom=nom;}
public String getNom() {
return nom; }
public int getnbEnfants(){
            return nbEnfants; } }

public class Salarie extends Personne {
private float salaire;
public Salarie(int nbEnfants,String nom,float salaire) {
super(nbEnfants,nom);
this.salaire=salaire; }
public String getInf() {
return "le nom:"+super.getNom()+" le nombre d'enfants:"+nbEnfants; }
public float getSalaire(){
return salaire; }
public float getPrime(){
            return (5*salaire*nbEnfants)/100;}}

public class Test {
            public static void main(String[] args) {
                        // TODO Auto-generated method stub
                       
                                   Personne p = new Personne(5,"ali");
                                   Salarie s = new Salarie(5,"ali",15000);
                                   Salarie s1 = new Salarie(2, "amal",5000);
                                   System.out.println(s.getInf());
                                   System.out.println("le salaire:"+s.getSalaire());
                                   System.out.println("la prime:"+s.getPrime());

                                   System.out.println("la prime de:"+s1.getNom()+" "+s1.getPrime()); }}


Lire la suite...

Introduction aux bases de données

I. Définitions
I.1. Définition générale 
Une base de données est un ensemble organisé d’information avec un objectif commun.

I.2. Définition –Base de données informatisée-
Une base de données informatisée est un ensemble structuré de données enregistrées sur des supports accessibles par l’ordinateur, représentant des informations du monde réel et pouvant être interrogées et mises à jour par une communauté d’utilisateurs.

II. Modèle de base de données 
Les bases de données existent sous plusieurs modèles, chaque modèle est caractérisé par une logique  d’organisation de données différentes des autres modèles:

Le modèle hiérarchique :
Une forme de gestion de base de données qui lie les enregistrements dans une structure arborescente de façon à ce que chaque enregistrement n’ait qu’un seul possesseur.
Exemple : une paire de chaussures n’appartient qu’à une seule personne
Ce modèle a pour inconvénient des limitations internes qui ne permettent pas de décrire des structures existantes dans le monde réel.
Exemple : la relation patients médecins ; un patient peut avoir plusieurs médecins qui le soigne, et un médecin est responsable de plusieurs patients.

Le modèle réseau :
Le modèle réseau lie les enregistrements sans aucune restriction. Pour retrouver une donnée dans une telle modélisation, il faut connaitre le chemin d’accès (les liens) ce qui rend les programmes dépendants de la structure de données.

Le modèle relationnel :
Une base de données relationnelle est une base structurée suivant les principes de l’algèbre relationnelle qui repose sur la notion d’ensembles. On peut représenter chaque ensemble sous forme d’une table relationnelle.
Un grand avantage de ce modèle est que l’utilisateur n’a pas à savoir où sont déposées physiquement les données et il peut les utiliser sans problème. C’est un grand avantage par rapport au modèle hiérarchique ou réseau.

Le modèle objet :
Une base de données structurée selon les principes de la modélisation objet. Un objet représente un concept, une idée ou toute entité du monde physique. Il possède une structure interne représentée par la base de données et un comportement implémenté grâce à un programme informatique.
L’avantage majeur de ce modèle est le fait que les programmes sont directement issus de la structure des données de la base ; c’est une approche orientée donnée.

III. SGBD

III.1. Définition et principe de fonctionnement
Un SGBD, système de gestion de base de données, est un logiciel de haut niveau qui permet de manipuler les informations stockées dans une base de données. Ce système doit assurer la gestion et l’accès à une base de données et doit permettre l’ajout, la modification et la recherche de données.

III.2. Objectifs
1/ l’indépendance physique :
La façon dont les données sont définies doit être indépendante des structures de stockage utilisées.
2/ l’indépendance logique
Un même ensemble de données peut être vu différemment par des utilisateurs différents. Toutes ces visions personnelles des données doivent être intégrées dans une vision globale.
3/ l’accès aux données
L’accès aux données se fait par l’intermédiaire d’un langage de Manipulation de données LMD.
Le LMD doit être optimisé ; minimiser le nombre et le temps d’accès disques, et tout cela de façon totalement transparente pour l’utilisateur.
4/l’administration centralisée des données (l’intégration)
Toutes les données doivent être centralisées dans un réservoir unique commun à toutes les applications.
5/ la non redondance des données
Afin d’éviter les problèmes lors de la mise à jour, chaque donnée ne doit être présente qu’une seule fois dans la base.
6/ la cohérence des données
Les données sont soumises à un certain nombre de contraintes d’intégrité qui définissent un état cohérent de la base.
Les contraintes d’intégrité sont décrites dans le langage de description de données LLD.
7/ le partage des données
Il s’agit de permettre à plusieurs utilisateurs d’accéder aux mêmes données au même moment d’une manière transparente.
8/ la sécurité des données
Les données doivent pouvoir être protégées contre les accès non autorisés. Pour cela, il faut pouvoir associer à chaque utilisateur des droits d’accès.
9/ la résistance aux pannes
Lors d’une panne les données doivent rester intactes, sinon ils doivent être récupérer.

III.3. Niveaux de description de données ANSI/SPARC

Pour atteindre les objectifs ( surtout les deux premiers ), trois niveaux de description ont été définis par la norme ANSI/SPARC:



Lire la suite...

Exercices corrigés en Base de données


UNIVERSITÉ PARIS DAUPHINE
Exercices corrigés en  Base de données




Lire la suite...

Série UML VIII

Exercice 1:
Solution:
____________________________________________________________________________________________________________
Exercice 2:
Solution:

____________________________________________________________________________________________________________
Exercice 3:
Solution:
Lire la suite...

Série UML VII

Exercice 1:

Déterminer les cas d'utilisation d'un distributeur de billets. On considère les scénarios où un client désire retirer de l'argent en euros ou en dollars. Il faut traiter la situation où le stock de billets est insuffisant. On s'intéresse également à la procédure d'identification (de la carte et du client). 




Lire la suite...

Série UML VI

Exercice 1:
La bibliothèque de l’ENSTA répertorie l’ensemble des références de livres, périodiques, CD et DVD. 

La gestion de ces références et supportée par un système d’information. 

Il permet à tout utilisateur de rechercher chaque type de référence en fonction de son statut ou de son domaine. Le système offre également des services d’emprunt, de restitution, et de commande sous la responsabilité du bibliothécaire. Afin d’automatiser la commande de nouvelles références, le système communique avec le logiciel d’une centrale d’achat qui assure l’approvisionnement de la bibliothèque. 

Un utilisateur doit être abonné pour emprunter une référence. Dans le cas échéant, un abonnement est  réalisé lors du premier emprunt. Le système distingue trois catégories d’abonnés : les abonnés  occasionnels qui ont le droit d’emprunter une seule référence à la fois pour une durée de 15 jours, les abonnés fréquents qui ont le droit d’emprunter en même temps 4 références au plus pendant un mois, et les abonnés privilégiés qui ont le droit d’emprunter en même temps 8 références au plus pendant un mois. 

Chaque emprunt a une durée limitée définie par une date de début et une date de fin. Si un utilisateur ne rend pas dans les délais une référence empruntée, un message de rappel est engendré automatiquement par le système pour être visualisé par le bibliothécaire. 

1. Identifier les acteurs 
Identifier les acteurs d’un système d’information de bibliothèque. 

2. Identifier les cas d’utilisation de niveau utilisateur 
Identifier les cas d’utilisation de niveau utilisateur du système d’information de bibliothèque. 

3. Identifier les cas d’utilisation de niveau sous-fonction 
Soit les cas d’utilisation suivants : 
• avertir d'un retard ; 
• changer le statut d'une référence ; 
• chercher un CD ; 
• chercher le domaine ; 
• chercher un livre ; 
• chercher une référence ; 
• chercher le statut ; 
• commander une référence ; 
• emprunter une référence ; 
• entrer une référence en base ; 
• rendre une référence ; 
• s'authentifier ; 
• abonner. 
Représenter les relations entre les cas d’utilisation sans représenter les acteurs. 

Solution:
Légende : 
Acteur
Cas d’utilisation
[G] Généralisation de cas d’utilisation ; 
[I] Cas d’utilisation inclus ; 
[E] Cas d’utilisation étendu.

La bibliothèque de l’ENSTA répertorie l’ensemble des références de livres, périodiques, CD et DVD. 

La gestion de ces références et supportée par un système d’information. 

Il permet à tout utilisateur de rechercher [G]chaque type de référence en fonction de son [E]statut ou de son [E] domaine. Le système offre également des services d’emprunt, de restitution, et de commande sous la responsabilité du bibliothécaire. Afin d’automatiser la commande de nouvelles références, le système communique avec le logiciel d’une centrale d’achat qui assure l’approvisionnement de la bibliothèque. 

Un utilisateur doit être abonné pour emprunter une référence. Dans le cas échéant, un abonnement est réalisé lors du premier emprunt. Le système distingue trois catégories d’abonnés: les abonnés occasionnels qui ont le droit d’emprunter une seule référence à la fois pour une durée de 15 jours, les abonnés fréquents qui ont le droit d’emprunter en même temps 4 références au plus pendant un mois, et les abonnés privilégiés qui ont le droit d’emprunter en même temps 8 références au plus pendant un mois. 

Chaque emprunt a une durée limitée définie par une date de début et une date de fin. Si un utilisateur ne rend pas dans les délais une référence empruntée, un [E] message de rappel est engendré automatiquement par le système pour être visualisé par le bibliothécaire. 

1. Identifier les acteurs 


2. Identifier les cas d’utilisation de niveau utilisateur


3. Identifier les cas d’utilisation de niveau sous-fonction 


____________________________________________________________________________________________________

Exercice 2:
REPRESENTER LA SPECIFICATION DETAILLEE D’UN CAS D’UTILISATION
Représenter le diagramme de séquence correspondant à la rubrique de scénario nominale d’un cas d’utilisation :
1. Le client insère sa carte de crédit ;
2. Le distributeur vérifie la carte et demande le code pin ;
3. Le client entre son code pin et le valide ;
4. Le distributeur demande l’autorisation au service d’autorisation qui renvoie la limite autorisée de retrait ;
5. Le distributeur demande le montant désiré ;
6. Le client entre le montant ;
7. Le distributeur vérifie le montant et demande au client s’il désire un reçu ;
8. Le client confirme sa demande de reçu ;
9. Le distributeur éjecte la carte ;
10. Le client récupère sa carte ;
11. Le distributeur éjecte les billets et le reçu.

Solution :
____________________________________________________________________________________________________

Exercice 3:
MODELISER DES INTERACTIONS ENTRE CLASSES
Le diagramme suivant décrit la structure de classes d’un système informatique de bibliothèque
Représenter avec un diagramme de séquence le scénario suivant :
1. une classe externe demande un emprunt en précisant les identifiants de la référence empruntée et
de l’utilisateur emprunteur ;
2. le système vérifie que la référence existe ;
3. le système vérifie que l’utilisateur existe ;
4. le système vérifie que l’utilisateur dispose des droits nécessaires, dans le cas échéant, une exception est levée et la demande d’emprunt déclarée infructueuse ;
5. si l’utilisateur dispose des droits nécessaires, un emprunt est créé.

Solution :

____________________________________________________________________________________________________

Exercice 4:
Représenter les diagrammes de classe et de séquence du code JAVA suivant. 
public class Personne 

        Personne(String nom, String prenom) (); 

public class Annuaire 

        private Map utilisateurs = new HashMap() 
        public boolean ajouterPersonne(String nom, String prenom) 
        { 
                if(personneExiste(nom)) 
                { 
                return false ; 
                } 
                else 
                { 
                 utilisateurs.put(nom,new Personne(nom, prenom)) ; 
                 return true ; 
                 } 
         } 
        private boolean personneExiste(String nom) 
       { 
                if(utilisateurs.containsKey(nom) 
               { 
                return false ; 
               } 
                else 
               { 
                utilisateurs.put(nom,new Personne(nom, prenom)) ; 
                return true ; 
                } 
        
        public void supprimerPersonne(String nom) 
       { 
         utilisateurs.remove(utilisateurs[nom]) ; 
       } 

public class ApplicationEntreprise 

        private Annuaire annuaire ; 
        public ApplicationEntreprise(Annuaire annuaireEntreprise) 
        
                 annuaire = annuaireEntreprise ; 
        } 
        public static void main() 
       
         annuaire. ajouterPersonne (« Henri », « Jacques ») ; 
         annuaire.supprimerPersonne(« Henri ») ; 
       

}
Solution :

____________________________________________________________________________________________________

Exercice 5:
Traduire le diagramme ci-après en diagramme de communication. 
Représenter le diagramme de classe correspondant ainsi que les navigabilités.


Solution :
____________________________________________________________________________________________________

Exercice 6:
Représenter le diagramme d’activités du distributeur de cassettes correspondant au cas d’utilisation suivant. 
Seules les actions, nœuds de contrôle et transitions seront représentés.

• Identification du cas d’utilisation : 

    o Nom : emprunter un dvd 
    o Intention : décrire les étapes permettant au client d’un magasin d’emprunter un dvd via le distributeur automatique 
    o Acteurs principaux : client
    o Acteurs secondaires : néant 

• Fonctionnement du cas d’utilisation : 

    o Pré-condition : 
        - Le client possède une carte qu'il a achetée au magasin ; 
        - Le distributeur est alimenté en dvd. 

    o Scénarii : 
        
        - Scénario nominal : 
            a) Le client introduit la carte ; 
            b) Le système vérifie la validité de la carte [exception 1 : la carte est invalide]; 
            c) Le système vérifie que le crédit de la carte est supérieur ou égal à 1 euro ;
            d) Appel du cas « Rechercher un dvd » ; 
            e) Le client a choisi une dvd ; 
            f) Le système indique, d'après la valeur de la carte, pendant combien de temps (tranches de 6 heures) le client peut garder le dvd ; 
            g) Le système délivre le dvd [exception 2 : le dvd n’est pas pris] ; 
            h) Le client prend le dvd ; 
            i) Le système rend la carte au client [exception 3 : la carte n’est pas prise]; 
            j) Le client prend sa carte. 
           
        - Scénarii alternatifs : 
            c-1) Le crédit de la carte est inférieur à 1 euro :
            c-1a) Le système indique que le crédit de la carte ne permet pas au client d'emprunter un dvd ; 
            c-1b) Le système invite le client à aller recharger sa carte au magasin ; 
            c-1c) Le système éjecte la carte. 
        
        - Scénarii d’exception : 
    
            [exception 1] La carte introduite n'est pas valide : 
            e1-b) Le distributeur éjecte la carte. 
            
            [exception 2] Le dvd n’est pas pris par le client : 
            L'enchaînement démarre après le point 6 de la séquence nominale :
            e2-a) Au bout de 15 secondes le distributeur avale le dvd ; 
            e2-b) Le système annule la transaction (toutes les opérations mémorisées par le système sont défaites) ; 
            e3-c) Le distributeur éjecte la carte. 
           
            [exception 3] La carte n'est pas reprise par le client. 
            e3-a) Au bout de 15 secondes le distributeur avale la carte. 
            
            [exception 4] Le client a annulé la recherche (il n'a pas choisi de dvd) : 
            e4-a) Le distributeur éjecte la carte. 
   
    o Post-conditions : néant 
Solution :

____________________________________________________________________________________________________

Exercice 7:
Considérons le cas d’utilisation suivant : 

    • Identification du cas d’utilisation : 

        o Nom : commander un article 

    • Fonctionnement du cas d’utilisation : 

        o Pré-condition : 
            - Le client possède une carte qu'il a achetée au magasin ; 
            - Le distributeur est alimenté en dvd. 
       
        o Scénarii : 
            
            - Scénario nominal : 
                a) Le responsable de boutique vérifie la disponibilité de l’article ; 
                b) Le système de gestion de stock locale cherche les instances de l’article ; 
                c) Le responsable de boutique fait payer l’article ; 
                d) Le responsable de boutique facture le paiement et envoie la facture au système de la direction financière ;
                e) La direction financière archive la facture. 
            
            - Scénarii alternatifs : 
                b-1) Aucune instance de l’article n’est disponible : 
                b-1a) Le système crée et archive une réservation et commande l’article au système de gestion de stocks globale ; 
                b-1b) Le système de gestion de stock globale enregistre la 
                b-1c) Le système de gestion de stock globale envoie l’article ; 
                b-1d) Le système de gestion de locale enregistre l’article [exception 1 : article non retiré]. 
                c-1) Si l’achat de l’article est fait dans le cadre d’une réservation, rendre la réservation inactive. 

            - Scénarii d’exception : 
                [exception 1] Si l’article n’est pas retiré avant une semaine, la réservation est annulée. 

1. Identifier la liste des acteurs ; 
2. Représenter le diagramme de classe des objets échangés 
3. Représenter le diagramme d’activités correspondant au cas d’utilisation suivant. 
Cette description contiendra les lignes de vie et actions correspondantes de chaque classeur, les transitions, les nœuds de contrôles et nœuds d’objet.


Solution :
1. Identifier la liste des acteurs ; 
Responsable de boutique ; 
• Système de gestion de stocks locale ; 
• Système de gestion de stocks globale ; 

• Système de direction financière.

2.

3. Représenter le diagramme d’activités correspondant au cas d’utilisation suivant. 
Cette description contiendra les lignes de vie et actions correspondantes de chaque classeur, les transitions, les nœuds de contrôles et nœuds d’objet.

Lire la suite...