• Aucun résultat trouvé

Directives: IFT1176 - INTRA IFT1176 – Session Automne 2004, Intra Michel Reid

N/A
N/A
Protected

Academic year: 2022

Partager "Directives: IFT1176 - INTRA IFT1176 – Session Automne 2004, Intra Michel Reid"

Copied!
1
0
0

Texte intégral

(1)

IFT1176 – Session Automne 2004, Intra Michel Reid

IFT1176 - INTRA

Nom: __________________________________| Prénom(s): _____________________________|

Signature: ______________________________| Section: ____________________________|

Date : 20 octobre 2004

Durée: 2 heures (de 18h30 à 20h30)

Directives:

- Toute documentation permise.

- Calculatrice non-programmable permise.

- Répondez directement sur le questionnaire.

Soyez BREFS et PRÉCIS dans vos réponses.

1._____________________/15 Q1.1 Q1.2 Q1.3

2._____________________/30 Q2.1 Q2.2 Q2.3 Q2.4 Q2.5 3._____________________/20 Q3.1 Q3.2 Q3.3 Q3.4 Q3.5 4._____________________/35 Q4.1 Q4.2 Q4.3 Q4.4

Total:__________________/100

(2)

Question 1 (15 points)

Qu'allez-vous obtenir suite à la compilation puis l'exécution des programmes suivants (vous devez justifier votre réponse). S'il y a une erreur, indiquez la clairement. Si le programme compile et s'exécute, indiquez le résultat obtenu. Vous devez simuler une exécution donnée si nécessaire.

-

Q1.1

-

public class TestA04{

static void test(int t[][], int n, int m){

for(int i=0; i<n; i++) try{

for(int j=0; j<m; j++)

System.out.print(t[i][j] +"\t");

}catch( ArrayIndexOutOfBoundsException e){

System.out.println("t[" + i +"]["+ j + "] n'existe pas");

} }

static void main(String[] args){

int[][] tab = { {1,2,3}, {1,2}};

test(tab,2,3);

} }

Correct Incorrect X

Pourquoi? (Courte explication) ET description des erreurs s'il y en a, sinon affichage produit.

la variable j est locale au bloc try

(3)

-

Q1.2

-

class IntraException extends Exception{

public IntraException(){

super(“une exception est levee”);

} }

public class IntraA04{

public static void testException()throws IntraException{

throw new IntraException();

}

public static void main(String[] args){

try{

testException();

}catch(IntraException e){

System.out.println("traitement de l'exception " + e.getMessage()) ; }

finally {System.out.println("fin du programme");

} } }

Correct X Incorrect

Pourquoi? (Courte explication) ET description des erreurs s'il y en a, sinon affichage produit.

IntraException lancée par testException, mais non traitée localement. Elle est traitée par la méthode main.

affichage :

traitement de l'exception une exception est levee fin du programme

(4)

-

Q1.3

-

public class IntraTest {

public static String test() {

try {

return “bon”;

}catch (Exception e) { return “pas bon”;

}

finally{

return “finalement”;

} }

public static void main(String args[]){

System.out.println(test());

} }

Correct X Incorrect

Pourquoi? (Courte explication) ET description des erreurs s'il y en a, sinon affichage produit.

La méthode test va traiter toutes les Exceptions possibles qui peuvent survenir lors de l’instruction return “bon”; Le finally va être exécuté et son return sera celui qui va transmettre le résultat.

affichage : finalement

(5)

Question 2 (30 points)

-Q2.1-

(5 pts) Soit menuItemCB la référence vers l’objet MenuItem libellé CheckButton dans l’application qui suit :

Écrivez l’instruction nécessaire pour y associer son raccourci clavier :

menuItemCB .setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F10, 9));

-Q2.2-

(10 pts) Voici le code, sans erreur, d’une application : class CadreIntraA04 extends JFrame

{

CadreIntraA04() {

// Les boutons

JButton bouton = new JButton("bouton");

bouton.setMnemonic('b');

JButton autreBouton = new JButton("un autre bouton");

autreBouton.setMnemonic('a');

// La barre de Menu

JMenuBar mb = new JMenuBar();

mb.setLayout(new BoxLayout(mb, BoxLayout.X_AXIS));

JMenu m = new JMenu("Fichier");

mb.add(m);

mb.add(Box.createGlue());

m = new JMenu("Aide");

mb.add(m);

setJMenuBar(mb);

Container c = getContentPane();

c.add(bouton,BorderLayout.WEST);

c.add(autreBouton,BorderLayout.EAST);

setTitle("Question 2");

pack();

setVisible(true);

}

public static void main(String[] argv) {

CadreIntraA04 monCadre = new CadreIntraA04();

} }

(6)

Dessinez l’application :

-Q2.3-

(5pts) Avec le code de la page précédente, la fenêtre va t’elle fermer correctement ?

Oui Non X

Sinon, quelle(s) instruction(s) devrait-on ajouter : addWindowListener(new WindowAdapter () {

public void windowClosing (WindowEvent e) {System.exit(0);}

} );

ou setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

-

Q2.4-

(5 pts) Voici 2 saisies d’écran pour le même programme, avant et après avoir modifié la taille de la fenêtre.

Avant de redimensionner

Après avoir redimensionner

Quel type de disposition (Layout) a été utilisé ? ______FlowLayout_____________________

Justifiez :

Le second bouton se déplace vers la ligne suivante si la largeur n’est pas suffisante.

(7)

-

Q2.5-

(5 pts) Voici 2 saisies d’écran pour le même programme, avant et après avoir modifié la taille de la fenêtre.

Avant de redimensionner

Après avoir redimensionner

Quel type de disposition (Layout) a été utilisé ? ____GridLayout_______________________

Justifiez :

Reste sur la même ligne et boutons ont la même taille

(8)

Question 3 (20 points)

Voici plusieurs blocs d'instructions pour les questions Q3.1 à Q3.5. Indiquez pour chaque bloc, s'il est correct ou pas (en cochant la bonne case), et dites pourquoi. Si le bloc est incorrect, corrigez l'erreur. Un bloc est dit incorrect, si au moins une des instructions lui appartenant est incorrecte. Par incorrect, nous entendons qu'une des instructions du bloc en question, génère une erreur lors de la compilation et/ou lors d'exécution.

-

Q3.1

- //bloc -1-

ArrayList uneListe = new ArrayList();

uneListe.setElementAt( new Integer(123),0);

Correct Incorrect X

Pourquoi? (Courte explication) ET correction (si nécessaire) Pas de méthode setElementAt pour ArrayList

uneListe.set(0, new Integer(123));

-

Q3.2

- //bloc -2-

Collection c1 = new TreeSet(new LinkedList());

Correct X Incorrect

Pourquoi? (Courte explication) ET correction (si nécessaire)

TreeSet a un constructeur qui reçoit une Collection en paramètre, LinkedList et TreeSet implémentent Collection.

-

Q3.3

- //bloc -3-

TreeMap m2 = new Map();

Correct Incorrect X

Pourquoi? (Courte explication) ET correction (si nécessaire)

Map est une interface donc on ne peut créer une instance de Map correction :

TreeMap m2 = new TreeMap();

(9)

-

Q3.4

- //bloc -4-

Map m1 = new HashMap();

Iterator I = (m1.keySet()).iterator();

while(I.hasNext())

System.out.println(m1.get(I.next()));

Correct X Incorrect

Pourquoi? (Courte explication) ET correction (si nécessaire)

méthode keySet de map retourne un Set qui a une méthode iterator et map a une méthode get qui reçoit un Object et retourne un Object

-

Q3.5

- //bloc -5-

Collection cl = new ArrayList();

Collections.sort(cl);

Correct Incorrect X

Pourquoi? (Courte explication) ET correction (si nécessaire)

Collections.sort reçoit une List et non une référence sur une Collection correction :

List cl = new ArrayList();

ou

Collections.sort((List)cl);

(10)

Question 4 (35 points)

Nous désirons conserver les informations sur les enfants qui fréquentent une garderie dans un HashMap.

Les informations dont nous disposons sont :

 Nom

 prénom

 adresse

 numéro de téléphone

 nom et prénom du parent responsable.

Tous ces champs sont des chaînes de caractères et peuvent être dupliqués.

Par contre, la combinaison : nom, prénom et numéro de téléphone est unique pour chaque enfant. Ces informations formeront la partie clé.

-

Q4.1

– (10 pts) Écrivez la classe nécessaire pour définir et gérer une clé, tout en vous assurant d’un fonctionnement adéquat dans un HashMap. Pour cela, vous devez redéfinir les méthodes equals et hashCode pour tenir compte des 3 champs de la clé.

Remarque : la classe String possède déjà une méthode hashCode bien définie pour les String. Prévoyez aussi un constructeur.

public class EnfantCle{

private String nom, prenom, tel;

public EnfantCle(String n, String p, String t){

nom = n;

prenom=p;

tel=t;

}

public boolean equals(Object o){

if(!(o instanceof EnfantCle)) return false;

else {

EnfantCle autre = (EnfantCle) o;

if(!nom.equals(autre.nom)|| !prenom.equals(autre.prenom)||

!tel.equals(autre.tel)) return false;

else

return true;

} }

public int hashCode(){

return nom.hashCode()+prenom.hashCode()+tel.hashCode();

} }

(11)

-

Q4.2

– (8 pts) Écrivez la classe nécessaire pour définir et gérer la partie information. Redéfinissez la méthode equals. Prévoyez l’accès de chaque champs en lecture et un constructeur.

public class EnfantInf{

private String adresse, parent;

public EnfantInf(String a, String p){

adresse = a;

parent = p;

}

public boolean equals (Object o){

if(!(o instanceof EnfantInf)) return false;

else {

EnfantInf autre = (EnfantInf) o;

if(!adresse.equals(autre.adresse)||

!parent.equals(autre.parent))

return false;

else

return true;

} }

public String getAdresse(){ return adresse;}

public String getParent(){return parent;}

}

-

Q4.3

– (5 pts) Écrivez les instructions nécessaires pour déclarer, créer la Map et y ajouter les informations suivantes :

Nom prénom adresse Tél. parent

Faubert Allard, Jean-François, 29 ch. de la Tour, 343-6111, Allard, Marie Tremblay Allard, Miryam, 29 ch. de la Tour, 343-6111, Tremblay Jean HashMap enfants = new HashMap();

enfants.put(new EnfantCle("Faubert Allard","Jean-Francois","343-6111"), new EnfantInf("29 ch de la Tour", "Allard Marie"));

enfants.put(new EnfantCle("Tremblay Allard","Myriam","343-6111"), new EnfantInf("29 ch de la Tour", "Tremblay Jean"));

(12)

-

Q4.4

– (12 pts) Écrivez les instructions nécessaires pour trouver l’adresse de Tremblay Allard, Miryam, 343-6111, et afficher tous les parents responsables qui se trouvent à cette adresse.

Remarque : Plusieurs enfants peuvent habiter une même adresse.

EnfantCle myriam= new EnfantCle("Tremblay Allard","Myriam","343-6111");

EnfantInf info = (EnfantInf) enfants.get(myriam);

Collection valeurs = enfants.values();

Iterator i = valeurs.iterator();

while(i.hasNext()) {

EnfantInf courant= (EnfantInf)i.next();

if(courant.getAdresse().equals(info.getAdresse())) System.out.println(courant.getParent());

}

Bonne Chance!

Références

Documents relatifs

• Vous pouvez donner des d´efinitions en extension d’une application (injective, surjec- tive ou bijective) dont le domaine est N et, dans ce cas, vous n’avez pas ` a

Pour l’intra, on suppose qu’on a déjà lu un fichier, rempli la liste linéaire chaînée des personnes. Cette liste est nommée liste pour l’examen intra.. 3.1) Écrivez

etudiants est numérique (entier, nombre d’inscriptions pour le cours) idProf est numérique (entier, clé étrangère associée à la table prof)... Soit la table prof

 lireBddManegeParc : Lit les données contenues dans le fichier dont le nom est passé en paramètre et pour chaque nom de manège et nom de parc, appelle addManegeParc, si une

Remarque : Vous n’êtes plus tenu d’implémenter l’interface Signatures puisque vous devez réaliser vous-même la méthode main2. Vous devez ressortir TOUTES

L’expérience des années précédentes nous conduit à attirer particulièrement l’attention des collègues sur la formulation des vœux pour bénéficier des bonifications de 30,2

Une bonification est attribuée sur les vœux suivants générés cet ordre : Votre lycée d’exercice ; La commune de votre établissement, codé 1-2 ; Le poste de repli

Grandeur d’intérêt : consommation hebdomadaire en 2011 (A) de la population Variable de stratification : consommation annuelle individuelle en 2010 (A-1). Nombre L de strates :