Vous êtes sur la page 1sur 3

Classes/Hritage

Dfinition
Chaque logiciel Java, quil sagisse dune applet ou dune application, se compose toujours dau moins une classe. Toutes les variables, mthodes et lignes dinstructions doivent toujours se trouver dans une classe. Les seules exceptions sont les instructions dimportation de classes, ainsi que celle qui dfinissent une classe comme appartenant une bibliothque de classes. Une classe dont vous programmez le code source peut se reprsenter comme un plan de construction de lobjet. Elle se compose de donnes et de mthodes qui ont un quelconque rapport conceptuel. Dfinition du Grand Livre Java 2 chez Micro Application. On retient ici quune classe est un programme Java (ce sont quasiment des synonymes). Par exemple, si MSOffice tait crit en Java, on aurait une classe pour Word, une autre pour Excel et encore une autre pour Outlook, etc. MSOffice serait alors le package (paquetage en franais) ou le rassemblement de plusieurs classes. Cette vision est nave car NotePad lui seul regrouperait plusieurs classes (on pourrait tout faire dans la mme classe mais ce serait incomprhensible, imaginez vous retrouvez devant 300 pages de programme la suite !), mais elle permet de comprendre le concept de classe.

Hritage
Une classe est donc un programme qui dfinit des objets, variables, mthodes etc. Disons que dans Word 1, il existe une classe (compose de plusieurs mthodes) pour ouvrir un fichier. Dans sa version 2, M veut amliorer la gestion de louverture des fichiers, tout en gardant les mthodes qui fonctionnaient parfaitement- de la version 1. La classe de la version 2 doit alors hriter des proprits de la classe de la version 1. Ceci est comme un hritage gntique : une mme base avec certaines choses qui changent. Si vous avez dj examin le code source dune applet, vous avez eu loccasion de voir une commande dhritage. On dclare la classe principale dune applet ainsi : public class NomDeLaClasse extends java.applet.Applet {} Votre classe (ici, NomDeLaClasse) tend la classe Applet. Ceci signifie quelle hrite des proprits de cette classe. Une de ces proprits est par exemple la cration dune zone daffichage graphique (dans votre navigateur). Sans ceci le programme nes pas une applet. java.applet est le chemin daccs (classpath) qui dit au programme daller chercher la classe Applet dans le package java, puis dans le rpertoire applet de celuici. Dans la bibliothque de classes de Java, les classes sont classes ( !) dans des rpertoires. La classe NomDeLaClasse et une sous-classe de la classe Applet du package java.applet qui est elle-mme sa super-classe. En Java, une classe ne peut pas hriter de plusieurs classes. Java ne supporte donc pas lhritage multiple. Java est donc moins flexible que dautres langages, mais il vite ainsi nombre derreurs. Ceci est compens en partie par les interfaces. Note : sur le graphique JApplet remplace Applet car il sagit de la classe de Java2 (non support par les navigateurs actuels). Si vous souhaitez interdire lhritage dune de vos classes, vous devez la dclarer final. final class NonHeritable {} Si vous voulez un schma dhritage complet de Java 1.1, tlchargez le PDF (157Ko) cette adresse : http://perso.wanadoo.fr/guillaume/Ressources/api_java1.pdf

Cration de classes
Les classes sont dclares avec le mot cl class, le code est renferm entre deux accolades. On utilise le mot cl extends pour lhritage.

Classes imbriques
On peut crer une classe dans une autre classe (saut si elle est dclare statique avec le mot cl static, voir chapitre sur les modificateurs). Voici est beau petit exemple : Comme une classe ne peut hriter que dune seule autre classe, on peut crer des classes imbriques qui vont rsoudre le problme. Les classes imbriques dans vos programmes devront tre gres avec la plus grande attention car, on se mlange facilement les pinceaux ! sans parler des problmes de porte de variables Ce qui nous amne aborder un nouveau concept : le polymorphisme. Si on appelle une mthode dans une classe, le programme regarde si cette mthode existe (nom + arguments), si elle existe, elle est excute. Si cette mthode nexiste pas, le programme la cherche dans la super-classe de la classe qui fait appel elle. Et on monte ainsi les niveaux jusqu ce quune mthode adquate soit trouve ou que la remonte se termine (dans ce cas le compilateur gnrera une erreur). Lorsquune mthode dfinie dans une sous-classe a le mme nom ou les mmes paramtres quune mthode dune des classe anctres (super-classe), elle cache la mthode de la classe anctre la sous-classe*. Ceci est trs important : une mthode de bas niveau cache une mthode de haut niveau quand on redfinit son comportement.

Classes abstraites
A mesure que lon remonte dans la hirarchie des classes, celles-ci deviennent plus gnrales et souvent plus abstraites. A un certain moment, la classe anctre devient tellement gnrale quon la considre surtout comme un moule pour des classes drives et non plus comme une vritable classe dote dinstances*. Une classe abstraite dfinit donc une ligne de conduite pour ses mthodes. Elle vous met sur la voie pour dfinir plus prcisment votre propre classe. Cette classe abstraite ne peut donc pas tre instancie (adapte en objet). Elle peur contenir des mthodes abstraites mais ce nest pas une obligation. Les classes abstraites sont dclares laide du mot cl abstract. public abstract class NomDeLaClasse {} Il est surtout important de retenir quil est avantageux de placer le plus de fonctionnalits possible dans une super-classe, abstraite ou non.

Importation de classes
On ne va pas sterniser l dessus : vous connaissez la commande import qui permet au dbut du programme de rendre des classes accessibles. Par exemple pour, dans une applet, travailler avec des images, on importera java.awt.image avec la commande suivante : import java.awt.image.* ;

Les packages JDK les plus utiles


Package
Java.applet Java.awt Java.awt.datatransfer Java.awt.event Java.awt.image Java.beans Java.io Java.lang Java.math Java.net Java.rmi Java.security Java.sql Java.text Java.util Javax.swing (le x est volontaire)

Description
Contient la classe Applet et 3 interfaces. Elles servent dintermdiaires entre une applet et la navigateur. Interface utilisateur de issue de Java 1. Egalement chargement de graphiques, impression, distribution dlments graphiques Support du presse-papier (copier/coller) Gestionnaire dvnements AWT Gestion des images Gestion des beans Gestion des entres/sorties (criture et lecture de donnes) Contient la classe racine Object, types de donnes avancs Fonctions mathmatiques Client/serveur Modules RMI (Remote Method Invocation) pour invoquer des mthodes distance Fonctions de scurisation des transmissions Permet laccs aux bases de donnes relationnelles par lintermdiaire du langage SQL Formatage des chanes de texte Conversions, structures de donnes, gestion dvnements Tous les composants de linterface utilisateur SWING de Java 2

issu de Au cur de Java 2 par Cay S. Horstmann & Gary Cornell aux ditions Sun (Campus Press).

Vous aimerez peut-être aussi