tp1 Corrige
tp1 Corrige
tp1 Corrige
Ecrivez ensuite la classe 'BasicCar' implmentant cette interface : vous devez dnir les champs de la classe, les initialiser avec des valeurs par dfaut et crire le code des mthodes de l'interface. Correction :
public class BasicCar implements Car {
public void changeGear(int newGear) { gear = newGear; } public String getColor() { return color; } public int getCurrentGear() { return gear; } public int getCurrentSpeed() { return speed; } public int getWheelCount() { return wheelCount; } public void setColor(String newColor) { if(newColor != null) color = newColor; } public void setWheelCount(int newWheelCount) { if(wheelCount >= 0) wheelCount = newWheelCount; } public void speedUp(int increment) { if(increment > 0) speed = speed + increment; } public void speedDown(int decrement) { if(decrement > 0 && speed - decrement >= 0) speed = speed - decrement; } }
Ecrivez ensuite la classe 'BasicTruck' (camion), sous-classe de la classe 'BasicCar', rajoutant une caractristique par rapport une voiture : on est capable de spcier son type de chargement sous la forme d'une chane de caractres et d'accder ce type (ex. vide, cailloux, beton, ...). Correction :
public class BasicTruck extends BasicCar { String load = "empty"; public void changeLoad(String newLoad) { load = newLoad; } public String getLoad() { return load; } }
Quand ces 2 classes et 1 interface sont nalises, crivez une classe contenant une mthode main (comme vue en cours) pour crer des instances de ces 2 classes.
Exercice 3 : Oprateurs
Modiez le programme suivant pour qu'il utilise des oprateurs arithmtiques composs :
public class ArithmeticDemo { public static void main(String[] args) { int result = 1 + 2; // result is now 3 System.out.println(result); result = result - 1; // result is now 2 System.out.println(result); result = result * 2; // result is now 4 System.out.println(result); result = result / 2; // result is now 2 System.out.println(result); result = result + 8; // result is now 10 result = result % 7; // result is now 3 System.out.println(result); } }
Ensuite, expliquez pourquoi dans le programme suivant la valeur 6 est afche deux fois de suite.
public class PrePostDemo { public static void main(String[] args) { int i = 3; i++; System.out.println(i); ++i; System.out.println(i); System.out.println(++i); System.out.println(i++); System.out.println(i); } }
Correction : La ligne System.out.println(++i); est value 6 car l'oprateur ++ prxe incrmente la variable i et retourne la valeur incrmente (6). Dans la ligne suivante, System.out.println(i++); , l'oprateur ++ postxe incrmente la variable i 7 mais uniquement aprs que la valeur de la variable ai t retourne (encore 6).
5.
Comment crire de manire simple une boucle innie en utilisant l'instruction while ou do-while ? while (true) { }
1. 2.
Sans utiliser Eclipse, quelle sortie pensez-vous que cet extrait de code va raliser sachant que aNumber = 10 ? Maintenant, sous Eclipse, crivez une classe contenant l'extrait de code suivant et initialisant la variable aNumber 10. La sortie correspond-elle ce que vous aviez prvu ? Expliquez la sortie en clariant le ot de contrle du bloc de code.
3.
Correction : 1. second string third string 2. La difcult d'interprtation provient de la non-visibilit dans le bloc de code de la port des instructions if. 10 est suprieur 0 alors l'excution progresse sur le deuxime if. Le test du deuxime if choue car 10 n'est pas gal 0, de ce fait c'est la branche else de ce deuxime if qui est excute. La deuxime chane de caractres est alors afche. La dernire instruction println est en dehors de tout bloc conditionnel, elle est donc toujours excute, quelque-soit la valeur de aNumber. 3.
if (aNumber >= 0) { if (aNumber == 0) { System.out.println("first string"); } else { System.out.println("second string"); } } System.out.println("third string");