Examen de Juin 2007 page 2 NFP 215 - Systèmes répartis
page 2
Afin de simplifier le programme, le numéro (0 ou 1) de chaque IHM est passé en paramètre du main du client
IHM.
Vous n’avez pas à écrire le code qui crée et affiche le frame de l’IHM. Vous pouvez partir du principe que le
Frame est passé en paramètre du constructeur de la classe d’IHM.
3. Exercice 3 (4 pts)
Ecrire le code Java qui permet de vérifier que le coup dans une grille de Sudoku est valide.
La grille et les caractéristiques de la grille sont des attributs de la classe AppSudoku.
Je rappelle qu’une grille de sudoku est soit une grille 4x4 dont chaque région est 2x2, soit une grille 9x9 dont
chaque région est 3x3.
Un coup est une coordonnée (i,j) et une valeur v (soit de 1 à 4, soit de 1 à 9, en fonction de la taille de la grille).
Un coup valide est un coup dont la valeur n’existe pas déjà dans la colonne, dans la ligne et dans la région du
coup joué.
Eléments de langage JAVA :
package <p>
import java.io.*;
import java.lang.*;
import java.net.*;
import java.util.*;
import java.awt.* ;
import java.rmi.*; import java.rmi.*;
import java.rmi.server.UnicastRemoteObject;
import java.rmi.server.ServerNotActiveException;
import java.rmi.RMISecurityManager;
public class ObjetOD extends UnicastRemoteObject implements
ObjetODInt
public interface ObjetODInt extends Remote { <methode
distante> throws RemoteException, …}
try {LocateRegistry.createRegistry(port);}catch(Exception e){};
Vector: v=new Vector() v.addElement(Object)
Object v.elementAt(int) v.size()
ArrayList<String> lstr; lstr = new ArrayList();
for(String s : lstr){ ....... //s est l’élément courant }
lstr.add(s);
Integer i = Integer.parseInt(newString("..."));
new
public static void main(String args[])
public interface <i>
Naming.rebind(String URL, <objet distribuée>)
ServeurImp services;
services = (ServeurImp)Naming.lookup(String URL)
DataInputStream datain=new DataInputStream(System.in);
System.out.print(String);
String datain.readLine();
File f=new File(String [, String]) String f.getAbsolutePath()
FileInputStream fi = new FileInputStream(String);
DataInputStream di = new DataInputStream(fi)
String di.readLine() fi.length() fi.read( byte [ ] ) fi.close()
fis.read(donnees);
StringTokenizer s = new StringTokenizer(String)
boolean S.hasMoreTokens() String S.nextToken();
Stok.countTokens()
FileInputStream fich = new
FileInputStream(path+File.separator+nomFic);
BufferedReader flot = new BufferedReader(new
InputStreamReader(fich));
<class InputStreamReader>.readLine
Double.parseDouble;
throw new <Class exception>;
String str = input.readLine();
ServerSocket sos = new ServerSocket(9100);
Socket soc = sos.accept(); soc.close()
PrintStream output = new PrintStream(_soc.getOutputStream());
BufferedReader input = new BufferedReader(new
InputStreamReader(_soc.getInputStream()));
byte[] donnees = new byte[ <n>];
class XXX extensThread; méthode run();
XXX x = new XXX(…);
x.start();
class YYY implements Runnable; méthode run();
y = new YYY(…);
Thread t = new Thread(y);
t.start();
Class classXXX = Class.forName("cnamp."+nomPackage + "."
+ nomXXX);
XXXInt o = (XXXInt)(classXXX.newInstance());
private JTextField message;
message = new JTextField("");
class MessageAction implements ActionListener
{
public void actionPerformed(ActionEvent evt)
{
// On envoie le message
app.setMessage(numeroJoueur) ;
}
}
// pour accéder et changer un texte d’IHM
String s = message.getText() ;
message.setText(s) ;
JPanel panelIHM = new JPanel(new BorderLayout());
panelIHM.add( XXX,
BorderLayout.NORTH); // SOUTH, EAST, WEST