ABCSITE

INFORMATIQUE

 
 
 

 
 

 Java 

Glossaire 

 


API

Cela signifie Application Programming Interface.
Une API contient un ensemble de fonctions qui facilitent la programmation.
L'API de java contient entre autres les paquetages java.applet, java.awt (awt pour Abstract Window Toolkit), java.awt.image, java.io, java.lang, java.net et java.util.

 


awt

Cela signifie Abstract Window Toolkit. C'est le nom du paquetage de java traitant de ce qui est nécessaire pour gérer des fenêtres, des interfaces graphiques, des opérations de dessin.

 


champ

Un champ d'une classe est un attribut ou une méthode de cette classe.

 


classe

Une classe est la description d'un ensemble d'attributs et de méthodes chargées de gérer ces attributs. Une classe comporte :

Une classe peut-être :
  • publique, si elle a le modificateur de visibilité public : elle est alors visible de partout.
  • avoir avoir la visibilité par défaut : elle n'est alors visible que de son propre paquetage.
Une classe peut posséder le modificateur final : elle ne peut alors pas être étendue.

Une classe peut posséder le modificateur abstract : elle est alors abstraite. Dès qu'une classe contient une méthode abstraite, elle doit elle aussi être déclarée abstraite.

 


constructeur

Toute classe contient une méthode appelée constructeur. Cette méthode porte le même nom que la classe qui la contient et ne doit pas indiquer de valeur de retour ; l'objet retourné est implicitement une instance de la classe.
Le constructeur sert à initialiser les attributs de la classe. La première ligne d'un constructeur est un appel au constructeur de la super-classe. Lorsque le programmeur n'a pas défini de constructeur, le compilateur en ajoute automatiquement un qui ne comporte qu'une seule instruction : super();
Cette instruction est un appel à un constructeur sans paramètre de la super-classe. Si la super-classe n'a pas de constructeur sans paramètre, il y aura une erreur détectée à la compilation.
Voici un exeple d'une classe possédant deux constructeurs.

class Essai
{
  int milieu;
  int largeur;

  Essai(int i)
  {
    milieu=i;
  }
  
  Essai(int a, int b)
  {
   this(a); //effectuera : milieu=a;
   largeur=b;
  }
}

 


attributs et méthodes de classe

Un attribut ou une méthode d'une classe sont dits de classe lorsque le modificateur static est appliqué lors de leur déclaration. On dira aussi qu'il s'agit d'un attribut ou d'une méthode statiques.
Un attribut déclaré static existe dès que sa classe est évoquée, en dehors et indépendamment de toute instanciation. Quel que soit le nombre d'instanciations de la classe (0, 1, ou plus), un attribut de classe, i.e. statique, existe en un et un seul exemplaire. Un tel attribut sera utilisé un peu comme une variable globale d'un programme non objet.
Une méthode, pour être de classe ne doit pas manipuler, directement ou indirectement, des attributs non statiques de sa classe. En conséquence, une méthode de classe ne peut utiliser directement aucun attribut ni aucune méthode non statiques de sa classe ; une erreur serait détectée à la compilation.
De l'extérieur d'une classe ou d'une classe héritée, un attribut ou une méthode de classe pourront être utilisés précédés du nom de leur classe (nom_d'une_classe.nom_de_l_attribut_ou_méthode_de_classe). Par exemple, pour utiliser la méthode de classe sin de la classe java.lang.Math avec un argument x, on écrira Math.sin(x).

 


attributs et méthodes d'instance

Un attribut ou une méthode d'une classe sont dits d'instance dès que le modificateur static n'est pas appliqué lors de leur déclaration.
Un attribut d'instance n'existe par rapport à une allocation mémoire que dans une instance de cette classe. Avant qu'une instanciation de la classe ne soit effectuée, l'attribut n'a aucune existence physique. Si plusieurs instances de la même classe coexistent, il y aura un exemplaire d'un certain attribut d'instance de la classe par instance créée.
Une méthode doit être d'instance lorsqu'elle manipule, en lecture ou en écriture, des attributs d'instance de sa classe. À l'envers, il sera plus correct de déclarer en static une méthode n'utilisant aucun attribut ou méthode non statiques de sa classe. Lorsqu'une méthode d'instance est invoquée, la référence (qui sera appelée this durant son déroulement) de l'instance traitée lui est passée implicitement.
Un attribut ou une méthode d'instance ne pourront être invoqués, à l'extérieur de la définition de leur classe ou d'une classe héritée, qu'à partir d'une instance de classe (nom_d'une_instance.nom_de_l_attribut_ou_méthode_d'instance).

 


attributs et méthodes privés

Un attribut ou un méthode sont dits privés si on leur applique le "modificateur de visibilite" private.
Exemples :

private int donnee;
private boolean realisable(Graphe graphe)
{
   instructions....
}
Un attribut ou une méthode privés ne sont pas visibles en-dehors de la définition de leur classe.
Un attribut privé ne pourra donc pas être modifié par des instances de la classe qu'à travers des méthodes de la classe prévues à cet effet ; le programmeur de la classe peut ainsi contrôler le comportement des attributs privés (imaginer par exemple un attribut entier qui doit toujours être strictement positif pour qu'une instance de la classe se comporte correctement ; il serait dangereux qu'un tel attribut puisse être modifié par un utilisateur de la classe).

 


attributs et méthodes protégés

On dit qu'un champ d'une classe est protégé si on lui a affecté le modificateur de visibilité protected. Un champ protégé d'une classe A est toujours visible à l'intérieur de son paquetage. A l'extérieur du paquetage de A, considérons une classe B qui hérite de A ; un champ protégé de A est hérité par B et visible directement dans B (au travers de la référence implicite this) et visibles également au travers d'instances de B ou de sous-classes de B définies dans B ; il n'est pas visible dans d'autres conditions.

 


encapsulation

On parlera de l'encapsulation de données. Il s'agit d'un principe fondamental d'un langage objet : la possibilité de "cacher" des données à l'intérieur d'une classe en ne permettant de les manipuler qu'au travers des méthodes de la classe. L'intérêt essentiel d'une telle opération est d'interdire que les données soient modifiées de façon contraire à l'usage attendu dans sa classe, et ainsi de maintenir l'ensemble des données de la classe dans un état cohérent. Un exemple simple est le cas d'une donnée numérique qui devrait rester positive pour garder sa signification : il est indispensable qu'un utilisateur ne puisse pas, par mégarde ou ignorance, lui attribuer une valeur négative. Pour encapsuler une donnée, il suffit de la déclarer privée, c'est-à-dire de lui attribuier le modificateur de visibilité "private". Les modificateurs de visibilité "par défaut " ou "protected" correspondent aussi à une certaine encapsulation.

 


exception

Une exception correspond à un événement anormal ou inatendu. Les exceptions sont des instances de sous-classes des classes java.lang.Error (pour des erreurs graves, qui devront généralement conduire à l'arrêt du programme) et java.lang.Exception (pour des événements inattendus, qui seront souvent traités sans que cela provoque l'arrêt du programme).
Un grand nombre d'exceptions sont définis dans l'API.
Un mécanisme, utilisant le mot réservé throw, permet de "lancer une exception" :

if (il_y_a_un_probleme) throw new MyException)();
où MyException serait ici une sous classe de java.lang.Exception définie par ailleurs
Quand une exception est lancée, toutes les instructions suivantes sont ignorées et on remonte la pile des appels des méthodes : on dit que l'exception se propage. Si, soit l'instruction qui a lancé l'exception, soit une méthode de la pile des appels, est situé dans un "bloc try":
  • suivi d'un "bloc finally", les instructions du "bloc finally" sont exécutées et la propagation se poursuit ;
  • suivi d'un "bloc catch" attrapant les exceptions de la classe de l'exception qui se propage, les instructions du "bloc catch" sont exécutées puis l'exécution reprend son cours normal avec l'instruction qui suit le "bloc catch".

Remarquons qu'une méthode qui peut lancer une exception sans l'attraper durant son exécution doit le signaler dans son en-tête en utilisant le mot réservé throws. Par exemple :
void maFonction() throws MyException
signale qu'au cours de l'exécution de la méthode maFonction() une exception de type MyException peut être lancée sans être attrapée.
On n'est néanmoins dispensé de signaler dans les en-têtes des méthodes le lancement éventuel des exceptions les plus classiques, comme une ArrayIndexOutOfBoundsException par exemple. Vous pouvez compter sur le compilateur pour vous dire si vous avez oublié de signaler qu'une méthode peut lancer une certaine exception.
Beaucoup de méthode de l'API lancent des exceptions que l'on peut tenter d'attraper.

 


gestionnaire de répartition

Un gestionnaire de répartition est une classe qui permet de gérer la répartition des sous-composants graphiques dans un composant graphique. La méthode setLayout que l'on trouve dans la classe java.lang .Container dont hérite tout composant graphique qui peut en contenir d'autres, permet de choisir un gestionnaire de répartition. Vous pouvez utiliser :

  • java.awt.BorderLayout : pour répartir les sous-composants au nord, au sud, à l'est, à l'ouest ou au centre du composant.
  • java.awt.CardLayout : pour répartir un ensemble de sous-composants de telle sorte qu'un seul soit visible à la fois, comme s'il s'agissait d'un jeu de cartes.
  • java.awt.FlowLayout : pour arranger les sous-composants en ligne, de la gauche vers la droite et du haut vers le bas au fur et à mesure de leurs insertions.
  • java.awt.GridLayout : pour arranger les sous-composants dans une grille dont on peut éventuellement préciser le nombre de lignes et de colonnes.
  • java.awt.GridBagLayout : pour arranger les sous-composants dans une grille, mais un sous-composant peut utiliser plusieurs lignes ou colonnes et on peut donner diverses informations sur la disposition des sous-composants.
  • javax.swing.BoxLayout qui permet de répartir les composants soit les uns en-dessous des autres, soit les uns à côté des autres.
Si on n'utilise pas de gestionnaire de répartition, il faut préciser directement les positions et les tailles des différents sous-composants graphiques. Des méthodes sont prévues à cet effet dans la classe java.awt.Component.

 


héritage

C'est un principe fondamental de la programmation objet.
Les sous-classes d'une classe disposent de tous les attributs et méthodes de sa super-classe, moyennant néanmoins quelques nuances liées aux modificateurs de visibilité et au principe de la redéfinition des méthodes.

En Java, une classe peut hériter d'une seule autre classe : Java ne permet pas l'héritage multiple.

 


interface

Une interface comporte un en-tête (qui pourrait se voir attribuer le modificateur de visibilité public) suivi du mot réservé interface suivi du nom de l'interface, puis, entre accolades, une liste de constantes et de prototypes de méthodes.

Une interface I peut être implémentée par une classe A, ce qui signifie que :

  • la classe A déclare implémenter I, avec le mot "implements"
  • toutes les méthodes prototypées dans la classe I doivent être définies dans la classe A.
Une interface sert essentiellement à
  • regrouper des constantes
  • permettre qu'un ensemble de classes, étendant éventuellement d'autres classes, puissent implémenter une même interface.

Les interfaces ne seraient pas indispensables si Java permettait l'héritage multiple (possibilité d'étendre plusieurs classes à la fois).
Un nom d'interface peut être utilisé comme un nom de classe. On pourra donc mettre dans une variable dont le type est une interface n'importe quel objet implémentant l'interface en question. Quelque soit l'objet référencé par la variable, on pourra lui appliquer une méthode déclarée dans l'interface.

 


instance

Une classe est une description abstraite d'un ensemble d'objets. Une instance de classe est un objet construit selon le modèle fourni par la classe.
Un objet et une instance de classe peuvent être considérés comme synonyme.

 


méthode

On appelle ainsi ce qu'on appellerait fonction ou procédure dans d'autres langages. Toute méthode fait partie d'une classe. Une méthode peut être soit d'instance, soit de classe.

 


modificateurs de visibilite

Il est possible d'indiquer pour une classe ou un champ (attribut ou méthode) d'une classe un certain degré d'accessibilité. Cela se fait avec les mots public, private ou protected situés au début de l'en-tête de la classe ou du champ en question. Ces mots sont les modificateurs de visibilite.

  • Une classe possède deux degrés de visibilité :le degré par défaut et le degré publique indiqué par le mot réservé public. Une classe est toujours visible de tout son paquetage, une classe n'est visible d'un autre paquetage que si elle est publique.
  • Un attribut ou une méthode possèdent quatre degrés de visibilité : les modes indiqués par les mots public, private ou protected auquels s'ajoute le mode par défaut ; dans ce dernier cas, l'attribut ou la méthode en question sont visibles de partout à l'intérieur de son paquetage et de nulle part à l'extérieur de celui-ci.

 


objet

On appelle ainsi une instance d'une classe.

 


polymorphisme

Supposons qu'une classe B hérite d'une classe A. Supposons que la classe A définisse une méthode d'instance m redéfinie par la classe B (la méthode m peut avoir ou non des paramètres). Supposons enfin que l'on ait les déclarations et instructions suivantes :

    B b = new B();
    C c = new C();
    A a;
    a = b;
    a.m();   //1
    a = c;
    a.m();   //2
    a = new A();
    a.m();   //3
Alors, au moment de l'instruction 1, c'est la méthode m de la classe B qui est exécutée ; au moment de l'instruction 2, c'est la méthode m de la classe C qui est exécutée ; au moment de l'instruction 3, c'est la méthode m de la classe A qui est exécutée. C'est cette propriété que l'on appelle polymorphisme.

 


prototype d'une méthode

On appelle ainsi la face externe d'une méthode, c'est-à-dire:

type_de_retour nom(liste d'arguments);

 


redéfinir

On peut redéfinir une méthode définie dans une classe à l'intérieur d'une sous-classe de celle-ci. Pour cela, il faut que la méthode redéfinie ait même nom, mêmes types et nombre d'arguments et même type de retour que la méthode d'origine. L'interpréteur cherche la définition d'une methode invoquée à partir de la classe de l'instance concernée, en retenant la première définition rencontrée correspondant à la liste des paramètres d'appel, en remontant de classe en super-classe.

 


types primitifs

Les types primitifs sont :

 

  • le type booléen boolean, qui n'est pas un type entier, et qui peut prendre les valeurs false et true
  • le type caractère char
  • les types entiers byte, short, int et long
  • les types nombres flottants float et double

 


type référence

Toute variable qui n'est pas d'un type primitif est d'un type référence. Une référence est en fait une adresse en mémoire d'un objet.

 


super-classe

On appelle ainsi une classe qui est étendue par d'autres classes.
Considérons une classe C. La super-classe de C est la classe dont hérite directement C. Cette super-classe peut être indiquée par le mot réservé extends au moment de la définition de la classe. Si ce n'est pas le cas, la classe C hérite directement de la classe java.lang.Object, qui est donc sa super-classe.

 


surcharge

Une classe peut définir plusieurs méthodes ayant un même nom du moment que les suites des types de paramètres de ces méthodes diffèrent (globalement, ou par leurs ordres). Une différence uniquement sur le type de la valeur retournée est interdite.
Lorsqu'une méthode surchargée est invoquée, la différence sur les paramètres permet de déterminer la méthode à exécuter.


 
 

ABCSITE © copyright 2002