F. Mallet EPU – Département Électronique 2011/2012 TD1 – Les objets avec BlueJ Durée : 2h00 Objectifs : Manipuler des objets pour résoudre un problème ; Se familiariser avec BlueJ. 1-1. INSTALLER BLUEJ Il faut installer le JDK Java si ce n’est pas déjà fait : http://www.oracle.com/technetwork/java/javase/downloads/ Attention, il vaut mieux que votre Java soit dans un répertoire dont le chemin ne contient pas d’espace (pas « Program Files »). Pour installer BlueJ, télécharger le fichier bluej-307.jar depuis: http://www.bluej.org ; Utiliser la ligne de commande : java –jar bluej-307.jar. 1-2. PROJET REGISTRE 1. Ouvrir le projet Registre (Project/open Project…) ; Télécharger le fichier registre.zip depuis le site http://deptinfo.unice.fr/~fmallet/java/gse.html 2. Créer un objet reg1 de type RegistreADecalage ; 3. Utiliser reg1 pour calculer la valeur du nombre binaire 01011010 (sans utiliser la souris) ; Attention, on ne veut pas utiliser la méthode setValeur qui attend une valeur entière décimale. 4. Double-cliquer sur la classe RegistreADecalage pour lancer l’éditeur, et passer du mode Source Code au mode Documentation (menu déroulant en haut à droite) pour dessiner un diagramme de classe ; 5. Ajouter une méthode decaleAGauche(int n) qui décale la valeur courante du registre de n bits sur la gauche ; Quelles sont les valeurs de n qui ont du sens ? L’opérateur << est l’opérateur de décalage à gauche, l’opérande de gauche est la valeur entière à décaler, l’opérande de droite est le nombre de bits dont on veut décaler. Exemple : a<<3, décale la valeur a de 3 bits sur la gauche, ce qui est équivalent à multiplier a par 23=8. 6. On veut écrire une méthode estPair qui renvoie la valeur true de type boolean lorsque le bit de poids faible vaut 0 et la valeur false sinon. a. Quelle serait la signature d’une telle méthode ? b. Écrire cette méthode (sans utiliser le bloc if); L’opérateur binaire ET bit à bit est &. Par exemple, 5&1 vaut 1, 12&1 vaut 0. L’opérateur de comparaison de valeurs numériques est ==. Par exemple, a==0 vaut true si a est égal à 0 et false sinon. c. On voudrait modifier la méthode decalageADroite pour qu’elle renvoie la valeur du bit de poids faible sortant. Comment faire ? 7. On veut écrire une méthode getBit qui renvoie la valeur du nème bit du registre, où n est un paramètre de la méthode. 8. On veut écrire une méthode nonSigne qui renvoie la valeur décimale non signée correspondant, quel type de retour faut-il utiliser ? A quelle valeur non signée sur 32 bits correspond -1 ? F. Mallet EPU – Département Électronique 2011/2012 1-3. CALCULATRICE Créer une classe Java qui modélise la calculatrice de Windows Quelles sont les champs et les méthodes ? 1-4. NOMBRES COMPLEXES Compléter les classes ComplexeCartesien et ComplexePolaire vues en cours pour réaliser en Java les opérations d’addition et de multiplication. Rappels : Soient c1 et c2 deux nombres complexes c1 = re1 + i.im1 et c2 = re2 + i.im2 c1+c2 = s1 et c1*c2 = m1 Alors : s1.re = c1.re + c2.re s1.im = c1.im + c2.im m1.re = c1.re*c2.re – c1.im*c2.im m1.im = c1.re*c2.im + c1.im*c2.re Soient c3 et c4 deux nombres complexes c3 = n3*ei*ph3 et c4 = n4*ei*ph4 c3+c4 = s2 et c3*c4 = m2 m2.norme = c3.norme * c4.norme m2.phase = c3.phase + c4.phase Comment faire si on ne connaît pas la formule pour calculer s2 ?