:: Enseignements :: IMAC :: 2eme année :: 2008-2009 :: Programmation Objet avec Java ::
|
Premiers pas en Java
|
Exercice 1 - Hello Groland
On rappelle qu'il est préféférable en Java que chaque classe
soit définie dans un fichier qui lui est propre.
Le nom du fichier doit être le nom de la classe qu'il contient,
auquel on ajoute le suffixe .java.
Les noms des classes doivent être constitués de mots accolés
dont la premiére lettre est une majuscule.
Dans un premier temps nous allons écrire des petits programmes
permettant de se familiariser avec le compilateur,
la machine virtuelle et les méthodes.
-
écrire le programme suivant :
public class HelloGroland {
public static void main(String[] args) {
System.out.println("Hello Groland");
}
}
dans votre éditeur de texte préféré et sauvegarder celui-ci
sous le nom HelloGroland.java
-
Compiler le programme en utilisant le commande javac
puis vérifier que le fichier .class correspondant
existe bien.
javac HelloGroland.java
-
Exécuter le programme avec la commande java
java HelloGroland
On ne met pas ".class" parce que la machine virtuelle le rajoute
toute seule.
Exercice 2 - Afficher les arguments de la ligne de commande
écrire une classe
PrintArgs qui
affiche les arguments de la ligne de commande.
$ java Voici des arguments
Voici
des
arguments
Les arguments de la ligne de commande sont stockés dans
le tableau de chaînes de caractères passé en
argument à la méthode
public static main(String[] args).
-
Dans un premier temps, afficher le premier argument
de la ligne de commande (dans notre exemple Voici).
Que ce passe-t'il si l'on ne passe pas d'argument lors
de l'exécution du programme ?
-
Ecrire une boucle affichant le contenu du tableau
en sachant qu'en Java les tableaux possèdent un champ (un attribut)
length qui renvoie la taille du tableau.
-
Changer votre programme pour utiliser la syntaxe dite 'foreach'
for(Type value:array)
Exercice 3 - Calculette simple
écrire un programme prenant un nombre sur l'entrée standard
et affichant celui-ci
Pour cela, on utilisera un objet
Scanner
et particulièrement sa méthode
nextInt().
import java.util.Scanner;
public class Calc {
public static void main(String[] args) {
Scanner scanner;
scanner=new Scanner(System.in);
int value;
value=scanner.nextInt();
// completer ici
}
}
Pour comprendre le programme, il est utile de regarder
la documentation disponible ici, et même de
mettre les liens en bookmark (signet, favoris, etc.)
-
Indiquer dans le programme où sont les variables
et quel est leur type associé.
-
Recopier le programme précédent et le compléter pour
qu'il affiche le nombre saisi par l'utilisateur.
-
Modifier le programme pour déclarer et initialiser
les variables en une seule ligne
-
Expliquer la ligne :
import java.util.Scanner;
-
Modifier le programme pour qu'il demande deux entier et
affiche la somme de ceux-ci.
-
Afficher en plus de la somme, la différence, le produit,
le quotien et le reste.
Exercice 4 - Bien le bonjour
écrire un programme demandant à un utilisateur quel est
son nom et affichant "bonjour" suivi du nom rentré précédemment.
Faite en sorte d'afficher le texte "bonjour" et le nom
sur une seule et même ligne
-
Soit un utilisant System.out.print()
-
Soit en utilisant le concaténation des chaînes de caractères
(le +).
Exercice 5 - Comment créer un livre ?
Le but de cet exercice est de définir des objets
Book. Nous allons pour cela créer la
classe
Book.
-
son titre (une chaîne de caractère) ;
-
son auteur ;
-
son numéro ISBN (une chaîne de caractère) ;
-
son prix en euros (un nombre réel).
Ecrire une classe
Book dont les attributs
sont tout ce qui caractérise un livre.
Dans la classe
Book, mettre un constructeur
public Book(String title, String author, String isbn, double price)
servant à initialiser les attributs des instances de
la classe
Book (les arguments du
constructeur sont respectivement le titre,
les auteurs, l'ISBN et le prix).
Comment faire pour construire un objet livre
(une instance de la classe
Book) ?
Exercice 6 - Comment afficher un livre ?
On aimerait pouvoir afficher les caractéristiques d'un
livre, par le code Java suivant :
Book book=...
System.out.println(book);
Java sait faire cela, à condition de mettre dans la classe
Book une méthode
public String toString()
retournant une chaîne de caractères, qu'on construit typiquement
à partir des attributs de l'objet.
Ecrire cette méthode, pour obtenir par exemple l'affichage suivant :
Title : Concepts fondamentaux de l'informatique
Author : Alfred Aho
ISBN : 2-7117-8689-7
Price : 40.0
Exercice 7 - Comment comparer deux livres ?
Pour comparer deux types primitifs, on peut utiliser
== :
int a = 2;
int b = 2;
int c = 3;
System.out.println(a==b); //affiche true
System.out.println(a==c); //affiche false
Cependant, des qu'on utilise des objets, des problèmes apparaissent.
Qu'affiche le code suivant :
Book b1 = new Book("L'écume des jours", "Boris Vian", "AEZD01", 9.99);
Book b2 = new Book("L'écume des jours", "Boris Vian", "AEZD01", 9.99);
Book b3 = b1;
System.out.println(b1==b2);
System.out.println(b1==b3);
Pourquoi?
Pour résoudre ce problème en Java, il suffit d'implanter
public boolean equals(Object o) dans la classe
Book,
qui retourne true si :
-
o est une instance de Book (utiliser instanceof)
-
les champs de o sont égaux (selon vos critères) à ceux de l'instance de Book appelant la méthode
Ecrire cette méthode, afin que le code suivant n'affiche que des
true :
Book b1 = new Book("L'écume des jours", "Boris Vian", "AEZD01", 9.99);
Book b2 = new Book("L'écume des jours", "Boris Vian", "AEZD01", 9.99);
Book b3 = b1;
System.out.println(b1.equals(b2));
System.out.println(b1.equals(b3));
Exercice 8 - Une bibliothèque
Une bibliothèque contient des livres.
Nous représenterons les bibliothèques par des objets instances
de la classe
Library qu'il nous faudra écrire.
On trouvera en attribut de la classe un tableau de références
sur des instances de
Book.
On définira dans la classe
Library :
-
un attribut permettant de stocker un nombre maximum de livre
ainsi qu'un constructeur, qui prend en paramètre le nombre maximum
de livres que peut contenir la bibliothèque (sa capacité)
-
une méthode int capacity() retournant la capacité
de la bibliothèque
-
une méthode void add(Book b) qui ajoute un
livre dans la bibliothèque.
Que doit-on faire si la bibliothèque est pleine ?
-
une méthode int size() retournant
le nombre de livres contenus dans la bibliothèque
-
une méthode boolean contains(Book book),
indiquant si un livre est contenu ou non dans la bibliothèque
-
une méthode String toString(),
qui affiche l'ensemble des livres contenus dans la bibliothèque.
Regarder dans la javadoc la classe StringBuilder.
L'utiliser dans les méthodes toString() de Book et Library.
A quoi sert l'annotation java.lang.Override ?
Comment peut-on l'utiliser sur la méthode toString ?
© Université de Marne-la-Vallée