JAVA

COURS JAVA
CLASSE ENCAPSULATION ATTRIBUT METHODE VISIBILITE – ACCES AUTO-REFERENCE: this REFERENCE, ALLOCATION MEMOIRE: new PACKAGE SURCHARGE DE METHODE

Qu’est ce que JAVA ?

Langage
− −

Développé par la société SUN dans les années 90 2000 : Applications réseau (client/serveur) Inspiration C++

Orienté Objet

Remplace le langage Oak destiné à la conception de logiciels embarqués sur des appareils ménagers Objets réutilisables déposés dans des paquetages

Indépendant de l’environnement

Multi-plateformes

 

Chaque système d’exploitation dispose de programmes adaptés à la compilation du code source Machine virtuelle JVM Plate-formes les plus utilisées Windows, Solaris, Linux

Approche OO (Orientée Objet)

Définition d'un objet

Ensemble de données et d'actions qui forment un tout indépendant
attributs attributs méthodes méthodes

Attributs

Décrivent l'état de l'objet

Nom Attributs Méthodes

Méthodes (opérations attachées à l'objet)

Permettent de faire 'vivre' les objets en leur affectant des actions à réaliser

Exemples

Bouton poussoir  Attributs : image, label, couleur, couleur de fond, police, ….  Méthodes : réaction au clic : affiche (dessine le bouton) Jeu  Attributs : couleur, vitesse, direction, déplacement  Méthodes : avancer, manger des pastilles, …

Approche OO (Orientée Objet)

Caractéristiques d’un objet

Ensemble d'attributs typés et nommés
  

Propriétés statiques Les attributs portent les valeurs attachées à l'objet L'ensemble des valeurs à un instant donné représente l'état de l'objet Définition des comportements de l'objet Distinction et unicité de l'objet

− −

Ensemble de méthodes

Identité

Approche OO (Orientée Objet) .

Paramétrage JAVA  Installation du JDK − Installation du JDK (Java Development Kit)  Disponible sur le site de SUN Microsystems − http://java. c’est gratuit   Décompresser le JDK dans le répertoire d’accueil du JDK C:\JAVANATIF (ou autre) Créer le répertoire de travail C:\JAVAWORK (ou autre) Pour faire reconnaître les binaires d’exécution − − Paramétrer le système  Faire apparaître la fenêtre de dialogue : Propriétés systèmes   Sélectionner l’onglet «Avancé » + Bouton « Variables d’environnement » Menu/Démarrer/Panneau de configuration/Système .sun.com (version pour Windows).

C:\JAVAWORK − Tester le paramétrage  Dans une fenêtre console (menu démarrer/exécuter : cmd) − Taper javac + [RC] les options de la commande s'affichent ..Installation JAVA : paramétrer Windows Installation JDK (Paramétrage Windows) − Reconnaissance des binaires et bibliothèques JAVA  Boîte de dialogue « Variables d’environnement » − − « Fenêtre variables utilisateur pour XXX… »  Sélectionner la variable PATH dans la fenêtre .Entrer en fin de ligne : ..Cliquer sur Modifier .C:\JAVANATIF\bin « Fenêtre variables systèmes »  Créer la variable CLASSPATH en cliquant sur « Nouveau » CLASSPATH=C:\JAVANATIF\lib.

exe -> code binaire Code binaire -> exécuté sur une machine virtuelle Machine virtuelle : java.java compilé avec javac.exe C'est la machine virtuelle qui assure la compatibilité entre les systèmes Paramétrage des variables d'environnement CLASSPATH et PATH . java utilise la technique du pseudocode Source *.Compilateur Programme source JAVA Compilateur JAVAC Pseudo Code Machine Virtuelle Utilisateur       Pour que les programmes JAVA puissent tourner sur tous types de station de travail.

Nature d'un programme POO  Tous les éléments constitutifs d'une application sont représentés sous forme d'objets Menu principal Fenêtre Fenêtre Fenêtre Fenêtre DIVISER POUR REGNER .

Instance de classe  Instance − − − − − Terme anglais qui signifie exemple En POO le terme instance désigne un objet On utilise le terme 'objet' à l'évocation d'un objet en général On utilise le terme 'Instance' dès que l'on parle précisément d'un objet particulier en programmation La classe permet de définir tous les états et comportements possibles pour les objets instanciés de la classe .

*/ définition d'un bloc de commentaires .Premier programme JAVA  Application JAVA − − − Succession de descriptions de classes Contenu dans un fichier d'extension *.java Structure du code  Définition de classe { Description du contenu de la classe } Définition de classe { Description du contenu de la classe } // etc …  Commentaires − // jusqu'à la fin d'une ligne ou /* ….

Source d'une application  Une application est un programme java autonome (par opposition à une applet qui s'éxécute au sein d'un navigateur) − Le source d'une application java doit contenir une méthode 'main' public class MonProgramme { // … public static void main (String args[]) { // Instruction exécutée au démarrage de l'application .

' sert à afficher le texte 'bonjour'.println ("Bonjour"). .out.java public class Bonjour { public static void main (String args[]) { System..println("Bonjour").Source d’une application  Exemple – // Fichier Bonjour..out. Nous y reviendrons plus en détail par la suite. } } L'instruction 'System.

A faire    Saisir le code du fichier ‘Bonjour.java' Compiler puis exécuter le programme avec l'instruction java Bonjour Avec un EDI (environnement de développement intégré) tel Eclipse ou Netbeans.. les choses se simplifient. ..

} } .out.Premier programme JAVA  Règles de compilation − Fichiers   Un fichier d’extension *.java par classe à compiler Le nom du fichier doit être identique au nom de la classe Bonjour.java compilation Bonjour.java C:\javac Bonjour.class public class Bonjour { public static void main(String args[]) { System.println ("bonjour").

ils sont situés dans ses répertoires systèmes Les packages développés sont stockés dans le répertoire ou sous répertoires de l'application Les chemins de recherche des packages doivent tous être renseignés dans la variable CLASSPATH . Il s'agit d'une unité de programme où l'on définit plusieurs classes Les classes d'un Package sont utilisables telles quelles ou par héritage lors de la construction des classes Un package se présente comme un répertoire dans lequel on peut stocker plusieurs classes Java possède des packages standards.Package (paquetage)  Définition − − − − − − Un package est une bibliothèque de classes.

il est nécessaire d'utiliser l'opérateur ".lang" identifie le package par défaut "lang " du sous répertoire "java"  Exemple − ." pour parcourir l'arborescence Le package "java.Package (paquetage)  Identification − − Un package est identifié par le nom du sous répertoire dans lequel il est stocké Lorsqu'un package est stocké dans un sous répertoire.

[nom de la classe] .Package (paquetage)  Package (espace de nommage en C++) − − Répertoire qui contient des classes java (fichiers compilés) Mot clé « package »     Regroupement sémantique d’un ensemble de classes Nom du répertoire d’accueil = nom du package Il doit être déclaré dans chacun des fichiers du répertoire Exemple : − package graphique : ‘swing’  Accès à une des classes du package : swing.

} } >cd JAVAWORK >mkdir cours >javac -d .println ("bonjour"). public class Bonjour { public static void main(String args[]) { System.java + Compilation + exécution dans ce répertoire cours Bonjour.java Le ‘package’ est placé dans le répertoire C:\JAVAWORK\cours\ Exécution : Se placer dans le répertoire cd C:\JAVAWORK >java cours/Bonjour . Bonjour.out.class package cours.Package (paquetage) + JAVAWORK Bonjour.

util.Package (paquetage)  Accéder à une classe − L'accès à une classe de package se réalise via l'opérateur  ".Date" identifie la classe "Date" du package "util" du répertoire système "java" Pour accéder à la classe d'un package on peut utiliser le nom complet de la classe  Exemple −  Utilisation d'une classe dans un package − . " "java.

Package (paquetage)  Exemple public class MonPackage { public static void main (String arg[]) { System.out. java.println ("Test de package").util.Date aujourdHui = new java.util.out. } System.println (aujourdHui). } .Date().

Il est inutile de préciser le nom du package à chaque fois que l'on y fait référence Syntaxe de la directive import   import NomPackage. importe une classe du package .NomClasse.* . importe toutes les classes du package import NomPackage.Package (paquetage)  Importer les packages − − − La directive import au début d'un code source permet d'accéder à certains packages ou à certaines classes.

public class Pack1 { public static void main (String arg[]) { System.out.util.out. } } . System.println ("Mon test de package").Package (paquetage)  Exemple import java.*.println (aujourdHui). Date aujourdHui = new Date().

Package (paquetage)

Création d'un nouveau package

Pour créer un package

Créer autant de fichiers de classes que le nombre de classes à stocker dans le Package Chaque fichier de classe commence par la directive "package" suivie du nom du package package nomPackage; La classe et les méthodes qui doivent être accessibles doivent être définies par l'attribut "public" La classe et les méthodes qui ne doivent pas être accessibles doivent être définies par l'attribut "private" Le nom du fichier source doit être le même que le nom de la classe

Package (paquetage)

Exemple

package employe; public class Personne { private String nom; private String prenom; public Personne (String nom, String prenom) { this.nom = nom; // this est la référence sur l'instance courante this.prenom = prenom; } public String getNom() { return this.nom; } public String toString () { return this.nom + ", " + this.prenom; } }

Package (paquetage)

Quelques packages livrés avec java

java.swing Interface graphique: GUI (Graphical User Interface)  java.io Entrées sorties java.lang Classes d'aide du langage (importées automatiquement) java.net Gestion de réseaux (URLs, sockets) java.util Utilitaires divers

Déclaration et instructions

Déclaration
− −

Description destinée au compilateur Liée à la nature des données manipulées Ordre exécutable (pseudocode), concerne des actions Utilisées pour écrire le comportement des objets

Instruction
− −

Exemple
// Déclarations int nombre, autreNombre = 8; // Instruction nombre = (10 * autreNombre)/ 15;

texte = "Bonjour". } . autreNombre = 15.Bloc d’instructions  Bloc − Il est parfois utile de regrouper plusieurs instructions ou déclarations en bloc afin de les considérer comme faisant une seule instruction ou déclaration  Exemple // exemple de bloc { nombre = 10.

…// autres attributs } .Classe  Modèle de définition pour les objets − − Modèle pour les attributs Modèle pour les méthodes  Exemple : classe Cercle tre mè dia public class Cercle { private int epaisseurTrait.

Instanciation (retourne la référence sur l’objet) Cercle c = new Cercle (23. 24. 40. O). // allocation mémoire . Signification − − Instanciation Instanciation : création d'un objet à partir d'une classe Les 3 phases de l'instanciation    Création et initialisation des attributs en mémoire Appel de méthodes particulières (constructeur) Après création et initialisation de l'objet − Retour d'une référence sur l'objet (son identité)  Instancier un objet − − Déclaration de la variable de la classe à instancier  Placer une référence sur l’objet (adressage) : Cercle c.

… Pour chaque objet.Instanciation  Instanciation d'un objet − − Mêmes attributs mais de valeurs différentes La classe définit les modèles des objets à instancier   Modèle pour les attributs Modèle pour les objets on peut définir un attribut rayon Un attribut epaisseurTrait − Classe instanciée : Cercle   − − Chaque cercle instancié possède son propre rayon et sa propre épaisseur de trait. les méthodes de la classe engendrent le même comportement .

Il s'agit de valeurs ou de références Les méthodes ou fonctions membres sont constituées d'instructions permettant de décrire le comportement des objets  Méthodes − .Déclaration des classes   Une classe permet de définir l'état et le comportement des objets Propriétés/Attributs − L'état d'un objet est mémorisé grâce à des propriétés ou données membres.

} } − L'entête d'une classe comprend le mot clé 'class' ..Déclaration des classes  Déclaration d'une classe − Entête de la classe { Déclaration de propriété.) { déclarations et instructions propres à la méthode. Déclaration de méthode (.

private String CP. public void demenager (…) { // instructions pour le changement d'adresse } public void imprimerEnveloppe() { // instructions pour imprimer les enveloppes } } − String … déclare une propriété destinée à mémoriser une valeur de type texte .Déclaration des classes  Exemple // Nom du client // fAdresse du client // Code postal // Ville public class Client { private String Nom. private String Ville. private String Adresse.

propriété  Appeler une méthode Paramètre − referenceObjet.Accéder aux méthodes et propriétés  Accès aux propriétés et méthodes de classe − Supposons que de la classe Client ait instancié l’objet 'clientAfacturer‘   Pour accéder à une méthode ou à une propriété de l'objet.‘ Accéder à une propriété referenceObjet. on utilise l'opérateur '.méthode (paramètres)  Un paramètre est une information complémentaire fournie à une méthode afin d'en déterminer le comportement .

// imprime une enveloppe avec les coordonnées du client clientAfacturer. // modifie l'adresse du client clientAfacturer.nom.. "JavaLand").Accéder aux méthodes et propriétés  Exemple // permet de connaître le nom du client clientAfacturer.) font appel au constructeur de la classe (initialisation de l'objet instancié) .demenager ("1 rue du Paradis"..imprimerEnveloppe().  La référence de l'objet est créée lors de l'instanciation de la classe dont il est dépendant − Exemple  clientAfacturer = new Client(…) Les paramètres de Client(. "00000".

Cercle c2 = new Cercle(). − Une classe peut avoir plusieurs constructeurs  le nombre et le type des paramètres peuvent être différents (cf.0).20. Surcharge de méthode) .20.Constructeur  Définition − Méthode particulière    Porte le nom de sa classe Ne possède pas de type de retour Peut posséder un nombre quelconque de paramètres  Appel du constructeur − Appelé au moment de la création de l’objet (phase d'instanciation) Cercle c1 = new Cercle(20.

héritage)  − Un des constructeurs de la classe parente est appelé  Libération des ressources de la classe Pris en charge par le garbage-collector ou ramasse-miettes − ria va eag r rb o ga llect co n tri S g es bl .Constructeur (comportement)  Constructeur par défaut − Si aucun constructeur n’est défini alors Java en crée un par défaut La classe hérite d’une autre classe (cf.

Encapsulation  Définition − L'encapsulation se définit comme la mise en œuvre de la distinction entre la manière dont on utilise une classe et la manière dont la classe a été réalisée − La manière dont on utilise une classe ou un objet constitue l'interface avec cette classe ou cet objet .

Encapsulation  Encapsulation − Avantages  Utilisation simplifiée des objets − − Utilisation d'un objet sans en connaître son implémentation La connaissance de son interface suffit Le code développé et testé n'engendre plus de bogues  Meilleure robustesse du programme −  Simplification des tâches de maintenance Liste des méthodes et des attributs accessibles de l'extérieur − − Interface de classe  Méthodes et éventuellement attributs sont publics − Les méthodes et attributs connexes aux comportements internes des objets sont privés (utilisation réservée à la classe) .

Encapsulation  Modificateur d'accès − − − A toute donnée membre d'une classe on associe un attribut d'encapsulation ou modificateur d'accès. Il détermine les circonstances pour lesquelles on manipule les objets instanciés de la classe. Trois modificateurs d'accès    public : on peut accéder de n'importe où aux données membres de la classe private : les données ne peuvent être manipulées que par l'intérieur de la définition de la classe (manipulation par les méthodes de la classe uniquement) protected : les données sont manipulables par les méthodes des classes filles uniquement (cf héritage) .

Encapsulation Si aucun modificateur d'accès n'est précisé alors l'attribut est accessible par les classes définies dans le même package (visibilité « package friendly ») .

cy += dy. cy. private int rayon. int dy) { cx += dx. … // autres attributs public void move(int dx. meilleure robustesse Messages Simplification de la maintenance externes méthodes public class Cercle { private int cx.Encapsulation  Usage − Ne montrer de la classe instanciée que ce qui est nécessaire à son utilisation   Simplification de l'utilisation des objets. private int épaisseur_trait. } } // Visible de l'extérieur attributs classe .

Liste paramètres : liste de paramètres typés et nommés } ……… public void dessine() {System. int cy.rayon = 10. float r){à l'extérieur de la classe public : l'attribut est manipulable à l'extérieur this.rayon = r. cy. type retour : type élémentaire. Attributs private float rayon.cy =10. de la classe this.cx = 10.} public void modifieRayon(float r) { rayon = r. rien this. Expression : permet de fournir une valeur par this. } Encapsulation (visibilité) .cy = cy. [visibilité][type retour]nom(liste paramètres) this. défaut lors de la création de l'objet } public Cercle() { Méthodes this. [Visibilité]type nom[=expression] // interface publique Les valeurs de visibilité private : l'attribut est inaccessible // les constructeurs public Cercle(int cx. un tableau.out.println("Je dessine un cercle"). une classe.cx = cx.public class Cercle { // attributs privés à la classe private int cx.

f. double tauxTVA) { HT = ht.6). double TTC. 19. TTC = HT + TVA. } } public class AppliComptable { public static void main (String args[]) { Facture f = new Facture (1000. TVA = HT * taux TVA / 100.TTC = 2000. private double TVA.6 HT : 1000 TTC : 2000 INCOHERENT! .Encapsulation  Cohérence public class Facture { private double HT. } } Problème de taille : TVA : 19. Facture (double ht.

5). private double TTC. TVA = HT * tauxTVA / 100. f. 19.setHT(1020).6).setTVA(5. TTC = HT + TVA. HT = nouveauHT. double tauxTVA) { HT = ht. } public void setHT (double nouveauHT) { TVA = TVA / HT * nouveauHT. Facture (double ht. } public double getTVA() { return TVA. private double TVA.} public double getTTC() { return TTC. } public void setTVA (double tauxTVA) { TVA = HT * tauxTVA / 100. } } public class AppliComptable { public static void main (String args[]) { Facture f = new Facture (1000.L'encapsulation : solution au problème de l'exemple public class Facture { private double HT. TTC = HT + TVA.TTC = 2000. INTERDIT! f.} …. } public double getHT() { return HT. } } Encapsulation . // f.. TTC = HT + TVA.

– Les propriétés de l'appareil sont sa résistance et sa tension d'alimentation.Encapsulation  Exercice – Concevoir et tester une classe décrivant un appareil de chauffage électrique en mettant en œuvre la notion d'encapsulation . Ecrire toutes les méthodes y compris celles permettant de changer la tension et l'intensité . la puissance s'obtient en multipliant la tension par l'intensité. – Rappel :  l'intensité se calcule en divisant la tension par la résistance. Les autres caractéristiques qui concernent son état sont : le courant le traversant et la puissance qu'il consomme.

} public String afficher () } { return diametre + '' '' + epaisseur. public String afficher () // … { return super. protected double DiametreInterieur. public class PlaqueCirculaire public class Couronne extends PlaqueCirculaire { { protected double diametre.afficher(). permet d'accéder à un .Encapsulation  L'attribut protected − Les Méthodes ou propriétés déclarées protégées ne peuvent être utilisées qu'à l'intérieur de la classe actuelle et de ses sous classes (classes qui héritent de la classe actuelle). } } − Le mot clé super suivi de l'opérateur point membre défini dans la classe ancêtre . ainsi que dans les classes définies dans le même package. protected double epaisseur.

x = x. int y) { this. public Cercle(int cx. this. cy). private float rayon. float r) { origine = new Point (cx. } } • Un objet Cercle est propriétaire de son instance Point référencé par l'attribut origine • Le constructeur de Cercle prend en charge la construction de l'attribut origine à l'appel du constructeur de la classe • L'origine issue de la classe Point est un sous objet du Cercle • La libération mémoire d'un Cercle entraîne celle du point origine . public point (int x. private int y. } } public class Point { private int x. rayon r.Agrégation  Agrégation public class Cercle{ private Point origine. int cy.y = y.

Manipulation des types  Nature − Les types de données sont de deux natures   Valeurs simples : Nombres. texte Références à d'autres objets − − Les types de données peuvent être considérés comme constituant des classes On peut considérer les termes 'type de données' et 'classe' comme synonymes .

Manipulation des types  Déclaration d'une donnée TypeDeDonnées nomDeLaDonnée. TypeDeDonnées nomDeLaDonnée = valeurInitiale. − Comme propriété/attribut/donnée membre  Les données sont déclarées dans une classe et tous les objets de la classe possèdent cette propriété − − Comme variable de bloc dans une méthode Comme paramètre dans une méthode .  A quel endroit déclarer les types de données .

private String ville. // … } Déclaration de propriétés (attributs) // Nom du client // Adresse du client // Code postal // Ville Les attributs ont par défaut la valeur null (référence nulle).Manipulation des types  Exemple public class Client { private String nom. Le(s) constructeur(s) les initialisera. private String adresse. . private String CP.

out.  Exemple public class Application { public static void main (String args[]) { double horsTaxe = 1000. // montant HT double TVA . // déclare la TVA TVA = horsTaxe * 19. Déclarer une variable c'est associer un nom à un espace mémoire Si une variable n'est pas initialisée son contenu reste indéterminé. Il est interdit de manipuler des variables qui n'ont pas été initialisées.6 / 100. System.println (horsTaxe). } } // Calcule la TVA // Affiche la valeur HT .Manipulation des types  Variable dans une méthode − Une variable permet de mémoriser temporairement une donnée.

.Référence aux objets  Référence d'un objet Lorsque l'on déclare une référence à un objet. elle est initialisée avec la valeur 'null' (on ne sait pas à quel objet la propriété fait référence)  L'instanciation d'une classe consiste à créer un objet à partir de cette classe − Pour instancier un objet il faut utiliser l'opérateur 'new' suivi du nom de la classe et entre parenthèses le paramètres   new NomClasse(). il n'est pas automatiquement créé − Lorsqu'une référence à un objet est déclarée en tant que propriété. New NomClasse (paramètres).

unClient = new Client(). } } . Client autreClient = new Client().Référence aux objets  Exemple public class Client { // … } class Application { public static void main (String args[]) { Client unClient.

Référence aux objets  Autre exemple public class Client { // … } public class Application { public static void main (String args[]) { Client inClient = new Client(). Client associeDuClient = unClient. } } .

Déclaration des méthodes  Méthodes − −  Les méthodes sont décrites à l'intérieur des classes Elles constituent le seul endroit ou l'on peut mettre des instructions Une méthode exécute une action Méthodes sans paramètre et sans valeur de retour − Déclaration void nomDeLaMethode() { Instructions et déclarations qui font partie de la méthode facultatif : return. pour sortir de la méthode } .

 Les propriétés de l'objet sont accessibles par l'intérieur de la méthode .Déclaration des méthodes  Exécution d’une méthode − Lorsque l’on exécute une méthode elle est destinée à être exécutée par un objet.

MetAjour().6 / 100. private double TVA. private double TTC. TTC = HT + TVA. public class Appli { public Static void main (String args[]) { Facture f = new Facture (). f. } } package compta. f. void MetAjour() { TVA = HT * 20.Déclaration des méthodes  Exemple package compta. public class Facture { // package friendly double HT.HT = 1000. } } .

Méthodes avec paramètres  Déclaration TypeValeurDeRetour NomDeLaMéthode (liste de paramètres) { Instructions et déclarations faisant partie de la méthode return valeurDeRetour. } − − Les paramètres sont des variables La liste des paramètres se décrit comme suit  TypeParamètre NomDuParamètre …. .

19.initialiser (1000. double taux) { HT = ht. double tauxTVA. // … } } void initialiser (double ht. } // … } .6). class Facture { double HT.Méthodes avec paramètres   La méthode 'initialiser' comprend des paramètres lui permettant de préparer l'objet avant toute utilisation Appel de la méthode − Exemple class AppliFacture { public static void main (string args[]) { facture f = new Facture (). tauxTVA = taux. // deux paramètres ht et taux f.

public double calculTTC () { return (1 + taux) * HT .. private double TVA. // … double prixTTC = f. // . } } . } } public class Facture { private double HT.Valeur de retour  Exploitation de la valeur − Exemple public class Appli { public static void main (String args[]) { Facture f = new Facture ().calculTTC().

…} Exemple − − . void move(boolean direction).Surcharge des méthodes  Définition − −  Capacité des objets d'une même hiérarchie de classes à répondre différemment à une méthode de même nom Les paramètres de la méthode sont différents On peut définir plusieurs méthodes move() pour la classe Rectangle La méthode correspondante est sélectionnée en fonction du type et du nombre de paramètres class Rectangle { void move(int dx. void move(int vitesse). int dy).

plusieurs méthodes peuvent porter le même nom si et seulement si le type des paramètres diffère.Surcharge des méthodes  Surcharge − − − Dans une même classe. La méthode est surchargée A l'appel de la méthode le programme détermine laquelle des méthodes utiliser .

double taux) { HT = ht. TTC = HT + TVA } void Initialiser (double ht. private double TVA. TTC = HT + TVA } //… } . TVA = taux * ht / 100. privaye double TTC.6 * ht / 100.Surcharge des méthodes  Exemple public class Facture { private double HT. void Initialiser (double ht) { HT = ht. TVA = 19.

f1.Surcharge des méthodes public class AppliFacture { public static void main (String args[]) { Facture f1 = new Facture ().Initialiser(2000. Facture f2 = new Facture (). f2.5). // … } } .Initialiser (1000). 5.

Constructeur  Constructeur − − C'est une méthode particulière qui est appelée lors d'une instanciation Syntaxe  C'est une méthode sans valeur de retour qui porte le même nom que la classe  Peut comporter des paramètres  Peut être surchargé .

Facture1() { HT = 0..... double TVA. TVA = ht * 0.. } Facture1 (double ht. } . TVA = 0.. } constructeurs . TVA = ht * taux / 100.Constructeur  Exemple public class Facture1 { double HT. } Facture1 (double ht) { HT = ht.196. double taux) { HT = ht.

Facture1 UneFacture ().Constructeur  Appel du constructeur par défaut Le constructeur sans paramètres s'appelle le constructeur par défaut Facture1 uneFacture = new Facture1(). .

f1. Facture1 f2 = new Facture1(1000).Constructeur  Exemple public class Construire { public static void main (String args[]) { Facture1 f1 = new Facture1().5). Facture1 f3 = new Facture1(2000.afficher() } } . 5.afficher().afficher(). f1. f1.

// . // . private double TVA. this. uneFacture est l'objet courant  Fait appel à l'objet courant.Objet courant  Mot-clé this − Implicite  Lorsque l'on écrit 'uneFacture. Exemple public class Facture { private double HT.changeTVA(5.. Lorsque l'on exécute la méthode. void ChangeTVA (doubleTVA) { this.TTC = this.TVA = TVA.HT + this.' on appelle la méthode 'changeTVA' de la classe 'Facture' pour l'objet 'uneFacture'..5). private double TTC.TVA. } } .

} . c'est une constante  Exemple public class Couronne { final double DIAMETRE_MAXIMUM = 250. final double EPAISSEUR_MINIMUM = 2. final double EPAISSEUR_MAXIMUM = 50.Constantes  Déclaration de constantes − − On utilise le mot clé final pour le placer devant un nom de propriété et définir une constante dans la classe La propriété peut être utilisée tout au long du programme. elle est alors invariante.

} } } } A chaque instanciation le compteur est augmenté d'une unité .compteur). Plaque() { compteur = compteur + 1.out.println (unePlaque.out. // via un objet System.compteur). Plaque uneAutre = new Plaque(). // via la classe System.println (Plaque. Plaque encoreUne = new Plaque().Propriété de classe  Exemple − l'exemple de propriété de classe permet de compter combien d'objets d'une classe ont été instanciés public class Appli { public static void main(String[] args) { Plaque unePlaque = new Plaque(). public class Plaque { static int compteur = 0.

Propriété de classe (complément)  Méthodes et propriétés − − − Une méthode de classe ne peut faire référence aux propriétés d'un objet Une méthode de classe fait référence aux propriétés de la classe Toutes les applications possèdent une méthode de classe main .

On crée un tableau avec l'opérateur new new TypeElements [Quantité] .Tableaux  Définition − − − − Un tableau est un objet contenant un nombre d'éléments donnés et tous de même type. ou TypeElements [ ] Tableau. Les élément peuvent être de type simple ou des objets Un tableau se déclare avec l'opérateur [] placé après le nom du tableau ou après le type des éléments du tableau TypeElements Tableau[ ].

10. } }  Accès aux éléments d'un tableau − Tous les éléments d'un tableau sont numérotés avec une valeur comprise entre 0 et le nombre d'éléments du tableau moins 1. 120. Ce numéro se nomme indice .Tableaux  Exemple public class DemoTableaux { public static void main (String [] args) { int poids [ ] = {100. 200}.

 nomTableau [indiceElement]  Parcours d’un tableau − Les boucles sont particulièrement appropriées pour parcourir les tableaux .Tableaux  Accéder à un élément − L'accès à un élément du tableau se réalise avec l'opérateur [] et son indice.

System. for (int i=0. System. 120.print (" : ").length. System.out. i++) { System.print (poids [i]).print ("Affiche élément "). 200}. } } } .out. i < poids.10.print (i).out.out.Tableaux  Exemple public class DemoTableaux { public static void main (String args []) { int poids [] = {100.

il est nécessaire d'utiliser des tableaux Il est également possible d'utiliser des tableaux de tableau On crée des tableaux à plusieurs dimensions avec les opérateurs []  Création − .Tableaux à plusieurs dimensions  A quoi ça sert ? − − Supposons que nous voulions modéliser un damier ou une position dans un espace.

Tableaux à plusieurs dimensions  Exemple public class Tableaux { public static void main (String args[]) { int damier[][].length. espace = new Point [100][100][100]. } } . damier = new int [10][10]. // Accès à un élément du damier damier [5][5] = 10. // Accès à une ligne du tableau int longueurLigne1 = damier[0]. Point espace [][][].

40. 3) } . 1.Tableaux (copie)  Copier un tableau − La classe System possède un ensemble de méthodes surchargées arraycopy qui permettent la copie d'une partie de tableau dans un autre  Exemple public class CopieTableau { public static void main (String args[]) { int [] reference = {10. 20. } // destination contient : {20. 30. int [] destination = new int [3]. 40} System. 0.arraycopy (reference. destination. 50}. 30.

Chaînes de caractères  Définition − − Les chaînes de caractères sont destinées à gérer des propriétés ou des variables de type texte. Elles sont mises en opeuvre sous la forme de la classe String Une chaîne de caractères de type String ne doit pas être confondue avec un tableau de caractères de type char [] Il existe des fonctions de conversion pour passer de l'un à l'autre .

// nombre de caractères à recopier String texte = new String (tabCar. int de but = 1. debut. char tabCar[] = "toto". String autreTexte = new String (texte).Chaînes de caractères  Instanciation des chaînes de caractères − − String texte = "constante". nbCar). . // indice de départ int nbCar = 3.

char [] tabCar = texte. texte = new String (tabcar).toCharArray(). Cette méthode donne accès à un tableau manipulable pour effectuer un traitement de la chaîne caractère à caractère Class Chaine { public static void main (String Args[]) { String texte = "UneChaine".Chaînes de caractères  Conversion de la chaîne de caractères − Les objets de la classe String possèdent la méthode toCharArray() qui retourne un tableau de caractères. // Unechaine // … } }  Exemple . tabCar[3] = 'c'.

message = debut + suite. String suite = "jour". String message. // bonjour message += " les amis". // bonjour les amis } } .Chaînes de caractères  Opération sur les chaînes de caractères − Concaténation   La concaténation consiste à mettre deux chaînes bout à bout On réalise une concaténation avec l'opérateur + ou +=  Exemple public class Chaine { public static void main (String args []) { String debut = "bon".

− Les méthodes indexOf retournent –1 en cas d'échec . aPartirDe) permettent de retourner l'indice d'un caractère dans une chaîne (si le caractère existe).Chaînes de caractères  Chercher un caractère dans une chaîne − Les méthodes   indexOf (Caractere) indexOf(Caractere.

indexOf ('u'). 1). int troisiemeU = texte. // 1 int deuxiemeU = texte.indexOf('u'.Chaînes de caractères  Exemple public class Chaine1 { public static void main (String args[]) { String texte = "Aujourd'hui".5). int premierU = texte. int quatriemeU = texte. 10). } } // 4 // 9 // -1 .indexOf('u'.indexOf('u'.

// Egalité des contenus equalsIgnoreCase(autreChaine) // Egalité (Minuscule/Majuscule non pris en compte) .Chaînes de caractères  Comparaison de chaînes de caractères − Les méthodes qui permettent de comparer une chaîne de caractères à une autre sont    compareTo(autreChaine). // Plus grand que equals (autreChaine).

out.compareTo ("abc") == 0) System. if (texte.Chaînes de caractères  Exemple public class Chaine { public static void main (String args[]) { String texte = "ABC".println (texte +"== abc").out.compareTo ("ABC") == 0) System.println (texte + "< DEF"). } } .out. if (texte.compareTo ("DEF") < 0) System.println (texte + "== ABC"). if (texte.