Fiche de Td 02 | JAVA

EXERCICES 1 :

1-Soit le programme suivant donnez la valeur de la variable s1 au point 1 .

class NameIs {
public void methode(String s){
                           s = "Joël "
 }
public static void main(String[ ] args) {
          NameIs nom = new NameIs( );
          String s1 = "Joël_yk";
          nom.methode(s1); // 1
}
}

 2-Soit le code Java Suivant : Donnez la sortie écran de celui ci
 

public class IOStreamDemo {

public static void main(String[] args)
throws IOException {

BufferedReader in = new BufferedReader(
new FileReader("IOStreamDemo.java"));
String s, s2 = new String();
while((s = in.readLine())!= null)
s2 += s + "\n";
in.close();

BufferedReader stdin = new BufferedReader(
new InputStreamReader(System.in));
System.out.print("Enter a line:");
System.out.println(stdin.readLine());

StringReader in2 = new StringReader(s2);
int c;
while((c = in2.read()) != -1)
System.out.print((char)c);

try {
DataInputStream in3 = new DataInputStream(
new ByteArrayInputStream(s2.getBytes()));
while(true)
System.out.print((char)in3.readByte());
} catch(EOFException e) {
System.err.println("End of stream");
}

try {
BufferedReader in4 = new BufferedReader(
new StringReader(s2));
PrintWriter out1 = new PrintWriter(
new BufferedWriter(
new FileWriter("IODemo.out")));
int lineCount = 1;
while((s = in4.readLine()) != null )
out1.println(lineCount++ + ": " + s);
out1.close();
} catch(EOFException e) {

System.err.println("End of stream");
}
try {
DataOutputStream out2 = new DataOutputStream(
new BufferedOutputStream(
new FileOutputStream("Data.txt")));
out2.writeDouble(3.14159);
out2.writeChars("That was pi\n");
out2.writeBytes("That was pi\n");
out2.close();
DataInputStream in5 = new DataInputStream(
new BufferedInputStream(
new FileInputStream("Data.txt")));
BufferedReader in5br = new BufferedReader(
new InputStreamReader(in5));

System.out.println(in5.readDouble());

System.out.println(in5br.readLine());

System.out.println(in5br.readLine());
} catch(EOFException e) {
System.err.println("End of stream");
}

RandomAccessFile rf = new RandomAccessFile("rtest.dat", "rw");
for(int i = 0; i < 10; i++)
rf.writeDouble(i*1.414);
rf.close();
rf = new RandomAccessFile("rtest.dat", "rw");
rf.seek(5*8);
rf.writeDouble(47.0001);
rf.close();
rf = new RandomAccessFile("rtest.dat", "r");
for(int i = 0; i < 10; i++)
System.out.println(
"Value " + i + ": " +
rf.readDouble());
rf.close();
}

 

EXERCICES 2 :

Soit le code Java suivant:

Public MyPolygoneSegment(Point[] t) {

    segments = new Segment[t.length];

  for (int i=0; i<segments.length; i++) {

 segments[i] = new Segment(t[i], t[(i+1) % t.length]);}

}

Commentez le plus précisément possible le code (type de méthode, type des variables, fonctionnement, rôle des appels de fonction, ...). Indiquez comment doit être déclaré l’objet «segments».

EXERCICES 3 :

Soit le code Java suivant:

 

public class Big {

       int x;

      Big(int k) { x=k; }

      int add(int a) {return x+a; }

   public void  printMe() {System.out.println(" x = "+ x); } }

public class Little1 extends BIG {

         int y ;

         Little (int k, int l) { super(k); y=l; }

         int add(int a) { return x+2*a;} }

public class Little2 extends Little1 {

       int z ;

       Little2 (int k, int l, int m) {  super(k, l) ; z= m;  }

       int add(int a) { return x+3*a;}

       public void printMe() { super.printme(); System.out.println(" z = "+ z);} }

public class Test {

     public static void main (String args[]) {

               int a =500;

              Big b = new Big(3);

               b.printMe();

              System.out.println(" add("+ a +") = "+ b.add(a) );

              Little1 l1 = new l1(3, 4);

              l1.printMe();

             System.out.println(" add("+ a +") = "+ l1.add(a) );

             l1 = new Little2(3, 4, 5);

             l1.printMe();

           System.out.println(" ajoute("+ a +") = "+ l1.add(a) );}

       }

 

1.Quels sont les attributs dont disposent les classes Little1 et little2 ?

2.Écrivez le résultat de l'exécution de la classe Test.

Solution

EXERCICE 1:

La valeur de la variable s1 au point 1 sera "Joël_yk". La méthode methode() ne modifie pas la valeur de la chaîne de caractères passée en paramètre, elle crée une nouvelle chaîne de caractères avec la valeur "Joël" mais ne la stocke pas.

La sortie écran du programme dépendra de l'entrée de l'utilisateur car il est demandé d'entrer une ligne via la console. Ensuite, le programme lit le contenu d'un fichier "IOStreamDemo.java" ligne par ligne et stocke chaque ligne dans une chaîne de caractères s2. Ensuite, il affiche le contenu de s2 caractère par caractère, puis lit à nouveau s2 à l'aide d'un flux de données pour afficher le contenu octet par octet. Le programme crée également un fichier IODemo.out et y écrit le contenu de s2, précédé de chaque numéro de ligne. Enfin, il écrit un nombre décimal (3.14159) et deux chaînes de caractères dans un fichier "Data.txt", lit les données de ce fichier et les affiche à l'écran.

EXERCICE 2:

Le code définit une classe MyPolygoneSegment qui prend un tableau de points en entrée et crée un tableau de segments en sortie. Pour chaque élément du tableau d'entrée, le code crée un segment reliant le point courant au point suivant dans le tableau (en utilisant l'opérateur modulo pour connecter le dernier point au premier). La variable segments doit être déclarée comme un tableau de segments : Segment[] segments;

EXERCICE 3:

La classe Little1 a un attribut y de type int. La classe Little2 a un attribut z de type int en plus des attributs hérités de la classe Little1.

Le résultat de l'exécution de la classe Test sera:

x = 3 add(500) = 503 x = 3 add(500) = 506 x = 3 z = 5 ajoute(500) = 509

Le programme crée un objet de la classe Big avec la valeur 3 pour x, puis appelle la méthode printMe() pour afficher la valeur de x. Ensuite, il appelle la méthode add() de cet objet avec la valeur 500 en paramètre et affiche le résultat. Le programme crée ensuite un objet de la classe Little1 avec les valeurs 3 et 4 pour x et y, appelle la méthode printMe() pour afficher les valeurs de x et y, puis appelle la méthode add() de cet objet avec la valeur 500 en paramètre et affiche le résultat. Enfin, le programme crée un objet de la classe Little2 avec les valeurs 3, 4 et 5 pour x, y et z, appelle la méthode printMe() pour afficher les valeurs de x et z, puis appelle la méthode add() de cet objet avec la valeur 500 en paramètre et affiche le résultat. Les méthodes add() des classes Little1 et Little2 surchargent la méthode add() de la classe Big en modifiant la façon dont elle calcule le résultat. La méthode printMe() de la classe Little2 appelle la méthode printMe() de la classe Big en utilisant le mot clé super, puis affiche la valeur de z.

  • 1 vote. Moyenne 5 sur 5.

Ajouter un commentaire

Anti-spam