Remise à niveau Java

TD 1


Cette feuille d'exercice a pour but de rappeler très rapidement les principes de base du langage Java. Pour ceux qui débutent réellement en Java, il est évident que ces quelques exemples ne suffiront pas. Aussi, il vous est conseillé de travailler par vous même pour vous familiariser avec la programmation en Java, qui ressemble à C++ dans sa syntaxe mais où les concepts d'objet sont un peu plus proéminents. Voici, parmi une foule de documentations et de livres disponibles sur le marché et sur Internet, quelques pointeurs pour vous guider:

http://www-igm.univ-mlv.fr/~duris/ENPC/index2000.html
Des exercices, parmi tant d'autres accessibles sur le Web. Pour débutants avec quelques points de cours (conçus pour la première année de l'École Nationale des Ponts et Chaussées), dont la plupart sont corrigés.
http://www-igm.univ-mlv.fr/~duris/JAVA/java.html
Des exercices (non corrigés) donnés dans différentes filières de l'Université de Marne-la-Vallée.
Au coeur de Java 2 - Volumes 1 et 2. de Cay S. Horstmann, Gary Cornell. Campus Press. 2000 et 2001.
Deux gros livres assez complets, bien faits et d'un niveau graduel. Accessible aux programmeurs confirmés. Nombreux exemples.
Le langage Java. 3ième édition. de Ken Arnold, James Gosling, David Holmes. Vuibert Informatique. 2001.
James Gosling est l'un des trois principaux fondateur de Java et ce livre est très récent (Août 2001). De plus, le livre est bien écrit et clair.
Java et Internet. Concepts et programmation de Gilles Roussel, Etienne Duris. Vuibert Informatique. 2000.
Un peu de pub ne fait pas de mal:-) Les bases sont passées plus rapidement, mais les développements, les concepts et les exemples "autour" de Java et des réseaux sont nombreux et détaillés.


Exercice 1 - Hello Groland!

Écrire un programme Java qui écrit Hello Groland! sur la sortie standard.

Transformer ce programme pour qu'il accepte un argument arg sur la ligne de commande et qu'il affiche Hello arg! sur la sortie standard.

Que se passe-t il alors s'il n'y a pas d'argument? Transformer le programme pour qu'il affiche Hello! dans ce cas.


Exercice 2 - Tableau d'entiers

Écrire un programme qui accepte une liste d'entiers sur la ligne de commande, qui les recopie dans un tableau d'entiers, qui trie le tableau et affiche ces entiers triés.


Exercice 3 - Objets, constructeurs et références

Écrire une classe Point représentant un point dans le plan, disposant d'un constructeur qui accepte deux entiers x et y pour coordonnées. Ajouter un constructeur par défaut. Définir une méthode de translation translate() et une méthode de comparaison du point avec un autre de signature boolean same(Point p).

Créer un objet de la classe Point et le désigner par deux références p1 et p2. Comparer ces variables avec == et avec same(). Effectuer une translation sur p1 et refaire les comparaisons.

Écrire une méthode toString() permettant de représenter le point sous la forme d'une String de la forme (x,y).


Exercice 4 - Composition, délégation

On représente un rectangle par deux de ses coins opposés. Écrire une classe Rectangle, avec une méthode same() permettant de le comparer à un autre Rectangle, une méthode toString() pour sa représentation textuelle et deux constructeurs (un avec des paramètres et l'autre par défaut).

Exercice 5 - Héritage

Écrire une classe ColoredPoint qui dispose des mêmes informations qu'un point, plus une couleur, représentée par une variable de la classe java.awt.Color. Définir sur cette classe deux constructeurs et les méthodes translate(), same() et toString() ayant la même sémantique que pour la classe Point.

Un point coloré peut-il permettre de définir un rectangle? Pourquoi?


Exercice 6 - Indépendance d'implémentation

On peut aussi représenter un rectangle par son coin supérieur gauche, sa largeur et sa hauteur. Reprendre les objectifs de l'exercice 4 avec cette idée en créant une classe Rectangle2 avec ses constructeurs et ses méthodes. Ces deux implémentations sont elles interchangeables?


Etienne.Duris[at]univ-mlv.fr - © Université de Marne-La-Vallée - Octobre 2001