Vous êtes sur la page 1sur 4

 

 Institut Supérieur des Etudes Technologiques de 
  ‫اﻟﻤﻌﻬﺪ اﻟﻌﺎﻟﻲ ﻟﻠﺪّراﺳﺎت اﻟﺘّـﻜﻨﻮﻟﻮﺟﻴّﺔ ﺑﺎﻟﻘﺼﺮﻳﻦ‬ 
Kasserine  
2011/2010 ‫ اﻟﺴﻨﺔ اﻟﺪراﺳﻴﺔ‬ 

 
Examen

Matière : Méthodologie de Conception 
Documents :  Non autorisés  Durée :  90min 

Nombre de pages :  4  Classe :  MDW31 

Enseignants :   Mr. Ghassen NASRI 

Questions de cours : 
1‐ Expliquer l’utilité du design pattern COMPOSITE tout en proposant un diagramme de classe 
générique pour ce patron. 
2‐  
A. Identifier le patron de conception dont la structure générique est la suivante : 

Figure 1‐ Diagramme de classe générique 

 
 
 
 
  

 
1/4 
 
 Institut Supérieur des Etudes Technologiques de 
  ‫اﻟﻤﻌﻬﺪ اﻟﻌﺎﻟﻲ ﻟﻠﺪّراﺳﺎت اﻟﺘّـﻜﻨﻮﻟﻮﺟﻴّﺔ ﺑﺎﻟﻘﺼﺮﻳﻦ‬ 
Kasserine  
2011/2010 ‫ اﻟﺴﻨﺔ اﻟﺪراﺳﻴﺔ‬ 
 
 
B. Compléter le diagramme de séquence suivant en vous basant sur la Figure 1. 
Di agrammeSequence_1

Cl i ent :Composé :Composant

1:demande()

2: trai tement1()

l oop

[composants.hasNext()]

 
3‐ Expliquer l’intérêt du patron de conception Bridge et donner son diagramme de classe 
générique. 
4‐ Donner une implémentation en JAVA du patron Singleton en utilisant les énumérations. 

Exercice 1 : 
Etant donné la classe de test suivante : 

public class CompositeDemo {


public static StringBuffer g_indent = new StringBuffer();

public static void main( String[] args ) {


Directory one = new Directory("dir111"),
two = new Directory("dir222"),
thr = new Directory("dir333");
File a = new File("a"), b = new File("b"),
c = new File("c"), d = new File("d"),
e = new File("e");
one.add( a ); one.add( two ); one.add( b );
two.add( c ); two.add( d ); two.add( thr );
thr.add( e );
System.out.println(one.ls());
}
}

Ayant pour résultat d’affichage :


dir111
a
dir222
c
d
dir333
e
b

 
2/4 
 
 Institut Supérieur des Etudes Technologiques de 
  ‫اﻟﻤﻌﻬﺪ اﻟﻌﺎﻟﻲ ﻟﻠﺪّراﺳﺎت اﻟﺘّـﻜﻨﻮﻟﻮﺟﻴّﺔ ﺑﺎﻟﻘﺼﺮﻳﻦ‬ 
Kasserine  
2011/2010 ‫ اﻟﺴﻨﺔ اﻟﺪراﺳﻴﺔ‬ 
 
 
 
 
Donner l’implémentation en JAVA du diagramme de classe suivant tout en identifiant le design 
pattern mis en Jeu : 

AbstractFile
0..*
+ LS () : String

0..1

Directory
- name : String
File - files : ArrayList
- f_name : String
+ <<constructor>> Directory (String name)
+ <<constructor>> File (String name) + add (File f) : void
+ LS () : String + remove (String f) : boolean
+ LS () : String

Exercice 2 : 
1‐ Donner l’objectif atteint par la collaboration des classes ci‐dessous. 
2‐ Transformer la classe MaConnexionBD en utilisant le pattern SINGLETON dans sa version 
« thread‐safe ». (Donner le schéma UML et l’implémentation de la classe) 
3‐  Dans quel objectif a‐t‐on transformé la classe MaConnexionBD en SINGLETON. 

import java.sql.*;
class MaConnexionBD{
private Connetion con=null;
public MaConnexionBD(String serverName,String SID,String user,String
password)
{
this.serverName=serverName;
this.SID=SID;
this.user=user;
this.password=password;
}
public void getconnection()
{
if(con==null){
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
con=DriverManager.getConnection(
"jdbc:oracle:thin:@"+server_name+":1521:"+SID,
user,
password);
System.out.println("Connexion réussi!");
}catch(Exception e){e.printStackTrace();}
}
return con;

 
3/4 
 
 Institut Supérieur des Etudes Technologiques de 
  ‫اﻟﻤﻌﻬﺪ اﻟﻌﺎﻟﻲ ﻟﻠﺪّراﺳﺎت اﻟﺘّـﻜﻨﻮﻟﻮﺟﻴّﺔ ﺑﺎﻟﻘﺼﺮﻳﻦ‬ 
Kasserine  
2011/2010 ‫ اﻟﺴﻨﺔ اﻟﺪراﺳﻴﺔ‬ 
public void closeConnection()
{
try
{
if( con != null )
con.close();
}
catch ( SQLException ignored ) { }
}
private String serverName;
private String SID;
private String user;
private String password;

public class Test1 {


public static void main(String[] args) {

MaConnexionBD mc=new
MaConnexionBD("192.168.1.2","cours_oracle","SCOTT","tiger");
try {
Connection conn=mc.getConnection();
System.out.println("Connecté.\nAffichage résultat requête ...\n");
// Création de requête
stmt = conn.createStatement();
// éxecution de la requête
rset = stmt.executeQuery( "select empno, ename, job from emp" );
// declaration de constantes pour les indéxes de colonnes de la
requête (indexes commençant à 1)
final int EMPNO_COLUMN_INDEX = 1;
final int ENAME_COLUMN_INDEX = 2;
final int JOB_COLUMN_INDEX = 3;
// affichage résultats
while (rset.next())
{
int empNo = rset.getInt ( EMPNO_COLUMN_INDEX );
String empName = rset.getString ( ENAME_COLUMN_INDEX );
String empJob = rset.getString ( JOB_COLUMN_INDEX );
System.out.println( empNo + " " + empName + " " + empJob );
}
MaConnexionBD mc1=new
MaConnexionBD("192.168.1.2","cours_oracle","SCOTT","tiger");
Connection conn1=mc.getConnection();
/*travail sur la base*/
//
//

}
catch (SQLException e)
{
System.err.println ("error message: " + e.getMessage() );
e.printStackTrace();
Runtime.getRuntime().exit(1);
}
catch(Exception e){e.printStackTrace();}
}
}
Bon Travail

 
4/4