Vous êtes sur la page 1sur 4

Ecole Nationale des Ingénieurs de Sfax A.

U: 2020/2021

Génie Informatique (GI1) Enseignante: ELLOUZE Fatma

TP2: Manipulation des classes et des objets

I. Objectifs du TP:
1. Découvrir les éléments d'une classe (attributs, constructeurs et méthodes)
2. Ecrire des classes en java et les instancier en des objets/instances
II. Rappel du cours

Une classe est une entité qui représente un ensemble d'objets ayant la même structure et le
même comportement. La déclaration d'une classe est comme suit:

[public/private] class NomDeLaClasse{}

Il existe d'autre éléments qui peuvent être utilisés pour la déclaration d'une classe et qui sont en
relation avec le concept d'héritage. On va se contenter de cette déclaration pour le moment et
on étudiera ces concepts dans un stade avancé.

Une classe comporte 3 éléments principaux: les attributs, les constructeurs et les méthodes.

 Les attributs permettent de caractériser l'état des objets. Ils sont déclarés comme suit:

[public/private/protected] [static] [final] typeAttribut nomAttribut [=valeur];

Un attribut privé (private) est accessible par les méthodes de la même classe.

Un attribut protégé (protected) est accessible par les méthodes de la même classe, des classes
dérivées et des classes du même package.

Un attribut public (public) est accessible par toutes les méthodes des autres classes.

Un attribut défini 'final' est un attribut constant.

Un attribut défini 'static' est nommé un attribut de classe. Sa valeur est unique pour tous les
objets. Il peut être appelé par la classe elle-même ou par les objets dérivé de la classe ou il est
défini.

 Les constructeurs sont des méthodes d'initialisation des attributs de l'objet créé. Ils sont
toujours publics et n'ont pas de type de retour.
Cas1: Si le constructeur n'est pas défini, les attributs sont initialisés par des valeurs par défaut
par un constructeur non paramétré offert par java. La classe est instanciée comme suit:

ClassName objectName = new ClassName();

Exemple:

Cas2: La classe contient un ou plusieurs constructeurs qui diffèrent au niveau de la signature.

Exemple:

 Les méthodes permettent de définir le comportement des objets de la classe. Elles sont
déclarées comme suit:

[private/public/protected] [static] typeDeRetour NomMethode (typeParam1 nomParam1,


typeParam2 nomParam2){}

Il existe l'élément [final/abstract] qui peut être utilisé pour la déclaration de la méthode et qui
est en relation avec le concept d'héritage. On va se contenter de cette déclaration pour le
moment et on étudiera ces concepts dans un stade avancé.

Remarque: une méthode peut être surchargée: On peut avoir plusieurs méthodes mais qui sont
différentes au niveau des paramètres (type, ordre, nombre d'arguments…).

III. Exercices

Exercice1:

Créer une classe "Point" qui permet de représenter un point sur un axe. Chaque point sera
caractérisé par un nom (de type char) et une abscisse (de type double).

La classe "Point" comporte:


 Un constructeur qui prend en argument le nom et l'abscisse d'un point.
 Une méthode 'affiche' qui permet d'afficher dans la fenêtre de console le nom et
l'abscisse du point.
Une méthode 'translate' qui permet de translater un point d'une distance définie par la valeur
de son argument.

Ecrire un programme qui permet de créer un point, en afficher les caractéristiques, le déplacer
et en afficher à nouveau les caractéristiques.

Exercice 2:

Ecrire un programme qui simule le mouvement d’un robot simple. Un tel robot occupe une

certaine position (X,Y), il a une orientation parmi {Nord, Est, Sud, Ouest}, il est initialisé à une
position et une orientation données, il peut tourner à droite et il peut avancer d’un pas.

La classe Robot comporte:

Les attributs 'x' et 'y' de type int,

L'attribut 'orientation' qui peut prendre une valeur constante entre 1 et 4 ; 1 pour Nord, 2 pour
Est, 3 pour Sud et 4 pour Ouest.

La méthode 'tourneraDroite' qui modifie l’orientation du robot sans changer sa position,

La méthode 'avancer' qui modifie la position du robot selon son orientation actuelle,

La méthode 'afficheRobot' qui affiche la position et l’orientation du robot.

Ecrire un programme qui permet de créer un robot, en afficher ses caractéristiques, modifier sa
position et son orientation et en afficher à nouveau les caractéristiques

Exercice 3:

Un Employé est caractérisé par un nom (String), un grade (String), un salaire (float) et le service
auquel il est affecté (Service). Les méthodes prévues pour un employé sont les suivantes :
getNom(), setGrade(), getGrade(), setService(), getService(), setSalaire(), getSalaire() et
toString() qui retourne une description sur l’employé (sans citer son service).

Un service est caractérisé par un nom (String), un numéro de téléphone (int), le chef du service
(Employe) et tous les employés qui travaillent dans ce service (Vector). Les méthodes prévues
sont les suivantes : getNom(), getNombreEmploye(), setNumTel(), getNumTel(), getChef(),
setChef(), affecterEmploye(), eliminerEmploye() et toString() qui retourne une description sur
un objet service qui considère uniquement le nom pour le chef et les employés d'un service. Le
nom du chef ne doit pas être citer plus qu’une fois (en tant qu’employé et chef).

1) Définir les classes Employe et Service

2) Ecrire une classe Test qui permet de :

Créer deux objets Service S1 et S2 et quatre objets Employe E1, E2, E3 et E4.
• Affecter les employés E1 et E2 dans le service S1 et les employés E3 et E4 dans le service S2.
E1 et E3 sont les chefs de service.

• Echanger les employés E2 et E4 entre les deux services, augmenter le salaire de E2 et le rendre
chef de son nouveau service.

• Afficher les informations des deux chefs de service puis les informations des deux services.

Exercice 4:

Un livre est caractérisé par un titre (String), l’année d’édition (int), l’éditeur (Editeur) et ses
auteurs (un tableau d’Auteur). Une fois édité, les données d’un livre ne peuvent pas être
changées; une nouvelle édition d’un livre engendre donc la création d’un nouvel objet Livre. Les
méthodes prévues pour chaque livre sont les suivantes : getTitre(), getAnneeEdition(),
getEditeur(), getPremierAuteur() et toString() qui ne considère pas les informations des auteurs.

Un éditeur est caractérisé par un nom (String), une adresse (String), tous les livres édités (un
tableau de Livre) et le nombre de livres édités (int). Les méthodes prévues pour un tout Editeur
sont : setAdresse(), getAdresse(), getNom(), getNombreLivre(), nouveauLivre(), toString() (sans
considérer les livres édités) et finalement getLivres() qui retourne une description des livres
édités.

Un auteur est caractérisé par un nom (String), une adresse (String), les livres qu’il a écrits (un
tableau de Livre) ainsi que par leur nombre (int). Les méthodes prévues pour tout objet Auteur
sont : getNom(), setAdresse(), getAdresse(), nouveauLivre(), getNombreLivre(), getLivre() qui
retourne une description sur les livres écrits et finalement toString() qui ne considère pas les
livres.

1) Définir les classes Livre, Auteur et Editeur

2) Ecrire une classe Test composée des méthodes main() et afficher(). La méthode main()
permet de créer quatre objets Auteur : A1, A2, A3 et A4, trois objets Livres L1, L2 et L3, et
finalement, deux objet Editeur E1 et E2. A1 et A2 sont les auteurs de L1 édité par E1. A3 est
l’auteur unique de L2 édité par E1. A2, A3 et A4 sont les auteurs de L3 édité par E2. Les
références des objets Livre seront mises dans un tableau tabLivres. Faites l’appel de la méthode
afficher() pour afficher les caractéristiques des livres édités à partir de l'an 2000 avec le nom du
premier auteur de chaque livre.

3) On suppose que le nombre de Livres, Auteurs et Editeurs peut être assez important. Traiter
l’exercice en utilisant des objets Vector à la place des tableaux.

Vous aimerez peut-être aussi