Déclaration d'une classe : Représentation d'une classe
Syntaxe de la déclaration d'une classe : [<modificateurs d'accès>] class <nom de la classe> [<extends ou implements>] [<nom super-classe ou de l'interface>]
Exemple : Déclaration de la classe voiture class Voiture{} Toutes les classes héritent automatiquement d'une classe maître : la classe Object. |
Création d'un objet : Opérateur newReprésentation des instances de classes
Pour créer une instance, il faut utiliser l'opérateur new et un des constructeurs de la classe. Exemple : Voiture monAuto = new Voiture(); Destruction d'un objet : La création d'un objet provoque une allocation mémoire. Les langages objets existant avant java (C++,...), obligent le développeur à gérer la mémoire : Allocation, libération. La machine virtuelle java gère la mémoire de façon automatique et dynamique. L'utilisation de l'opérateur new provoque une allocation méméoire. Un processus appelé ramasse-miettes (Garbage Collector), s'occupe de libérer la mémoire. Tous les objets qui ne sont plus utilisés dans les programmes sont détruits. |
Accès aux variables et méthodes d'un objet
Cette opération s'effectue à l'aide de l'opérateur ".". Pour accéder à une variable ou une méthode d'un objet, il suffit de placer un point (.) entre l'identificateur de l'objet et la variable ou la méthode. Syntaxe : <nom de l'objet>.<nom de la variable>; <nom de l'objet>.<nom de la méthode>([<paramètres>]); Exemple : Voiture monAuto = new Voiture(); monAuto.passerVitesse(2); System.out.println(monAuto.vitesseCourante); Attributs et Méthodes d'une classe Une classe contient deux types d'éléments : - Des Attributs ( = variables ) - Des Méthodes ( = procédures ou fonctions) Les attributs Un attribut est une valeur de donnée d'un objet ou d'une classe, qui représente un état de cet objet ou de cette classe. On distingue deux types de variables - Variables d'instance - Variable de classe Variable d'instance : La valeur d'une variable d'instance n'est connue que de l'instance dans laquelle elle se trouve. Syntaxe : <modificateur d'accès> <type> <nom de la variable> [= <valeur>]; Exemple : public int vitesseCourante = 0 ; public double vitesseMaxi ; public String marque ; Variable de classe : La valeur d'une variable de classe est la même pour toutes les instances de cette classe. En clair il s'agit d'une constante. Syntaxe : static <modificateur d'accès> <type> <nom de la variable> = <valeur> ; Exemple : static public int nombreDeRoues = 4 ; static public String avertissement = "RESTEZ CONCENTRÉ"; Les méthodes Une méthode représente un comportement de l'objet. Les méthodes de notre classe voiture pourraient être - passer une vitesse - accélérer - ralentir - freiner - démarrer Il y a deux types de méthodes : - Les procédures : Bloc d'instructions qui ne retourne pas de valeur - Les fonctions : Bloc d'instructions qui retourne une valeur La déclaration de la méthode va définir son rôle : procédure ou fonction Syntaxe d'une procédure: [<modificateur d'accès>] void <nom de la méthode>([<paramètres>]){ <Séquence d'instructions> } Exemple : public void demarrer(){ <séquence instructions> } public void passerVitesse(){ int vitesse = vitesseCourante; vitesse++; vitesseCourante = vitesse; } Syntaxe d'une fonction: <modificateur d'accès> <type de retour> <nom de la méthode>([<paramètres>]){ <Séquence d'instructions> return <valeur> } Exemple : public int prochaineVidange(){ int nbVidange = nbKmCourant/nbKmMax; if(nbVidange==0)nbVidange = 1; return (nbKmMax*nbVidange)-nbKmCourant; } |
Méthode Constructeurs : Une classe java peut contenir une ou plusieurs méthodes appelées constructeurs. Un constructeur est une méthode appelé par la JVM au moment de l'instanciation de la classe, c'est à dire à l'utilisation de l'opérateur new. Cette méthode va permettre notamment d'initialiser les variables. La déclaration d'une méthode constructeur ne différe pas d'une méthode classique, mais impose quelques règles. - Le nom du constructeur doit être identique au nom de la classe. (Respecter la casse) - Un constructeur ne retourne pas de valeur. - Il ne faut pas utiliser le mot clé void qui est implicite. Syntaxe d'une fonction: <nom de la classe>([<paramètres>]){ Exemple : public class Voiture{ public int vitesseCourante = 0; public String marque; Voiture(){} Voiture(String nouvelleMarque){ marque = nouvelleMarque; } } Dans l'exemple, on trouve deux constructeurs. Ces deux constructeurs vont permettre différentes façons d'instancier la classe voiture. public Voiture auto1 = new Voiture(); public Voiture auto2 = new Voiture("Peugeot"); Méthode Destructeur ou de finalisation : De la même façon qu'il existe un type de méthode appelée par la JVM lors de l'instanciation de la classe,il existe une méthode particulière qui est appelée par la JVM lors de la destruction de l'objet, c'est à dire au moment ou le ramasse-miettes détruit l'objet.. Cette méthode va permettre notamment de libérer toutes les références à d'autres objets .... La méthode s'appelle finalize. Cette méthode est déclarée dans la classe object. Comme toutes les classe héritent de la classe object, il faut redéfinir de façon exact cette méthode : protected finalize()throws Throwable{ } |
Les méthodes d'accès ("getteur" et "setteur")
:
Par convention (et non par obligation!!), les développeurs java s'interdisent d'acccéder directement à un attribut. Pour chaque attribut, il est conseillé de définir deux méthodes - La méthode get retourne la valeur de l'attribut. - La méthode set permet d'attribuer une valeur à l'attribut. L'intérêt de ces accesseurs résident dans la sécurité. Il devient facile de contrôler la mise à jour des attributs de votre classe de façon à interdire certaine valeur (par l'intermédiare de la méthode set). De plus si pour des raisons fonctionnelles, un attribut doit obéir à une règle de gestion avant d' être mise à disposition des autres objets, il vous suffit de modifier la méthode get. Il est conseillé de définir les attributs avec le mot clé private et de créer les accesseurs. Exemple : public Class Voiture(){ private int vitesseCourante = 0; private String marque; public int getVitesseCourante(){ return vitessCourante; } public void setVitesseCourante(int nouvelleVitesse){ vitessCourante = nouvelleVitesse; } } |
Surcharge des méthodes: La surcharge de méthode consiste à déclarer dans une même classe plusieurs méthodes qui portent le même nom, mais avec des paramètres différents. Le meilleur exemple de surcharge des méthodes, est la déclaration de plusieurs constructeurs. Cela permet, lors de la création de l'instance de pouvoir disposer de méthodes qui vont construire l'objet de manières différentes. Héritage : L'héritage permet à une classe d'hériter de l'ensemble des méthodes et attributs d'une autre classe sans avoir à réécrire le code de cette classe. Une classe héritée est une super-classe, alors qu'une classe qui hérite est appelée sous-classe Exemple : |
Polymorphisme : Le polymorphisme est la possibilité pour deux objets, ayant un lien d'héritage, de posséder la même méthode avec des implémentations différentes.
Le mécanisme d'héritage impose à la JVM de remonter la hiérarchie de classe pour trouver les méthodes qui ne sont pas présentes dans la classe en cours. |
Les packages : Pour faciliter la réutilisation du code existant, Java propose de regrouper les classes dans des packages. Les classes sont des fichiers, et les packages des répertoires. L'objectif des packages est d'ordonner les classes de façon logique. Exemple par les classe du JDK : java.io.* : Classes gérant les entrées-sorties java.net.* : Classes gérant les accès réseaux java.util.* : Classes utilitaires Quand vous voulez utiliser les fonctionnalités d'une classe dans vos programmes, il faut indiquer au compilateur java dans quel package se trouve cette classe. Cette opération se fait par le mot clé import. Exemple : import java.util.*; public class Voiture extends Véhicule{} Création de ces propres package : Pour déclarer un package, il suffit d'indiquer le mot clé package avant de déclarer la classe. Exemple : package volubis; import java.util.*; public class Voiture extends Véhicule{} |