Programmation Orientée Objet (Java): Série n°2 Classes et Objets

1/5
100%
Rendu du PDF...
Page 1 sur 5Lecteur de document UniversityLib

Programmation Orientée Objet (Java): Série n°2 Classes et Objets

Computer Science, Object-Oriented Programming (Java) · lab

Voir tous les documents en programmation

ÉCOLE SUPERIEURE DE LA

STATISTIQUE ET

DE L'ANALYSE DE L'INFORMATION

ANNEE UNIVERSITAIRE : 2011-20012

PROGRAMMATION ORIENTEE OBJET (JAVA)

SERIE N°2 (TD-TP)

Classes et Objets

ENSEIGNANTS : Z. BRAHMI && W. SFAÏHI

AUDITOIRE : 2

EXERCICE 2.1 : Carnet d’adresses

Toutes les classes, qui seront implémentées dans cet exercice, appartiennent au même package

nommé «probleme1».

1) complétez la classe « Coordonnees » représentant les coordonnées d’une personne avec les

champs : nom, prénom, téléphone, adresse. Munissez-la d'un constructeur et d'une méthode

toString().

class Coordonnees

{

private String nom ;

private String prenom ;

private String telephone ;

private String adresse ;

//…à compléter

}

2) compléter ensuite la classe « CarnetCoordonnees » représentant un carnet de coordonnées.

Elle contiendra les attributs privés suivants :

(cid:1)

(cid:1)

Un tableau de coordonnées nommé « carnet ».

Un entier nommé « nbCoordonnees » représentant le nombre d’éléments de « carnet ».

Les méthodes suivantes :

(cid:1)

Un constructeur pour définir un carnet vide pouvant contenir 100 coordonnées au maximum.

(cid:1)

void ajouter(Coordonnees c) : pour ajouter les coordonnées d’une personne dans « carnet ».

(cid:1)

void rechercher(String nom, String prenom) pour retrouver et afficher les coordonnées du

premier personne (téléphone, adresse) dans le carnet à partir de son nom et prénom. Si cette

Publicité

méthode ne trouve pas les coordonnées d’une personne dans le carnet elle affiche que cette personne

n’existe pas dans le carnet.

(cid:1)

void affiche() : pour afficher toutes les coordonnées se trouvant dans le carnet.

POO-Java (Soir) : Série n°2 classes et objets

Page 1/ 5

Voici la squelette du programme à compléter

class CarnetCoordonnees {

//…à compléter

CarnetCoordonnees() {

//…à compléter

}

void ajoutCoordonnees(Coordonnees c){

//…à compléter

}

void chercherCoordonnees(String nom, String prenom){

//…à compléter

}

void affiche(){

//…à compléter

}

}

class TestCarnetCoordonnees{

public static void main(String args[]) {

CarnetCoordonnees c=new CarnetCoordonnees();

c.ajouterCoordonnees(new Coordonnees(“Ben Ali”, “Mohamed”,”654645”, “Tunis”));

c.ajouterCoordonnees(new Coordonnees(“Ben Amor”, “Seif”,”678695”, “sousse”));

c.ajouterCoordonnees(new Coordonnees(“Selmani”, “Akram”,”256987”, “Sfax”));

c.affiche();

c.chercherCoordonnees(“Ben Amor”, “Seif”);

}

}

EXERCICE 2.1 : Point

1) Ecrire une classe Point qui permet de représenter un point sur un plan cartésien. Chaque

point est caractérisé par son abscisse et son ordonnée (de type float), une méthode afficher()

imprimant sur l'écran ses coordonnées et une méthode deplacer() effectuant son déplacement

selon les pas communiqués à la méthode comme arguments (déplacement par rapport à la

Publicité

position courante).

Remarque : on utilisera le constructeur par défaut.

2) Ecrire une classe TestPoint décrivant un petit programme utilisant la classe Point. Ce

programme permet de créer un point, en afficher ses coordonnées, le déplacer (abscisse +2.5

et ordonnée -1) et en afficher de nouveau ses coordonnées.

3) Peut-on déplacer un point à partir de TestPoint sans appeler la méthode deplacer()? Aussi,

est ce que l'appel de deplacer() (à partir de TestPoint) est toujours possible? Faire une

discussion.

4) Reprendre la définition de la classe Point en ajoutant :

• un constructeur sans paramètres

• un constructeur recevant en arguments les coordonnées d'un point

• une méthode getAbscisse() retournant la valeur actuelle de l'abscisse d'un point

• une méthode getOrdonnee() retournant la valeur actuelle de l'ordonnée d'un point

POO-Java (Soir) : Série n°2 classes et objets

Page 2/ 5

• une méthode setAbscisse() qui modifie la valeur de l'abscisse d'un point par la valeur de

l'argument de cette méthode

• une méthode setOrdonnee() qui modifie la valeur de l'ordonné d'un point par la valeur de

l'argument de cette méthode

• une méthode toString() permettant de retourner une chaîne de caractères (un String)

décrivant un point (dans ce cas ses coordonnées)

• une méthode compareTo() qui retourne un résultat booléen selon que les attributs de l'objet

point communiqué en argument possèdent les même valeurs que ceux de l'objet courant ou

non.

5) Modifier la classe TestPoint de façon à créer deux objets Point, le premier avec le constructeur

paramétré (abscisse =1 et ordonnée =2.3) et le deuxième avec le constructeur sans paramètres.

Le premier point doit être déplacé (abscisse –0.5 et ordonné +0.7), ensuite, le deuxième point

doit être confondu (même position) avec le premier point. Afficher les coordonnées des deux

points (de deux façons).

6) Comparer les deux points crées précédemment en appliquant l'opérateur == sur leurs références

puis en faisant l'appel à la méthode compareTo() de Point. Refaire la comparaison avec la

méthode compareTo() après la rendre static.

7) Modifier la classe TestPoint de façon à accepter toute coordonnée et toute valeur de

déplacement de l'utilisateur en utilisant la classe Clavier.

Modifier encore une fois la classe TestPoint afin de pouvoir gérer plusieurs points en utilisant un

tableau dont la taille sera déterminée par l'utilisateur. Faire des manipulations analogues aux

questions précédentes, en particulier, faire confondre le premier point avec le dernier point du

Publicité

tableau à la manière de la question 5).

EXERCICE 2.3 : Cercle et Point

Un cercle (Cercle) est défini par un point (Point) correspondant à son centre, et un rayon.

1. Reprendre la classe Point de l’exercice précédent.

2. Écrire la classe Cercle ainsi que son constructeur.

3. Ajouter la méthode toString qui affiche le centre et le rayon.

4. Ajouter la méthode translate (int dx,int dy) qui translate un cercle

5. Ajouter la méthode equals() qui renvoie vrai si deux cercles ont le même centre et le

même rayon.

6. Ajouter la méthode contains() qui renvoie vrai si un point est contenu dans un cercle.

7. Qu'affiche le code suivant, expliquez.

Point p=new Point(1,2);

Circle c=new Circle(p,1);

Circle c2=new Circle(p,2);

c2.translate(1,1);

System.out.println(c+' '+c2);

8. Ecrire une classe Test permettant de tester tous les comportements du cercle et du point.

POO-Java (Soir) : Série n°2 classes et objets

Page 3/ 5

EXERCICE 2.4 : Book

Le but de cet exercice est de définir des objets Book. Nous allons pour cela créer la classe

Book défini par :

• son titre (une chaîne de caractères) ;

• son auteur ;

• son numéro ISBN (une chaîne de caractères) ;

• son prix en euros (un nombre réel).

Écrire 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, tring 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 2.5 : 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.

1. Définir la classe Library contenant :

• un constructeur, qui prend en paramètre le nombre maximum de livres que peut contenir la

Publicité

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 ;

• une méthode int size() retournant le nombre de livres contenus dans la bibliothèque ;

• une méthode public void display (), qui affiche l'ensemble des livres contenus dans la

bibliothèque.

2. Modifier l’attribut tableau référençant les instances de Book par un vecteur (utiliser la classe

Vector de la package import java.util). Redéfinir les méthodes add (Book b) et display ().

POO-Java (Soir) : Série n°2 classes et objets

Page 4/ 5

EXERCICE 2.6 : Comptes clients

On se propose de modéliser la relation qui existe entre les clients d'une banque et les comptes qu'ils

possèdent.

• Un compte est caractérisé par un numéro, un solde, un titulaire, une opération de débit et

une opération de crédit. Un compte peut informer sur son solde, afficher à la fois son numéro

et son solde ou les retourner accompagnées par le nom et le prénom du titulaire du compte.

Chaque nouveau compte est ouvert avec un certain montant.

• Un client est caractérisé par son nom, son prénom, le nombre de comptes au sein de la

banque et bien sûr par tous ses comptes. Un client peut : connaître son nom, son prénom, le

nombre de ses comptes, le numéro et le solde de chaque compte et finalement le solde global

de tous ses comptes.

1) Définir les classes Client et Compte

Quelles sont les méthodes demandées dans la classe Client. Est ce qu'on envisage l'ajout d'un

nouveau compte après la création d'un client ? Est ce qu'il y a un nombre limité de compte pour un

client ? Est ce que le nombre maximal de comptes diffère d'un client à un autre ?

2) Définir une classe TestBanque qui permet de :

• Prendre en charge plusieurs clients dont les références seront mises dans un tableau

• Créer pour chaque client un ensemble de comptes

• Faire des opérations sur certains comptes de certains clients puis afficher les informations

nécessaires

3) Reprendre les définitions précédentes en utilisant au lieu des tableaux, des objets de la classe

Vector.

POO-Java (Soir) : Série n°2 classes et objets

Page 5/ 5