Centre National de l’Évaluation, des Examens et de l’Orientation Examen Nationa
Centre National de l’Évaluation, des Examens et de l’Orientation Examen National du Brevet de Technicien Supérieur Session Mai 2018 - Corrigé– Page 1 13 Filière : Développement des Systèmes d’Information (DSI) Durée : 4 heures Épreuve : Développement des Applications informatiques – DAI - Coefficient : 45 Dossier 1 : Gestion des branchements électriques. (14pts) Figure 1 : Diagramme de classes "Gestion des demandes de branchement" 1. Créer la classe« Demande »qui implémente les deux interfaces « Serializable », « Comparable » et qui contient : (0,5 pt) Deux constructeurs, le premier avec deux paramètres (référence et description), la date de la demande sera celle du système, et le deuxième avec trois paramètres qui permet d‟initialiser tous les attributs. (1 pt) La méthode « toString », afin de retourner une chaîne porteuse d‟informations sur une demande, la chaîne aura la forme suivante : (0,5 pt) Référence : xxxx, Description : xxxx, Date de la demande : jj/mm/aaaa. Les accesseurs pour tous les attributs de la classe. (0,5 pt) La méthode compareTo compare deux demandes par leurs références. (1 pt) import java.io.Serializable; import java.util.Date; public class Demande implementsSerializable,Comparable { private long ref; private Date dateDemande ; private String description; // constructeur avec deux paramètres (référence et description) publicDemande(long ref,String description) { this.ref = ref; this.description = description; this.dateDemande=new Date(); } Sujet de l’Examen National du BTS -Session Mai 2018 - Filière : Développement des Systèmes d‟information Épreuve : Développement d‟Applications Informatiques Page 2 13 //constructeur avec trois paramètres, public Demande(long ref, Date dateDemande, String description) { this.ref = ref; this.dateDemande = dateDemande; this.description = description; } // La méthode « toString » @Override public String toString() { SimpleDateFormatsdf =new SimpleDateFormat("dd/MM/yyyy") ; return "Reference:" + ref + ", Description :" + description +", Date de demande :" + sdf.format(dateDemande) ; } // Les accesseurs des tous les attributs de la classe public long getRef() { return ref; } public Date getDateDemande() { returndateDemande; } public String getDescription() { return description; } // La méthode compareTo @Override public intcompareTo(Object o) { Demande d= (Demande)o; if(ref>d.ref) return 1; else if(ref<d.ref) return -1; else return 0; } } 2. Donner le code de la classe d‟exceptionErreurDatequi permet de récupérer un message d‟erreur. (1 pt) public class ErreurDateextendsException{ public ErreurDate(String message) { super(message); } } Sujet de l’Examen National du BTS -Session Mai 2018 - Filière : Développement des Systèmes d‟information Épreuve : Développement d‟Applications Informatiques Page 3 13 3. Implémenter la classe « Permanente»qui contient : (0,5 pt) Un constructeur avec trois paramètres qui génère l‟exceptionErreurDatesi la date de la demande (date du système) est supérieur à la date d‟installation. Le message d‟erreur est : "Erreur de date ". (1 pt) La méthode « toString » permettant de retourner une chaîne sous la forme suivante : (1 pt) Référence : xxxx, Description : xxxx, Date de la demande : jj/mm/aaaa, Date d’installation : jj/mm/aaaa. import java.util.Date; public class Permanente extendsDemande{ private Date dateInstallation; // Un constructeur avec trois paramètres qui génère l’exception ErreurDate public Permanente(long ref,Stringdescription,DatedateInstallation) throwsErreurDate { super(ref, description); if(dateInstallation.before(new Date())) throw new ErreurDate("Erreur de date" ); this.dateInstallation = dateInstallation; } // La méthode « toString » @Override public String toString() { SimpleDateFormatsdf =new SimpleDateFormat("dd/MM/yyyy") ; return super.toString() + "Date d‟installation=" + sdf.format(dateInstallation) ; } } NB : Le code de la classe Provisoire est déjà implémenté. 4. Implémenter la classe « Client »qui contient : (0,5 pt) Un constructeur avec trois paramètres permettant d‟initialiser : (1 pt) - Le nom, l‟adresse et le téléphone. - L‟attributnbreClients est un attribut de classe qui permet de compter le nombre de clients instanciés. - Le Code est composé du nom du clientsuivi du numéro de l‟ordre de création de ce client. - L‟instanciation de la collection lesDemandes de type ArrayList. NB : on suppose que le constructeur de quatre paramètres est déjà implémenté. La méthode « toString » permet de retourner une chaîne sous la forme suivante : (1 pt) La méthode addDemande(Demande d) : permet d‟ajouter unenouvelle demande,donnée en paramètre, à notre collectionet de retourner l‟état de l‟opération. (1 pt) La méthode searchDemande(long ref) : permet de rechercher et retourner une demande en se basant sur sa référence, si cette demande n‟existe pas la méthode retourne nul. (1 pt) Code:xxxx, Nom : xxxx, Adresse : xxxx, Tel : xxxx Les demandes : Référence : xxxx, Date de la demande : jj/mm/aaaa, Date d’installation : jj/mm/aaaa ……… ………… ………… ……… ……… Référence : xxxx, Date de la demande : jj/mm/aaaa, Date de début : jj/mm/aaaa, Date de fin : jj/mm/aaaa ……… ………… ………… ……… ……… Sujet de l’Examen National du BTS -Session Mai 2018 - Filière : Développement des Systèmes d‟information Épreuve : Développement d‟Applications Informatiques Page 4 13 La méthode delDemande(long ref) : permet de supprimer unedemande de la collection en se basant sur sa référence et de retournerla demande qui vient d‟être supprimée. (1 pt) La méthode saveDemandes(String nomFichier) : permet de sauvegarder, dans un fichier d‟objets, les demandes permanentesde ce client. (1,5 pt) import java.io.*; importjava.util.*; public class Client { private String nom,code,adresse,tel; privatestaticintnbrClient=0; privateArrayList<Demande>lesDemandes; // Un constructeur avec trois paramètres public Client(String nom, String adresse, String tel) { nbrClient++; this.nom = nom; this.code=nom +nbrClient; this.adresse = adresse; this.tel = tel; lesDemandes=new ArrayList(); } // Un constructeur avec quatre paramètres public Client(String nom, String code, String adresse, String tel) { this.nom = nom; this.code = code; this.adresse = adresse; this.tel = tel; lesDemandes=new ArrayList(); } // toString @Override public String toString() { String chaine = "Nom :" + nom + ", Code :" + code + ", Adresse :" + adresse + ", Tel :" + tel + "\n Les demandes : \n"; for(Demande d : lesDemandes) chaine+=d.toString()+"\n"; return chaine; } // méthodeaddDemande public booleanaddDemande(Demande d){ return lesDemandes.add(d); } // méthodesearchDemande public Demande searchDemande(long ref) { for(Demande d : lesDemandes) if(d.getRef()== ref) return d; return null; } //méthode delDemande Sujet de l’Examen National du BTS -Session Mai 2018 - Filière : Développement des Systèmes d‟information Épreuve : Développement d‟Applications Informatiques Page 5 13 public Demande delDemande(long ref){ Demande d=searchDemande(ref); if(d==null) return null; else returnlesDemandes.remove(lesDemandes.indexOf(d)); } // méthode saveDemandes public booleansaveDemandes(String nomFichier) { try { ObjectOutputStreamob=new ObjectOutputStream(new FileOutputStream(nomFichier)); for(Demande d : lesDemandes) if(d instanceof Permanente)//d.getClass().getName().equals(“Permanente”) {ob.writeObject(d);ob.flush();} ob.close(); return true; } catch (IOException ex) { return false;} } } Dossier2 : Consultation des demandes des branchements. (8 pts) 1. Préciser le type d‟architecture client/serveur adopté par ce système et donner le modèle GartnerGroup correspondant. (1 pt) Architecture trois tiers Figure 2 : MLD "BD_Branchement" Sujet de l’Examen National du BTS -Session Mai 2018 - Filière : Développement des Systèmes d‟information Épreuve : Développement d‟Applications Informatiques Page 6 13 2. Donner le code de l‟interface « IntServiceBranchement» implémentée par la classe « ServeurDistant »afin d‟assurer le partage des méthodes de cette classe. (1 pt) public interface IntServiceBranchementextendsRemote{ public ArrayList<Demande>lireDemandes(String code) throwsRemoteException; public void lireClients() throws RemoteException; } 3. Compléter la classe « ServeurDistant » par l‟implémentationdes méthodes suivantes : Un constructeur permettant d‟instancier l‟attribut « liste » des clients et d‟établir une connexion à la base de données MYSQL. (1 pt) URL:jdbc:mysql://Administrateur:3306/bd_branchement User :root Password :DSI2018. En cas d‟échec de connexion, afficher un message d‟erreur. La méthode « lireDemandes » permet de retourner une collection des demandes dont lecode client est donné en paramètre. (1 pt) La méthode « lireClients » permet de stocker tous les clientsde la table client de la base de données dans l‟attribut « liste ». Pour chaque client de cette collection, on doit récupérer ses demandes en les sauvegardant dans l‟attribut « lesDemandes » de l‟objet client. (1 pt) importjava.rmi.*; importjava.sql.*; importjava.util.*; public class ServeurDistantextendsUnicastRemoteObjectimplementsIntServiceBranchement{ privateArrayList<Client>liste; privateConnectioncnx; //constructeur publicServeurDistant() throwsRemoteException { super(); liste=new ArrayList<Client>(); try { cnx=DriverManager.getConnection("jdbc:mysql://Administrateur:3306/bd_brancheme nt","root","DSI2018"); } catch (Exception e) { e.printStackTrace(); } } // La méthode « lireDemandes » publicArrayList<Demande>lireDemandes(String code) throws RemoteException { String req="select * from demande where code=?"; Demande d; ArrayList<Demande> demandes=new ArrayList<Demande>(); try { PreparedStatementst=cnx.prepareStatement(req); st.setString(1, code); ResultSetrs=st.executeQuery(); while(rs.next()){ Sujet de l’Examen National du BTS -Session Mai 2018 - Filière : Développement des Systèmes d‟information Épreuve : Développement d‟Applications Informatiques Page 7 13 d=new Demande(rs.getLong(1),rs.getString(3),rs.getDate(2)); demandes.add(d); } returndemandes; } catch (Exception e) { e.printStackTrace(); return null; } } // La méthode « lireClient » public void lireClient() throws RemoteException { String req="select * from Client"; Client c; try { Statement st=cnx.createStatement(); ResultSetrs=st.executeQuery(req); while(rs.next()){ c=new Client(rs.getString(2), rs.getString(1), rs.getString(3), rs.getString(4)); c.setLesDemandes(lireDemandes( rs.getString(1))); liste.add(c); } } catch (SQLException e) { e.printStackTrace(); } } } 4. Écrire le code du serveur RMI permettant de démarrer l‟annuaire rmiregistry, de créer l‟objet distant de la classe « ClientDistant » et de publier la référence de cet objet dans l‟annuairesous le nom «ob». (1,5 pt) public class ServeurRMI { public static void main(String[] args) { try { LocateRegistry.createRegistry(1099); ClientDistantclt=new ClientDistant(); Naming.rebind("rmi://serveurRMI:1099/ob", clt); } catch (Exception e) { e.printStackTrace(); } } } 5. Écrire le code du client RMI permettant de : (1,5 pt) - Récupérer la référence de l‟objet distant, - Lire et uploads/s3/ dossier-1-gestion-des-branchements-electriques-filiere-duree-4-heures-epreuve-coefficient-45.pdf
Documents similaires
-
45
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Apv 10, 2021
- Catégorie Creative Arts / Ar...
- Langue French
- Taille du fichier 0.9215MB