14/03/06

JAVA  TP n° 9 : L’héritage

 

Stagiaire au sein du lycée, vous devez définir des classes afin de pouvoir gérer les informations concernant les enseignants et les élèves. Une courte analyse a permis la schématisation des 2 classes suivantes :

 

Elève

 

Enseignant

-nom: chaîne

-prenom: chaîne

-adresse: chaîne

-classe: chaîne

 

-nom: chaîne

-prenom: chaîne

-adresse: chaîne

-echelon: entier

-nbHeures: réel

-tauxSalaire : tableau de réels

+ toString() : String

 

+ toString() : String

+ getPrixHeure(int i) : double

+ calculSalaire() : double

+ echelonValide() : boolean

 

 

Travail à faire :

 

Ces deux classes ont un grand nombre de propriétés (attributs et méthodes) communes.

 

a) Définissez la classe mère « Personne » qui regroupera toutes les propriétés communes. N'oubliez pas de définir getters, setters, constructeur, méthode toString.

 

b) Dans une autre classe nommée « TP09 », créez un objet Personne avec des données de votre choix puis affichez le à l'aide de la méthode toString.

 

c) Définissez la classe « Eleve », classe fille de Personne : définissez les attributs, getters, setters et constructeurs.

 

d) Dans la classe nommée « TP09 », créez un objet « Eleve » avec des données de votre choix puis affichez le.

Remarque : la classe de l'élève ne s'affiche pas, car c'est la méthode toString définie au sein de la classe mère qui a été appelée.

 

e) Redéfinissez la méthode toString au sein de la classe Eleve pour y ajouter la classe. Puis relancez votre programme.

 

f) Définissez la classe « Enseignant » : classe dérivée ou fille de Personne.

 

Remarque : tauxSalaire est un attribut un peu spécifique : c’est un tableau contenant les taux permettant de calculer les salaires en fonction de l’échelon. Ces données ne varient pas selon les enseignants, c'est pourquoi, il doit être attribut de classe, donc statique (il est souligné dans la classe). Soit :

public static double [ ] tauxSalaire = new double[ ]{40,42,43,44,46,50,52,54,60,65};

 

Echelon

1

2

3

4

5

6

7

8

9

10

11

Prix de l’heure en €

40

42

43

44

46

50

52

54

56

60

65

 


 

Vous implémenterez :

· les constructeur, getters et setters,

. la méthode toString (elle ne doit pas renvoyer les taux de salaire mais uniquement les informations propres à un enseignant)

. la méthode : echelonValide() : boolean : elle renvoie true si l’échelon est valide, false sinon . Un échelon peut être compris entre 1 et 11.

· la méthode « getPrixHeure(int echelon) : double » qui renvoie le prix de l’heure correspondant à l’échelon reçu en paramètre.

· la méthode « calculSalaire( ) : double »: celle-ci renvoie le salaire. Il est calculé en fonction du nombre d’heure et de l’échelon. Si l’échelon n’est pas valide, elle renvoie  0 (servez-vous de la méthode : echelonValide)

 

Testez votre classe Enseignant. Dans votre classe Programme, créez deux objets Enseignant ( un avec un echelon correct et un autre avec un échelon erroné) . Affichez les à l'aide de la méthode toString et affichez leur salaire.

 

 

 

Pour les plus rapides…

 

On veut connaître la date de naissance des enseignants et élèves. Ou définir cet attribut ?

Modifiez le ou les constructeurs afin de prendre en compte ce nouvel attribut

 

Remarque : cet attribut sera de type GregorianCalendar.

Utilisez «  GregorianCalendar date = new  GregorianCalendar(1980,11,22); »

 

Modifiez la méthode toString afin de retourner la date. Attention, un objet GregorianCalendar est un objet très complexe, son affichage brut ne ressemble pas à une date. La gestion des dates est très élaborée en JAVA et donc parfois un peu complexe. Observez ces exemples d'utilisation et choisissez :

 

System.out.println ( “annee “ + date.get(Calendar.YEAR)) ; // annee 1980

 

Date d = date.getTime( ) ;

System.out.println ( d ) ; // Fry Nov 22 00:00:00 1980

 

Si vous désirez avoir un format plus habituel (s'appuyant sur le système):

 

DateFormat df = DateFormat.getDateInstance(DateFormat.FULL, locale);

System.out.println("Date full: " + df.format(d)); // Date full : jeudi 22 avril 2004

 

DateFormat ds = DateFormat.getDateInstance(DateFormat.SHORT, locale);

System.out.println("Date short : " + ds.format(d)); // Date short : 22/04/04

 

Définissez la méthode « calculAge( ) : int » puis testez-la.