La communauté ALL HTML c'est 58234 membres à ce jour dont 2 inscrits aujourd'hui et 35 depuis une semaine.

Les classes

Photo de ALL HTML Article publié le lundi 29 mars 2004 par ALL HTML.
Cet article est classé dans les catégories « JAVA »

Notion de classe


Une classe est un ensemble d'objets ayant les mêmes attributs et auxquels on peut appliquer les mêmes méthodes : On rassemble des objets ayant des similarités afin d'en faciliter l'utilisation.
Par exemple Médor et Rex appartiennent tous deux à la classe Chien : au lieu de préciser à chacun comment effectuer des actions (méthodes) ou quelles sont ses propriétés ( attributs ), on les précisera pour toute une classe Chien, ensuite chaque objet appartenant à la classe pourra les exécuter.
Des classes peuvent être divisées elles-mêmes en plusieurs classes afin d'affiner ces regroupements : c'est la notion d'héritage.
Par exemple chiens et chats sont tous deux des animaux : on pourra avoir des actions communes pour chacun dans une classe Animal et des actions spécifiques pour 2 classes Chien et Chat . Il en va de même pour leurs attributs.

Structure d'une classe


Une classe est composée de 2 types d'éléments :

a ) attributs (partie statique) : Comprends des objets (variables, constantes ou objets d'autres classes) associées aux instances de la classe.
b ) méthodes (partie dynamique) : Comprend les actions à effectuer.
Les attributs sont déclarés en 1ère partie de la classe, ils sont propre à chaque objet de cette classe, les méthodes viennent ensuite, elles s'appliquent à tous les objets de la classe.
c ) Syntaxe : Le nom d'une classe commence toujours par une majuscule, il est précédé du mot claf class .

Exemple : créons une classe Point .

Chaque point sera caractérisé par son abscisse et son ordonnée . On pourra initialiser un point aux coordonnées (0,0) et le déplacer de x et y (nombres entiers) unités.

Soit en termes spécifiques à JAVA :

<table border="1" cellpadding="3" cellspacing="1" width="489"><tbody><tr><td align="center"><span><b>attributs</b></span></td><td><span>abscisse : un nombre entier<br>ordonnee : un nombre entier</span></td></tr><tr><td align="center"><span><b>méthodes</b></span></td><td><span>initialiser() : met les coordonnées du point à (0,0)<br>deplacer(int x , int y) : ajoute un nombre entier x à l'abscisse et un nombre entier y à l'ordonée</span></td></tr></tbody></table>

On a donc la déclaration suivante :

class Point { //déclaration des attributs int abscisse ; int ordonnee ; // déclaration et implémentation des méthodes void initialiser() { this.abscisse = 0 ; this.ordonnee = 0 ; } void deplacer(int x , int y) { this.abscisse = this.abscisse + x ; this.ordonnee += y ; } }

Le mot clef this désigne l'objet courant, c'est-à-dire l'objet sur lequel la fonction est appliquée.

Constructeur de classe


Il s'agit de la méthode qui permet de créer des instance de la classe.

Ses caractéristiques :

- Elle porte le même nom que la classe (majuscule comprise) et peut avoir (éventuellement) des paramètres
- Elle ne retourne rien
- Elle sert généralement à initialiser les attributs

Si aucun constructeur n'est déclaré, on pourra tout de même appeler le constructeur par défaut portant le nom de la classe, les attributs seront initialisés suivant leur type : les entiers à 0, les caractères à ' ' (espace) etc.

Plusieurs constructeurs peuvent être déclarés, différent les uns des autres par leurs paramètres.
Suivons notre exemple du point : nous voulons pouvoir construire des points se situant simplement à l'origine du repère (0,0) ou alors créer des points placés à certaines coordonnées (u,v)
Nous aurons alors nos 2 constructeurs :

Point() { this.abscisse = 0 ; this.ordonnee = 0 ; } Point(int u , int v ) { this.abscisse = u ; this.ordonnee = v ; }

L'appel au constructeur se fait par le mot clef new :

Point p1 = new Point() ; Point p1 = new Point(2,3) ;

On a ici créé un point p1 en (0,0) et un point p2 en (2,3). Ici le premier constructeur pourrait ne pas être écrit : il réalise les mêmes actions que le constructeur par défaut Point() .

Note : Le constructeur ne peut pas être appelé sur un point déja créé : pour le ré-initialiser il faudra créer une méthode spécifique.

Attributs de classe


Il s'agit d'attributs propres à la classe, c'est-à-dire qu'ils sont partagés par toutes les instances de cette classe : lorsqu'un objet est créé, il ne reçoit pas son attribut propre. Cet attribut n'existe donc qu'en un seul exemplaire.
L'intéret de tels attributs est qu'ils sont indépendants des objets manipulés. Ils peuvent donc permettre de faire communiquer les instances de la classe (en faisant passer des valeurs) ou suivre l'évolution d'informations (par exemple par un compteur évoluant en fonction des caractéristiques des objets parcourus).

L'attribut de classe est déclaré de la même manière et au même endroit que les attributs mais est introduit par le mot clef static .
Exemple : on souhaite utiliser les différences d'abscisses et ordonnées de 2 points p1 et p2 dans plusieurs méthodes, notamment pour calculer la distance entre ces 2 points. On aura 2 attributs de classe : distanceX et distanceY :

class Point { int abscisse ; int ordonnee ; static int distanceX ; static int distanceY ; /* affecte à distanceX la différence entre les abscisses de 2 points a et b affecte à distanceY la différence entre les ordonnées de ces 2 points */ void calculerDistances(Point a , Point b) { distanceX = b2.abscisse - a.abscisse ; distanceY = b.ordonnee - a.ordonnee ; } // retourne la distance séparant 2 points c et d double calculerSeparation(Point c , Point d) { // déclaration de variables locales nécessaires au calcul int xCarre; int yCarre; double distance ; calculerDistances(c,d); xCarre = Math.pow(c,2);//calcule le carré de c yCarre = Math.pow(d,2); //calcule le carré de d distance = Math.sqrt( xCarre + yCarre ) //calcule la racine carré de xCarre+yCarre return(distance); } }

Note : Pour des raisons mathématiques, distance est de type double : la racine carré retournée est un nombre à virgule. Pour protéger un attribut de classe contre une modification inopinée, il est possible de le rendre constant par le mot clef final . Mais attention, il ne faut alors surtout pas oublier d'initialiser cet attribut lors de sa création sous peine qu'il n'ai jamais de valeur.

Déclaration d'une constante de classe :

static final type nomConstante = valeur ;

Par exemple on pourra déclarer une couleur par défaut pour les points, cela évitera de définir la même couleur pour tous les points :

static final Color couleurPoint = new Color(0,0,0) ;

Note : (0,0,0) est le code RVB de la couleur noir.

VOS COMMENTAIRES ...

Commenter cette publication

Aucun commentaire pour le moment ...

Commenter cette publication

Vous devez obligatoirement vous identifier en tant que membre pour participer à cette discussion.

Forums de discussions associés

Discutez et échangez sur ce thème dans notre forum Autres langages (JAVA, JSP, etc.).

Liens sponsorisés

ACCÉS COMMUNAUTÉ

Rejoignez ALL HTML

Publiez vos articles, actualités, communiqués ... Donnez votre avis, partagez votre réseau, rencontrez d'autres membres et participez à la vie de la communauté.