• Aucun résultat trouvé

Programmation avanc´ee et r´epartie en Java, TP 1

N/A
N/A
Protected

Academic year: 2022

Partager "Programmation avanc´ee et r´epartie en Java, TP 1"

Copied!
2
0
0

Texte intégral

(1)

Programmation avanc´ee et r´epartie en Java, TP 1

Fr´ed´eric Gava gava@u-pec.fr

Liens utiles

— Les outils de d´eveloppement en ligne de commande JDK se trouvent sur https://www.oracle.com/java/technologies/downloads/

— La documentation de r´ef´erence de l’API se trouve sur le site

https://docs.oracle.com/en/java/javase/17/docs/api/index.html

Consignes g´ en´ erales pour les TPs

— Les TPs seront r´ealis´es sous Linux.

— Pour ´ecrire le code source, on utilisera un ´editeur tel que gedit, kate, emacs, sublim- Text . . . qui proposent tous la coloration syntaxique. Pour ce module, vous pouvez aussi utiliser un IDE tel que Eclipse ou Netbeans. Plutˆot une compilation en ligne de commande !

— Il est recommand´e de cr´eer dans son r´epertoire personnel un dossier qui contiendra tous les TPs. A la racine de ce dossier, on cr´eera un dossier pour les codes sources src, et un dossier pour les codes compil´es,build. Dans le dossiersrc, on utilisera un dossier par TP (tp1,tp2,etc.) Ce dossier correspondra `a unpackage, qui contiendra les diff´erentes classes des exercices du TP.

— En suivant l’organisation d´ecrite ci-dessus, la compilation des sources d’une s´eance de TP peut se faire avec la commande suivante, en se pla¸cant `a la racine de l’arbo- rescence de travail (qui contient les dossier srcetbuild) :

javac -d build src/tp1/*.java

L’ex´ecution d’une classe, par exempleExo1, se fait alors avec la commande suivante : java -cp build tp1.Exo1

— Il est demand´e de respecter au maximum les conventions de style Java. En particulier,

— Les noms de classe doivent commencer par une majuscule (ex :class MaClasseTresImportante {)

— Les noms de variables et de m´ethodes doivent commencer par une minuscule (ex : variable int unNombre, m´ethode void faireQuelqueChose())

— Le code doit ˆetrecorrectement indent´e!

Exercices

Exercice 1 (Des listes g´en´eriques)

R´e´ecrire le code des listes afin qu’il soit g´en´erique.

Exercice 2 ((facultatif ) Des listes circulaires)

Ecrire une classe g´´ en´erique des listes circulaires (voir explication au tableau) qui contrien- dra les m´ethodes suivantes :

— Lire l’´el´ement en cours

— Se d´ecaler sur l’´el´ement suivant (sur sois-mˆeme si la liste ne contient qu’un seul

1

(2)

´

el´ement)

— Ajout/Suppression d’un ´el´ement

— Calcul de la longueur de la liste

— Recherche de la pr´esence d’un ´el´ement dans la liste

Rappel :

sealedinterface Expr permits ConstantExpr, PlusExpr, TimesExpr{ public inteval();

}

final classConstantExpr implementsExpr { inti;

ConstantExpr(inti){ this.i = i; } public inteval(){returni;} }

//Expr e = new PlusExpr(new ConstantExpr(1), new ConstantExpr(2));

//System.out.println(e.eval());

Exercice 3 (Evaluateur)

Compl´etez le code de cette mini-calculatrice. Testez. Pour les courageux (`a la maison) rajoutez une petite interface graphique.

Exercice 4 (Avec des bool)

Rajoutez une conditionnelle (if-then-else) dans les expression de votre mini-calculatrice

Voici une autre mani`ere d’avoir des arbres binaires contenant soit des feuilles avec un entier soit un String :

sealedinterface Arbre permits BinNode, LeafInt, LeafString{ public intsize() ;

}

Chaque composante est dot´e de la m´ethode sizeet qui calcul le nombre de noeuds/feuilles de l’arbre (1 pour une feuille).

Exercice 5 (Arbre)

Codez ces composantes de 2 mani`eres diff´erentes. L’une avec des classes. L’autre avec des record. Comparez !

Exercice 6 (Arbre statique)

Rajoutez une m´ethode statique static int size(Arbre)et qui calcul le nombre de noeuds/- feuilles de l’arbre (1 pour une feuille).

Exercice 7 (Arbre bis)

Rajoutez des m´ethodes pour la hauteur de l’arbre et pour le plus grand entier.

Exercice 8 (Arbre Ternaire)

Rajoutez le cas o`u nous aurions aussi des noeuds ternaires !

2

Références

Documents relatifs

La méthode sleep de la classe Thread permet de suspendre un thread (le place dans l'état sleeping).. L'utilisation de la méthode sleep implique de traiter

Il faut des classes final (ou record) pour maintenir la restriction de hi´ erarchie (branche) ou non−selead (mais cela limitera le

R´ ealiser en Swing un formulaire comprenant un champ de saisie, un bouton et une plage de texte (pour afficher la r´ eponse ` a la question). Utilisez un (ou plusieurs, si

dans le cas d’un mono-processeur/coeur, c’est le Thread demandeur qui ex´ ecute le code qui est actif. sinon, le temps de r´ ecup´ erer le bool´ een d’un (imaginaire) isActif(),

Cr´ eer une classe Balle, ´ etendant Thread, telle que le constructeur ajoute un JLabel dans le JPanel central ` a une position al´ eatoire, et que la m´ ethode run fasse bouger

Le thread qui ex´ ecute wait() est mis dans un pool d’attente ; quand il en sort il “revient” dans le bloc synchronized et entre en comp´ etition avec d’autres threads pour

Cr´ eer une m´ ethode lancerThread (dans la classe principale) cr´ eant un Thread bas´ e sur le Runnable ci-dessus, et le d´ emarrant4. Dans une m´ ethode main, cr´ eer un objet de

Vous utiliserez des files r´ ealis´ ees au moyen de tableaux dans un premier temps, et au moyen de listes chaˆın´ ees dans un deuxi` eme temps.