Pour cette partie du laboratoire, vous devez crer trois classes: Combination, DoorLock et SecurityAgent. On souhaite explorer le concept d'association entre des classes. Ainsi, un objet de la classe DoorLock possde une variable d'instance de type rfrence vers un objet de la classe Combination. Un objet de la classe SecurityAgent possde une rfrence vers un objet de la classe DoorLock, mais aussi, une rfrence vers un objet de la classe Combination. Ainsi, les objets SecurityAgent et DoorLock ont tous les deux accs au mme objet Combination. Dans une classe Test, nous tentons de forcer le verrou. Ce programme tente de forcer l'ouverture du verrou l'aide de combinaisons de chiffres gnres alatoirement. Afin que le programme trouve la bonne combinaison rapidement, chaque chiffre de la combinaison prend ses valeurs dans l'intervalle 1...5. Aprs trois essais infructueux, le verrou devient inutilisable, il faut donc demander l'objet SecurityAgent de le ractiver. 3. Combination Vous allez soumettre cet exercice. Tlchargez et compltez le fichier de dmarrage ici: Combination.java. Crez une classe, nomme Combination, afin de contenir trois valeurs entires (de type int). 1. dclarez toutes les variables d'instance ncessaires afin de contenir ces trois valeurs entires: 3. Combination Vous allez soumettre cet exercice. Tlchargez et compltez le fichier de dmarrage ici: Combination.java. Crez une classe, nomme Combination, afin de contenir trois valeurs entires (de type int). 1. dclarez toutes les variables d'instance ncessaires afin de contenir ces trois valeurs entires ; 2. dfinir un constructeur, public Combination(int first, int second, int third), afin d'initialiser les valeurs de cet objet ; 3. implmentez la mthode d'instance public boolean equals(Combination otherx), telle que equals retourne la valeur true si l'objet dsign par le paramtre other contient les mmes valeurs, dans le mme ordre, que cet objet ; l'ordre des variables est le mme que l'ordre des paramtres du constructeur. tant donn les noncs suivants : Combination c1,c2,c3; c1= new Combination (1,2,3); c2= new Combination (1,2,3); c3= new Combination (3,2,1); c1.equals(c2) retourne true mais c1.equals(c3) retourne false ; 4. finalement, implmentez la mthode public String toString() afin de retourner une chane de rarartaroc ronrcontant ltst Ho rot nhiot ot tollo 4. finalement, implmentez la mthode public String toString() afin de retourner une chaine de caractres reprsentant l'tat de cet objet, et telle que les valeurs des variables d'instances soient spares par le symbole . tant donn, Combination c1; c1 = new Combination (1,2,3); System. out. println(c1); le rsultat affich sera 1:2:3m. L'interface de la classe Combination est constitue des mthodes suivantes : le constructeur, la mthode equals ainsi que la mthode toString. En principe, les donnes devraient tre valides. En particulier, toutes les valeurs devraient faire partie de I'intervalle 1 5. Cependant, puisque nous n'avons pas encore les outils ncessaires afin de traiter les situations exceptionnelles, nous assumerons (pour I'instant) que toutes donnes sont valides, ainsi aucune validation ne sera ncessaire. Note : mon implmentation pour cette classe fait environ 20 lignes, sans compter les lignes blanches. II ne s'agit pas de crer l'implmentation la plus compacte. Je vous donne ces informations afin que vous puissiez valuer la complexit des tches. 4. DoOrLOCK Vous allez soumettre cet exercise. Tlchargez et 2. variables d'instance. La classe DoorLock doit possder toutes les variables d'instance ncessaires afin de i. dsigner un objet de la classe Combination, ii. dterminer si la serrure est ouverte ou verrouille, iii. savoir si la serrure est active ou non, et iv. connatre le nombre d'essais rats pour ouvrir cette serrure ; 3. la classe n'a qu'un constructeur, DoorLock(Combination combination). Ce dernier initialise cette instance l'aide de valeur reue en paramtre. Lorsqu'un objet de cette classe est cr i. la serrure est verrouille, ii. l'objet est activ et iii. le nombre de tentatives rates doit tre mis zro; 3. la classe n'a qu'un constructeur, DoorLock(Combination combination). Ce dernier initialise cette instance l'aide de valeur reue en paramtre. Lorsqu'un objet de cette classe est cr i. la serrure est verrouille, ii. l'objet est activ et iii. le nombre de tentatives rates doit tre mis zro; 4. implmentez la mthode d'instance public boolean isOpen() qui retourne true si le verrou est ouvert et false sinon: 5. implmentez la mthode d'instance public boolean isActivated() qui retourne true si ce verrou est activ et false sinon; 6. implmentez la mthode d'instance public void activate(Combination c) qui modifie l'tat de l'objet afin de reprsenter l'tat actif du verrou si la bonne combinaison est passe en argument, c'est-dire que la valeur du paramtre c est la mme ( equals) que celle de la combinaison de cet objet; 7. finalement, implmentez la mthode d'instance public boolean open(Combination combination) qui i. n'ouvre le verrou que s'il est actif, si la combinaison passe en argument est la mme que la combinaison de ce verrou alors la mthode change l'tat de l'objet afin de reprsenter l'tat ouvert, et doit remettre zro le compte du nombre d'essais rats, ii cinnn r'oct is firals mandsica romhinsienno II. Smun, c est a uire la mauvase comvinasuna t passe en argument, alors le nombre d'essais rats est incrment de un, iii. si le nombre d'essais rats atteint la valeur MAX_NUMBER_OF_ATTEMPTS alors le verrou doit tre dsactiv. Note : mon implmentation compte environ 40 lignes, sans compter les lignes blanches. 5. SecurityAgent (si le temps le permet) Crez la classe SecurityAgent telle que dcrite ci-bas. 1. variables d'instances. Un agent de scurit est responsable d'un seul verrou. Dclarez toutes les variables d'instance ncessaires afin qu'un agent de scurit i. mmorise (stock) une combinaison et ii. ait accs au verrou dont il est responsable, c'est dire une rfrence vers un objet de la classe DoorLock; 2. implmentez un constructeur sans paramtre tel que lorsqu'un nouvel agent est cr i. il cre aussi une nouvelle combinaison et sauve une rfrence vers cet objet, ii. il cre aussi un nouveau verrou (instance de la classe DoorLock) l'aide de la combinaison sauvegarde. Afin de simplifier ii. ait accs au verrou dont il est responsable, c'est dire une rfrence vers un objet de la classe DoorLock; 2. implmentez un constructeur sans paramtre tel que lorsqu'un nouvel agent est cr i. il cre aussi une nouvelle combinaison et sauve une rfrence vers cet objet, ii. il cre aussi un nouveau verrou (instance de la classe Doorlock) l'aide de la combinaison sauvegarde. Afin de simplifier l'implmentation, vous pouvez toujours utiliser la mme combinaison : Combination secret; secret = new Combination (1,2,3); si secret est le nom de la variable d'instance qui dsigne la combinaison. Sinon, laissez les agents de scurit utiliser leur imagination, de sorte que chaque agent de scurit invente une nouvelle combinaison qu'il est le seul connaitre. int first, second, third; first = (int) (Math, random() 5)+1; second = (int) (Math. random ()5)+1; third = (int) (Math. random ()5)+1; secret = new Combination(first, second, thir 9:08 Done scui a Limatite. int first, second, third; first = (int) (Math. random ()5)+1 second =( int ) (Math, random ()5)+1 third =( int ) (Math, random ()5)+1 secret = new Combination(first, second, thir Voici une faon plus lgante d'obtenir le mme rsultat: java. util.Random generator; generator = new java.util. Random( ); int first, second, third; first = generator, nextInt (5)+1; second = generator, nextInt (5)+1; third = generator. nextInt (5)+1; secret = new Combination(first, second, thir les valeurs valides appartiennent l'intervalle 1 5. 3. implmentez la mthode d'instance public DoorLock getDoorlock() qui retourne une rfrence vers un objet de la classe DoorLock sauvegard par cet agent: 4. implmentez la mthode d'instance public void activateDoorLock() qui r-active le verrou l'aide de la combinaison sauvegarde. Observation : mon implmentation comporte environ 15 lignes de code. Observation : mon implmentation comporte environ 15 lignes de code. Test Une classe SecurityAgency accompagne ce laboratoire. Cependant, je vous suggre de l'utiliser que lorsque les classes ci-haut auront t amplement valides. La classe Test contient une mthode main qui i. Elle utilise un argument de ligne de commande qui reprsentant le nombre maximum de tentatives de forcer. ii. Elle cre un agent de scurit, nomm bob: iii. elle demande bob l'accs au verrou; iv. elle utilise une approche naive afin de forcer la serrure v. Suite trois essais rats, le verrou sera dsactiv, il faut alors demander bob de le ractiver. vi. Lorsque le verrou a t forc, la mthode imprime la combinaison ainsi que le nombre d'checs. N'oubliez pas de passer une valeur sur la ligne de \% java SecurityAgency 300 Success! Number of attemtps: 266 The combination is: 3:1:3 \% java SecurityAgency 10 Success! Number of attemtps: 1 The combination is: 4:1:5 8 java SecurityAgency 120 Success! Number of attemtps: 115 The combination is: 2:2:1 \& java SecurityAgency 400 Success! Number of attemtps: 383 The combination is: 2:4:5 \& java SecurityAgency 90 Success! Number of attemtps: 89 The combination is: 3:5:1 \% java SecurityAgency 8 Failed! Reached the maximum number of attempts befor Attention : si I'une ou l'autre des mthodes est implmente incorrectement et si vous ne donnez pas l'argument de la ligne de comande, il se peut que la mthode main soit prise dans une boucle Done Done public class DoorLock 1 // Constant. public static final int MaX_NUMBER_OF_ATTEMPTS = 3 ; I/ Instance variables. private Combination combination; private boolean open; private boolean activated; private int numberofattempts; // Constructor. publie Doorloek ( Combination combination ) f // Your code here 3 // Access methods. public boolean isopen( ) f \} return open; public boolean isActivated() \& 3 return activated; // Notice that numberofattempts is conpared to // MAX_NUMBER_OF_ATTEMPTS only when its value has been // incremented, Also, numberofattempts should be set to zero when // activated is false. Problems related to the combined action of // these two variables have caused problems for some students. public boolean open ( Combination combination) \& I/ Put your code here, then remove the Iine below. return true; \} public void activate ( Combination e ) f // Put your code here, then remove this comment. \} b Pour cette partie du laboratoire, vous devez crer trois classes: Combination, DoorLock et SecurityAgent. On souhaite explorer le concept d'association entre des classes. Ainsi, un objet de la classe DoorLock possde une variable d'instance de type rfrence vers un objet de la classe Combination. Un objet de la classe SecurityAgent possde une rfrence vers un objet de la classe DoorLock, mais aussi, une rfrence vers un objet de la classe Combination. Ainsi, les objets SecurityAgent et DoorLock ont tous les deux accs au mme objet Combination. Dans une classe Test, nous tentons de forcer le verrou. Ce programme tente de forcer l'ouverture du verrou l'aide de combinaisons de chiffres gnres alatoirement. Afin que le programme trouve la bonne combinaison rapidement, chaque chiffre de la combinaison prend ses valeurs dans l'intervalle 1...5. Aprs trois essais infructueux, le verrou devient inutilisable, il faut donc demander l'objet SecurityAgent de le ractiver. 3. Combination Vous allez soumettre cet exercice. Tlchargez et compltez le fichier de dmarrage ici: Combination.java. Crez une classe, nomme Combination, afin de contenir trois valeurs entires (de type int). 1. dclarez toutes les variables d'instance ncessaires afin de contenir ces trois valeurs entires: 3. Combination Vous allez soumettre cet exercice. Tlchargez et compltez le fichier de dmarrage ici: Combination.java. Crez une classe, nomme Combination, afin de contenir trois valeurs entires (de type int). 1. dclarez toutes les variables d'instance ncessaires afin de contenir ces trois valeurs entires ; 2. dfinir un constructeur, public Combination(int first, int second, int third), afin d'initialiser les valeurs de cet objet ; 3. implmentez la mthode d'instance public boolean equals(Combination otherx), telle que equals retourne la valeur true si l'objet dsign par le paramtre other contient les mmes valeurs, dans le mme ordre, que cet objet ; l'ordre des variables est le mme que l'ordre des paramtres du constructeur. tant donn les noncs suivants : Combination c1,c2,c3; c1= new Combination (1,2,3); c2= new Combination (1,2,3); c3= new Combination (3,2,1); c1.equals(c2) retourne true mais c1.equals(c3) retourne false ; 4. finalement, implmentez la mthode public String toString() afin de retourner une chane de rarartaroc ronrcontant ltst Ho rot nhiot ot tollo 4. finalement, implmentez la mthode public String toString() afin de retourner une chaine de caractres reprsentant l'tat de cet objet, et telle que les valeurs des variables d'instances soient spares par le symbole . tant donn, Combination c1; c1 = new Combination (1,2,3); System. out. println(c1); le rsultat affich sera 1:2:3m. L'interface de la classe Combination est constitue des mthodes suivantes : le constructeur, la mthode equals ainsi que la mthode toString. En principe, les donnes devraient tre valides. En particulier, toutes les valeurs devraient faire partie de I'intervalle 1 5. Cependant, puisque nous n'avons pas encore les outils ncessaires afin de traiter les situations exceptionnelles, nous assumerons (pour I'instant) que toutes donnes sont valides, ainsi aucune validation ne sera ncessaire. Note : mon implmentation pour cette classe fait environ 20 lignes, sans compter les lignes blanches. II ne s'agit pas de crer l'implmentation la plus compacte. Je vous donne ces informations afin que vous puissiez valuer la complexit des tches. 4. DoOrLOCK Vous allez soumettre cet exercise. Tlchargez et 2. variables d'instance. La classe DoorLock doit possder toutes les variables d'instance ncessaires afin de i. dsigner un objet de la classe Combination, ii. dterminer si la serrure est ouverte ou verrouille, iii. savoir si la serrure est active ou non, et iv. connatre le nombre d'essais rats pour ouvrir cette serrure ; 3. la classe n'a qu'un constructeur, DoorLock(Combination combination). Ce dernier initialise cette instance l'aide de valeur reue en paramtre. Lorsqu'un objet de cette classe est cr i. la serrure est verrouille, ii. l'objet est activ et iii. le nombre de tentatives rates doit tre mis zro; 3. la classe n'a qu'un constructeur, DoorLock(Combination combination). Ce dernier initialise cette instance l'aide de valeur reue en paramtre. Lorsqu'un objet de cette classe est cr i. la serrure est verrouille, ii. l'objet est activ et iii. le nombre de tentatives rates doit tre mis zro; 4. implmentez la mthode d'instance public boolean isOpen() qui retourne true si le verrou est ouvert et false sinon: 5. implmentez la mthode d'instance public boolean isActivated() qui retourne true si ce verrou est activ et false sinon; 6. implmentez la mthode d'instance public void activate(Combination c) qui modifie l'tat de l'objet afin de reprsenter l'tat actif du verrou si la bonne combinaison est passe en argument, c'est-dire que la valeur du paramtre c est la mme ( equals) que celle de la combinaison de cet objet; 7. finalement, implmentez la mthode d'instance public boolean open(Combination combination) qui i. n'ouvre le verrou que s'il est actif, si la combinaison passe en argument est la mme que la combinaison de ce verrou alors la mthode change l'tat de l'objet afin de reprsenter l'tat ouvert, et doit remettre zro le compte du nombre d'essais rats, ii cinnn r'oct is firals mandsica romhinsienno II. Smun, c est a uire la mauvase comvinasuna t passe en argument, alors le nombre d'essais rats est incrment de un, iii. si le nombre d'essais rats atteint la valeur MAX_NUMBER_OF_ATTEMPTS alors le verrou doit tre dsactiv. Note : mon implmentation compte environ 40 lignes, sans compter les lignes blanches. 5. SecurityAgent (si le temps le permet) Crez la classe SecurityAgent telle que dcrite ci-bas. 1. variables d'instances. Un agent de scurit est responsable d'un seul verrou. Dclarez toutes les variables d'instance ncessaires afin qu'un agent de scurit i. mmorise (stock) une combinaison et ii. ait accs au verrou dont il est responsable, c'est dire une rfrence vers un objet de la classe DoorLock; 2. implmentez un constructeur sans paramtre tel que lorsqu'un nouvel agent est cr i. il cre aussi une nouvelle combinaison et sauve une rfrence vers cet objet, ii. il cre aussi un nouveau verrou (instance de la classe DoorLock) l'aide de la combinaison sauvegarde. Afin de simplifier ii. ait accs au verrou dont il est responsable, c'est dire une rfrence vers un objet de la classe DoorLock; 2. implmentez un constructeur sans paramtre tel que lorsqu'un nouvel agent est cr i. il cre aussi une nouvelle combinaison et sauve une rfrence vers cet objet, ii. il cre aussi un nouveau verrou (instance de la classe Doorlock) l'aide de la combinaison sauvegarde. Afin de simplifier l'implmentation, vous pouvez toujours utiliser la mme combinaison : Combination secret; secret = new Combination (1,2,3); si secret est le nom de la variable d'instance qui dsigne la combinaison. Sinon, laissez les agents de scurit utiliser leur imagination, de sorte que chaque agent de scurit invente une nouvelle combinaison qu'il est le seul connaitre. int first, second, third; first = (int) (Math, random() 5)+1; second = (int) (Math. random ()5)+1; third = (int) (Math. random ()5)+1; secret = new Combination(first, second, thir 9:08 Done scui a Limatite. int first, second, third; first = (int) (Math. random ()5)+1 second =( int ) (Math, random ()5)+1 third =( int ) (Math, random ()5)+1 secret = new Combination(first, second, thir Voici une faon plus lgante d'obtenir le mme rsultat: java. util.Random generator; generator = new java.util. Random( ); int first, second, third; first = generator, nextInt (5)+1; second = generator, nextInt (5)+1; third = generator. nextInt (5)+1; secret = new Combination(first, second, thir les valeurs valides appartiennent l'intervalle 1 5. 3. implmentez la mthode d'instance public DoorLock getDoorlock() qui retourne une rfrence vers un objet de la classe DoorLock sauvegard par cet agent: 4. implmentez la mthode d'instance public void activateDoorLock() qui r-active le verrou l'aide de la combinaison sauvegarde. Observation : mon implmentation comporte environ 15 lignes de code. Observation : mon implmentation comporte environ 15 lignes de code. Test Une classe SecurityAgency accompagne ce laboratoire. Cependant, je vous suggre de l'utiliser que lorsque les classes ci-haut auront t amplement valides. La classe Test contient une mthode main qui i. Elle utilise un argument de ligne de commande qui reprsentant le nombre maximum de tentatives de forcer. ii. Elle cre un agent de scurit, nomm bob: iii. elle demande bob l'accs au verrou; iv. elle utilise une approche naive afin de forcer la serrure v. Suite trois essais rats, le verrou sera dsactiv, il faut alors demander bob de le ractiver. vi. Lorsque le verrou a t forc, la mthode imprime la combinaison ainsi que le nombre d'checs. N'oubliez pas de passer une valeur sur la ligne de \% java SecurityAgency 300 Success! Number of attemtps: 266 The combination is: 3:1:3 \% java SecurityAgency 10 Success! Number of attemtps: 1 The combination is: 4:1:5 8 java SecurityAgency 120 Success! Number of attemtps: 115 The combination is: 2:2:1 \& java SecurityAgency 400 Success! Number of attemtps: 383 The combination is: 2:4:5 \& java SecurityAgency 90 Success! Number of attemtps: 89 The combination is: 3:5:1 \% java SecurityAgency 8 Failed! Reached the maximum number of attempts befor Attention : si I'une ou l'autre des mthodes est implmente incorrectement et si vous ne donnez pas l'argument de la ligne de comande, il se peut que la mthode main soit prise dans une boucle Done Done public class DoorLock 1 // Constant. public static final int MaX_NUMBER_OF_ATTEMPTS = 3 ; I/ Instance variables. private Combination combination; private boolean open; private boolean activated; private int numberofattempts; // Constructor. publie Doorloek ( Combination combination ) f // Your code here 3 // Access methods. public boolean isopen( ) f \} return open; public boolean isActivated() \& 3 return activated; // Notice that numberofattempts is conpared to // MAX_NUMBER_OF_ATTEMPTS only when its value has been // incremented, Also, numberofattempts should be set to zero when // activated is false. Problems related to the combined action of // these two variables have caused problems for some students. public boolean open ( Combination combination) \& I/ Put your code here, then remove the Iine below. return true; \} public void activate ( Combination e ) f // Put your code here, then remove this comment. \} b