Vous êtes sur la page 1sur 4

TD2

Exercice Occurrence :

Écrire un programme Occ.java lisant tous les arguments passés sur la ligne de commande et
recherchant si le premier argument existe dans la suite de la ligne.
Par exemple :
aaaa bbb AA cc affichera : Non trouve
aaaa bbb AA aaaa cc affichera : Trouve

Exercice Palindrome
On appelle palindrome un mot pouvant se lire indifféremment dans les deux sens : par
exemple Laval, ici, le mot vide, etc. Plus formellement, un mot de longueur l est un
palindrome si pour tout i<l, le caractère à la positioni est égal au caractère à la position l-i-1.
Cette notion peut également s'appliquer à une séquence d'entiers.

En utilisant la méthode charAt, écrivez une fonction prenant une String en argument et
vérifiant si c'est un palindrome. La chaîne vérifiée sera récupérée par main sur la ligne de
commande.

Exemple : otto est Palindrome

Exercice Gestion Bibliothèque


On veut modéliser la gestion d'une bibliothèque : on définira un certain nombre de
classes : Main, Ouvrage, BiblioTab, Bibliotheque, Periodique, CD, Livre. Les livres auront
comme propriétés : auteur, titre, éditeur ; les périodiques : nom, numéro, périodicité ; les
CDs : titre, auteur. De plus tous les ouvrages auront une date d'emprunt (potentiellement
nulle), une cote (le numéro par ordre de création). On implémentera également sur chaque
objet une méthode toString() renvoyant toutes les informations sur l'ouvrage sous forme d'une
chaîne de caractères.
La classe BiblioTab permettra de stocker dans une structure les livres (ajout et suppression, la
suppression prenant en argument la cote de l'ouvrage). Elle aura également une
méthode toString() affichant le nombres d'ouvrages, puis chaque ouvrage successivement. La
classe Bibliotheque sera simplement une version abstraite déclarant les mêmes méthodes
que BiblioTab mais sans les implémenter. BiblioTab héritera de Bibliotheque.
La classe Main ne contiendra que la méthode main et testera la bibliothèque en y insérant et
supprimant quelques ouvrages, puis en affichant le contenu de la bibliothèque.
Pour la classe BiblioTab on utilisera un tableau de longueur suffisante (on vérifiera quand
même à chaque opération d'insertion que l'on ne dépasse pas les bornes du tableau).
Dans ce qui suit, on veut implémenter une deuxième version de la bibliothèque, que l'on
appellera BiblioList et qui héritera également de Bibliotheque. Cette nouvelle implémentation
utilisera la classe LinkedListdéfinie dans l'API Java standard.

Page 1
Modifiez le minimum de choses dans la classe Main pour permettre l'utilisation
de BiblioList.

En utilisant les méthodes boolean add(Object o) qui permet d'ajouter un objet dans la
liste, boolean remove(Object o) Object get(int index) et int size(), implémentez la
classe BiblioList. Vous trouverez la documentation complète de la
classe LinkedList en
http://www.pps.jussieu.fr/~baro/enseignement/LBI/Java/LinkedList.html.
Vous devrez ajouter au début du fichier BiblioList.java la commande import
java.util.* ;

On souhaite que tous les champs soient déclarés privés et que l'on puisse y accéder de
l'extérieur que par des méthodes.

1) Implémentez les classes suivantes :

 La classe Ouvrage avec l’implémentation des méthodes


toString(),dateEmprunt(),setDateEmprunt(),getNombre()
 La classe Livre qui hérite de la classe Ouvrage avec l’implémentation des
méthodes setTitre(), getTitre(), setAuteur(), getAuteur(), setEditeur(),
getEditeur(), toString()
 La classe abstraite Biblio avec l’implémentation des méthodes abstraites add(),
remove(), toString(), number() ;
 La classe BiblioList qui hérite de la classe Biblio avec l’implémentation des
méthodes add(), remove(), toString(), number() ;
 La classe main ()

Exercice : Ensemble des lettres


On désire écrire une application éducative pour apprendre la notion d'ensemble à des enfants et
les initier aux notions d'appartenance, d'intersection, d'union et d'inclusion. Dans ce cadre on
souhaite faire manipuler aux enfants des ensembles de lettres (lettres de 'a' à 'z') sans
répétition (une lettre ne peut être présente qu'une seule fois).

Un ensemble de lettres est représenté par un tableau e de 26 booléens, e[i] ayant la valeur
true si la ième lettre del’alphabet appartient à l'ensemble et false sinon.

1) Etant donnée cette représentation pour les ensembles de lettre définir une classe
EnsembleDeLettres,sachant que les opérations définies sur de tels ensembles sont les
suivantes.

Opérations de création :

 Création d’un nouvel ensemble de lettres dont les éléments sont tirés au hasard
 Création d’un nouvel ensemble, initialement vide
 Création d’un ensemble à partir d’une chaîne de caractères. L’ensemble contient
toutes les lettres présentesdans la chaîne.

Opérations sur un ensemble :

 afficher qui affiche sur la console l’ensemble. L'affichage de l'ensemble se fait sous la

Page 2
forme suivante :
o les chiffres présents dans l'ensemble sont affichés séparés par des espaces. Une
accolade ouvrante ("{") précédant le premier chiffre, et une accolade
fermante ("}") suivant le dernier chiffre. Si l'ensemble est vide seules les
accolades sont affichées
o exemples :
▪ {} affichage produit pour un ensemble vide
▪ {'a', 'm', 't', 'z' } affichage produit pour un ensemble
contenant les lettres
'a', 'm', 't' et 'z'
 estVide qui teste si l’ensemble est vide et renvoie un booléen à vrai dans ce cas et à faux
sinon.
 cardinal qui renvoie le cardinal de l’ensemble (nombre d’éléments de l’ensemble).
 estInclus qui teste l’inclusion de l’ensemble dans un autre et renvoie un
booléen à vrai si le premierensemble est inclus dans le second et à faux sinon.
 appartient qui teste si une lettre est présente ou non dans l’ensemble
 intersection qui crée un nouvel ensemble dont les éléments sont les éléments
présents dans l’intersectionde l’ensemble avec un autre ensemble donné.
 union qui crée un nouvel ensemble dont les éléments sont les éléments présents
dans l’union de l’ensembleavec un autre ensemble donné.
 difference qui crée un nouvel ensemble correspondant à la différence de
l’ensemble avec un autreensemble donné
 unionDisjointe qui crée un nouvel ensemble correspondant à l’union disjointe
de l’ensemble avec unautre ensemble donné

a) Spécifier la classe EnsembleDeLettres. Définir ses attributs et la signature de ses


constructeurs etméthodes.

b) Comment effectuer la correspondance entre un entier et la lettre correspondante (et


inversement) ? Etudiez etproposez plusieurs solutions.

c) Ecrire le code de la classe EnsembleDeLettres en respectant les spécifications définies en


a). Tester cette classe.

Conseil : Pour réaliser et tester la classe EnsembleDeLettres vous procéderez de manière incrémentale. N’écrivez
pas toute la classe EnsembleDeLettres puis ensuite le code permettant de la tester. Travaillez de manière
progressive : vous ajoutez une fonctionnalité (méthode) à la classe EnsembleDeLettres et vous écrivez
immédiatement le code permettant de la tester et vous vérifiez que l’exécution de votre test est correcte.

Rappels sur les opérateurs ensemblistes

 La réunion de deux ensembles A et B, notée (lire « A union B »), se définit par :

 L' intersection de deux ensembles A et B, notée (lire « A inter B »), se définit par :

Page 3
 La complémentation ou différence d'un ensemble B dans un ensemble A, notée (lire « A moins B »
ou « complément de B dans A »), se définit par :

 La différence symétrique ou réunion disjointe de deux ensembles A et B, notée A∆B (lire « A delta B »), se
définit par :
(rappel : désigne le ou exclusif logique)
Il existe deux autres définitions équivalentes
:

Page 4

Vous aimerez peut-être aussi