Vous êtes sur la page 1sur 89

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)

Orienté Objet

Inspiration C++

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

Approche OO (Orientée Objet)  Définition d'un objet Ensemble de données et d'actions qui forment un

Ensemble de

données

et d'actions qui forment un tout

attributs attributs
attributs
attributs

indépendant

Nom

Attributs

Méthodes

méthodes

méthodes

Attributs

Décrivent l'état de l'objet

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

Ensemble de méthodes

Définition des comportements de l'objet

Identité

Distinction et unicité de l'objet

Approche OO (Orientée Objet)

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.sun.com (version pour Windows), 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)

Paramétrer le système

Pour faire reconnaître les binaires d’exécution

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

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

- Cliquer sur Modifier

- Entrer en fin de ligne :

,C:\JAVANATIF\bin

« Fenêtre variables systèmes »

Créer la variable CLASSPATH en cliquant sur « Nouveau » CLASSPATH=C:\JAVANATIF\lib;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

Compilateur

Programme

source

JAVA

Machine Pseudo Code Virtuelle Utilisateur
Machine
Pseudo Code
Virtuelle
Utilisateur
Compilateur JAVAC
Compilateur
JAVAC

Pour que les programmes JAVA puissent tourner sur tous types de station de travail, java utilise la technique du pseudocode

Source *.java compilé avec javac.exe -> code binaire

Code binaire -> exécuté sur une machine virtuelle

Machine virtuelle : java.exe

C'est la machine virtuelle qui assure la compatibilité entre les systèmes

Paramétrage des variables d'environnement CLASSPATH et

PATH

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
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

Premier programme JAVA

Application JAVA

Succession de descriptions de classes Contenu dans un fichier d'extension *.java Structure du code

Succession de descriptions de classes Contenu dans un fichier d' extension *.java Structure du code
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 /* …. */ définition d'un bloc de commentaires

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

Source d’une application

Exemple

// Fichier Bonjour.java

public class Bonjour

{

public static void main (String args[])

{

System.out.println ("Bonjour");

}

}

L'instruction 'System.out.println("Bonjour");' sert à afficher le texte 'bonjour'. Nous y reviendrons plus en détail par la suite

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

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

C:\javac Bonjour.java
C:\javac Bonjour.java

compilation

Bonjour.java

public class Bonjour

{

Bonjour.class

Bonjour.java public class Bonjour { Bonjour.class public static void main(String args[]) { System.out.println

public static void main(String args[])

{

System.out.println ("bonjour");

}

}

Package (paquetage)

Définition

Un package est une bibliothèque de classes. 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, 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

de l'application Les chemins de recherche des packages doivent tous être renseignés dans la variable CLASSPATH
de l'application Les chemins de recherche des packages doivent tous être renseignés dans la variable CLASSPATH
de l'application Les chemins de recherche des packages doivent tous être renseignés dans la variable CLASSPATH
de l'application Les chemins de recherche des packages doivent tous être renseignés dans la variable CLASSPATH
de l'application Les chemins de recherche des packages doivent tous être renseignés dans la variable CLASSPATH

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, il est nécessaire d'utiliser l'opérateur "." pour parcourir l'arborescence

un sous répertoire, il est nécessaire d'utiliser l' opérateur "." pour parcourir l'arborescence

Exemple

Le package "java.lang" identifie le package par défaut "lang " du sous répertoire "java"

Package (paquetage)

Package (espace de nommage en C++)

Répertoire qui contient des classes java (fichiers compilés) Mot clé « package »

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.[nom de la classe]

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

Package (paquetage)

Accéder à une classe

L'accès à une classe de package se réalise via l'opérateur ". "

Exemple

"java.util.Date" identifie la classe "Date" du package "util" du répertoire système "java"

Utilisation d'une classe dans un package

Pour accéder à la classe d'un package on peut utiliser le nom complet de la classe

Package (paquetage)

Exemple

public class MonPackage

{

public static void main (String arg[])

{

System.out.println ("Test de package");

java.util.Date aujourdHui = new java.util.Date();

System.out.println (aujourdHui);

}

}

Package (paquetage)

Importer les packages

La directive import au début d'un code source permet d'accéder à certains packages ou à certaines classes. 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

est inutile de préciser le nom du package à chaque fois que l'on y fait référence
est inutile de préciser le nom du package à chaque fois que l'on y fait référence

import NomPackage.* ; importe toutes les classes du package

import NomPackage.NomClasse; importe une classe du package

Package (paquetage)

Exemple

import java.util.*;

public class Pack1

{

public static void main (String arg[])

{

System.out.println ("Mon test de package");

Date aujourdHui = new Date();

System.out.println (aujourdHui);

}

}

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

Description destinée au compilateur Liée à la nature des données manipulées

Instruction

Ordre exécutable (pseudocode), concerne des actions Utilisées pour écrire le comportement des objets

Ordre exécutable (pseudocode), concerne des actions Utilisées pour écrire le comportement des objets

Exemple

// Déclarations int nombre, autreNombre = 8; // Instruction nombre = (10 * 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; autreNombre = 15; texte = "Bonjour";

}

Classe

Modèle de définition pour les objets

Modèle pour les attributs Modèle pour les méthodes

Modèle pour les attributs Modèle pour les méthodes

Exemple : classe Cercle

public class Cercle

{

private int epaisseurTrait; …// autres attributs

 Exemple : classe Cercle public class Cercle { private int epaisseurTrait; …// autres attributs diamètre
diamètre
diamètre

}

Instanciation

Signification

Instanciation : création d'un objet à partir d'une classe Les 3 phases de l'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;

Instanciation (retourne la référence sur l’objet)

Cercle c = new Cercle (23, 24, 40, O); // allocation mémoire

Instanciation

Instanciation d'un objet

Mêmes attributs mais de valeurs différentes

Modèle pour les attributs

La classe définit les modèles des objets à

instancier

Modèle pour les objets

Classe instanciée : Cercle

on peut définir un attribut rayon

Un attribut epaisseurTrait

Chaque cercle instancié possède son propre

rayon et sa propre épaisseur de trait, … Pour chaque objet, les méthodes de la classe engendrent le même comportement

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. Il s'agit de valeurs ou de références

Méthodes

Les méthodes ou fonctions membres sont constituées d'instructions permettant de décrire le comportement des objets

Déclaration des classes

Déclaration d'une classe

Entête de la classe

{

Déclaration de propriété;

Déclaration de méthode ( )

{

déclarations et instructions propres à la méthode;

}

}

L'entête d'une classe comprend le mot clé 'class'

Déclaration des classes

Exemple

public class Client

{

 

private String Nom; // Nom du client

private String Adresse;

// fAdresse du client

private String CP; // Code postal

private String Ville; // Ville

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

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, on

utilise l'opérateur '.‘

Accéder à une propriété

referenceObjet.propriété

Appeler une méthode

referenceObjet.méthode (paramètres)

Paramètre

Un paramètre est une information complémentaire fournie à une méthode afin d'en déterminer le comportement

Accéder aux méthodes et propriétés

Exemple

// permet de connaître le nom du client clientAfacturer.nom;

// imprime une enveloppe avec les coordonnées du client clientAfacturer.imprimerEnveloppe();

// modifie l'adresse du client clientAfacturer.demenager ("1 rue du Paradis", "00000", "JavaLand");

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(

classe (initialisation de l'objet instancié)

)

font appel au constructeur de la

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,20,20,0);

Cercle c2 = new Cercle();

Une classe peut avoir plusieurs constructeurs

le nombre et le type des paramètres peuvent être différents (cf. Surcharge de méthode)

variables

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. héritage)

Un des constructeurs de la classe parente est appelé

garbage- collector String
garbage-
collector
String

Libération des ressources de la classe

Pris en charge par le garbage-collector

ou ramasse-miettes

Encapsulation
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

Utilisation d'un objet sans en connaître son implémentation La connaissance de son interface suffit

Meilleure robustesse du programme

Le code développé et testé n'engendre plus de bogues

Simplification des tâches de maintenance

Interface de classe

Liste des méthodes et des attributs accessibles de l'extérieur

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

les circonstances pour lesquelles on manipule les objets instanciés de la classe. Trois modificateurs d'accès
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 »)

Encapsulation

Usage

Ne montrer de la classe instanciée que ce qui est nécessaire à son utilisation

Simplification de l'utilisation des objets, meilleure robustesse

Simplification de la maintenance

Messages

externes méthodes attributs classe
externes
méthodes
attributs
classe

public class Cercle { private int cx, cy; private int rayon; private int épaisseur_trait; … // autres attributs

public void move(int dx, int dy) {

cx

+= dx;

cy

+= dy;

}

} // Visible de l'extérieur

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

Encapsulation

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

Encapsulation

L'encapsulation : solution au problème de l'exemple

public class Facture

{

private double HT; private double TVA; private double TTC;

Facture (double ht, double tauxTVA)

{

HT = ht; TVA = HT * tauxTVA / 100; TTC = HT + TVA;

}

}

public double getHT()

public double getTVA() { return TVA;}

public double getTTC() { return TTC;}

{ return HT; }

public void setHT (double nouveauHT) { TVA = TVA / HT * nouveauHT; HT =
public void setHT (double nouveauHT) {
TVA = TVA / HT * nouveauHT;
HT = nouveauHT;
TTC = HT + TVA;
}
public void setTVA (double tauxTVA) {
TVA = HT * tauxTVA / 100;
TTC = HT + TVA;
}
}

public class AppliComptable

{

public static void main (String args[])

{

Facture f = new Facture (1000, 19.6);

// f.TTC = 2000; INTERDIT!

f.setHT(1020);

f.setTVA(5.5);

}

}

Encapsulation

Exercice

Concevoir et tester une classe décrivant un appareil de chauffage électrique en mettant en œuvre la notion d'encapsulation .

Les propriétés de l'appareil sont sa résistance et sa tension d'alimentation. Les autres caractéristiques qui concernent son état sont : le courant le traversant et la puissance qu'il consomme.

Rappel :

l'intensité se calcule en divisant la tension par la résistance, la puissance s'obtient en multipliant la tension par l'intensité. Ecrire toutes les méthodes y compris celles permettant de changer la tension et l'intensité

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), ainsi que dans les classes définies dans le même package.

public class PlaqueCirculaire

{

protected double diametre;

{

protected double epaisseur; // … public String afficher ()

{

}

return diametre + '' '' + epaisseur;

}

}

public class Couronne extends

PlaqueCirculaire

protected double DiametreInterieur; public String afficher ()

{ return super.afficher(); }

Le mot clé super suivi de l'opérateur point . permet d'accéder à un membre défini dans la classe ancêtre

Agrégation

Agrégation

public class Cercle{ private Point origine; private float rayon;

public Cercle(int cx, int cy, float r)

{

origine = new Point (cx, cy); rayon r;

}

}

public class Point { private int x; private int y;

public point (int x, int y)

}

{

this.x = x; this.y = y;

}

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

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;

A quel endroit déclarer les types de données ,

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

Manipulation des types

Exemple

Déclaration de propriétés (attributs)

public class Client

{ private String nom; private String adresse; private String CP; private String ville; // …

}

// Nom du client // Adresse du client // Code postal // Ville

Les attributs ont par défaut la valeur null (référence nulle). Le(s) constructeur(s) les initialisera.

Manipulation des types

Variable dans une méthode

Une variable permet de mémoriser temporairement une donnée. 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.

Exemple

public class Application {

public static void main (String args[])

{

double horsTaxe = 1000; double TVA ;

TVA = horsTaxe * 19,6 / 100; System.out.println (horsTaxe);

}

}

// montant HT

//

déclare la TVA

// Calcule la TVA // Affiche la valeur HT

Référence aux objets

Référence d'un objet

Lorsque l'on déclare une référence à un objet, il n'est pas automatiquement créé Lorsqu'une référence à un objet est déclarée en tant que propriété, 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();

New NomClasse (paramètres);

Référence aux objets

Exemple

public class Client

{

}

// …

class Application {

public static void main (String args[])

{

 

Client unClient; unClient = new Client();

Client autreClient = new Client();

}

}

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

des classes Elles constituent le seul endroit ou l'on peut mettre des instructions Une méthode exécute

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

}

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.

Les propriétés de l'objet sont accessibles par l'intérieur de la méthode

Déclaration des méthodes

Exemple

package compta;

public class Facture

{

 

// package friendly double HT;

private double TVA; private double TTC;

void MetAjour()

{

TVA = HT * 20,6 / 100;

TTC = HT + TVA;

}

}

package compta;

public class Appli

{

 

public Static void main (String args[])

{

Facture f = new Facture (); f.HT = 1000;

f.MetAjour();

}

}

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

Les paramètres sont des variables La liste des paramètres se décrit comme suit

TypeParamètre NomDuParamètre ….

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 Facture

{

double HT; double tauxTVA;

// deux paramètres ht et taux

void initialiser (double ht, double taux)

{

HT = ht; tauxTVA = taux;

}

// …

}

class AppliFacture

{

public static void main (string args[])

{

facture f = new Facture ();

f.initialiser (1000, 19.6);

// …

}

}

Valeur de retour

Exploitation de la valeur

Exemple

public class Facture

{

private double HT; private double TVA; //

public double calculTTC ()

{

return (1 + taux) * HT ;

}

}

public class Appli

{

public static void main (String args[])

{

Facture f = new Facture (); // … double prixTTC = f.calculTTC();

}

}

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

de classes à répondre différemment à une méthode de même nom Les paramètres de la méthode

Exemple

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

pour la classe Rectangle La méthode correspondante est sélectionnée en fonction du type et du nombre

class Rectangle { void move(int dx, int dy); void move(int vitesse); void move(boolean direction);…}

Surcharge des méthodes

Surcharge

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

diffère. La méthode est surchargée A l'appel de la méthode le programme détermine laquelle des méthodes
diffère. La méthode est surchargée A l'appel de la méthode le programme détermine laquelle des méthodes

Surcharge des méthodes

Exemple

public class Facture

{

private double HT; private double TVA; privaye double TTC;

void Initialiser (double ht)

{

HT = ht; TVA = 19.6 * ht / 100; TTC = HT + TVA

}

void Initialiser (double ht, double taux)

{

HT = ht; TVA = taux * ht / 100; TTC = HT + TVA

}

//…

}

Surcharge des méthodes

public class AppliFacture

{

public static void main (String args[])

{

Facture f1 = new Facture ();

Facture f2 = new Facture (); f1.Initialiser (1000); f2.Initialiser(2000, 5.5); // …

}

}

Constructeur

Constructeur

C'est une méthode particulière qui est appelée lors d'une instanciation Syntaxe

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é

Constructeur

Exemple

public class Facture1 { double HT; double TVA; Facture1 (double ht) { Facture1() HT =
public class Facture1
{
double HT;
double TVA;
Facture1 (double ht)
{
Facture1()
HT = ht;
TVA = ht * 0.196;
{
}
HT = 0;
TVA = 0;
Facture1 (double ht, double taux)
{
}
HT = ht;
TVA = ht * taux / 100;
}
constructeurs
}

Constructeur

Appel du constructeur par défaut

Le constructeur sans paramètres s'appelle le constructeur par défaut

Facture1 uneFacture = new Facture1();

Facture1 UneFacture ();

Constructeur

Exemple

public class Construire

{

public static void main (String args[])

{

Facture1 f1 = new Facture1();

f1.afficher();

Facture1 f2 = new Facture1(1000);

f1.afficher();

Facture1 f3 = new Facture1(2000, 5.5);

}

f1.afficher()

}

Objet courant

Mot-clé this

Implicite

Fait appel à l'objet courant.

Lorsque l'on écrit 'uneFacture.changeTVA(5.5);' on appelle la méthode 'changeTVA' de la classe 'Facture' pour l'objet 'uneFacture'. Lorsque l'on exécute la méthode, uneFacture est l'objet courant

 Exemple public class Facture // void ChangeTVA (doubleTVA) { { private double HT; private
 Exemple
public class Facture
//
void ChangeTVA (doubleTVA)
{
{
private double HT;
private double TVA;
private double TTC;
this.TVA = TVA;
this.TTC = this.HT + this.TVA;
//
}
}

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, c'est une constante

classe La propriété peut être utilisée tout au long du programme, elle est alors invariante, c'est

Exemple

public class Couronne {

final double DIAMETRE_MAXIMUM = 250; final double EPAISSEUR_MAXIMUM = 50; final double EPAISSEUR_MINIMUM = 2;

}

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(); Plaque uneAutre = new Plaque(); Plaque encoreUne = new Plaque(); // via la classe System.out.println (Plaque.compteur); // via un objet System.out.println (unePlaque.compteur);

}

}

public class Plaque

{

static int compteur = 0; Plaque()

{

compteur = compteur + 1;

}

}

A chaque instanciation le compteur est augmenté d'une unité

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

de classe fait référence aux propriétés de la classe Toutes les applications possèdent une méthode de
de classe fait référence aux propriétés de la classe Toutes les applications possèdent une méthode de

Définition

Tableaux

Un tableau est un objet contenant un nombre d'éléments donnés et tous de même type. 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[ ]; ou TypeElements [ ] Tableau; On crée un tableau avec l'opérateur new new TypeElements [Quantité]

Tableau[ ]; ou TypeElements [ ] Tableau; On crée un tableau avec l'opérateur new new TypeElements
Tableau[ ]; ou TypeElements [ ] Tableau; On crée un tableau avec l'opérateur new new TypeElements
Tableau[ ]; ou TypeElements [ ] Tableau; On crée un tableau avec l'opérateur new new TypeElements

Tableaux

Exemple

public class DemoTableaux

{

public static void main (String [] args)

{

int poids [ ] = {100, 120,10, 200};

}

}

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. Ce numéro se nomme indice

Tableaux

Accéder à un élément

L'accès à un élément du tableau se réalise avec l'opérateur [] et son indice.

nomTableau [indiceElement]

Parcours d’un tableau

Les boucles sont particulièrement appropriées pour parcourir les tableaux

Exemple

Tableaux

public class DemoTableaux

{

public static void main (String args [])

{

int poids [] = {100, 120,10, 200};

for (int i=0; i < poids.length; i++)

{

System.out.print ("Affiche élément "); System.out.print (i); System.out.print (" : "); System.out.print (poids [i]);

}

}

}

Tableaux à plusieurs dimensions

A quoi ça sert ?

Supposons que nous voulions modéliser un damier ou une position dans un espace, il est nécessaire d'utiliser des tableaux Il est également possible d'utiliser des tableaux de tableau

espace, il est nécessaire d'utiliser des tableaux Il est également possible d'utiliser des tableaux de tableau

Création

On crée des tableaux à plusieurs dimensions avec les opérateurs []

Tableaux à plusieurs dimensions

Exemple

public class Tableaux

{

public static void main (String args[])

{

 

int damier[][]; damier = new int [10][10]; Point espace [][][]; espace = new Point [100][100][100];

// Accès à un élément du damier damier [5][5] = 10; // Accès à une ligne du tableau int longueurLigne1 = damier[0].length;

}

}

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, 30, 40, 50}; int [] destination = new int [3];

System.arraycopy (reference, 1, destination, 0, 3)

// destination contient : {20, 30, 40}

}

}

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 []

Une chaîne de caractères de type String ne doit pas être confondue avec un tableau de

Il existe des fonctions de conversion pour passer de l'un à l'autre

Chaînes de caractères

Instanciation des chaînes de caractères

String texte = "constante"; String autreTexte = new String (texte);

String texte = "constante"; String autreTexte = new String (texte);

char tabCar[] = "toto";

int de but = 1; // indice de départ

int nbCar = 3; // nombre de caractères à recopier

String texte = new String (tabCar, debut, nbCar);

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. Cette méthode donne accès à un tableau manipulable pour effectuer un traitement de la chaîne caractère à caractère

Exemple

Class Chaine

{

public static void main (String Args[])

{ String texte = "UneChaine"; char [] tabCar = texte.toCharArray(); tabCar[3] = 'c';

texte = new String (tabcar); // Unechaine // …

}

}

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"; String suite = "jour"; String message; message = debut + suite; message += " les amis";

// bonjour // bonjour les amis

Chaînes de caractères

Chercher un caractère dans une chaîne

Les méthodes

indexOf (Caractere) indexOf(Caractere, aPartirDe)

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

Chaînes de caractères

Exemple

public class Chaine1

{

public static void main (String args[])

}

{

}

String texte = "Aujourd'hui"; int premierU = texte.indexOf ('u');

int deuxiemeU = texte.indexOf('u', 1); int troisiemeU = texte.indexOf('u',5); int quatriemeU = texte.indexOf('u', 10);

// 1

// 4

// 9

// -1

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); // Egalité des contenus

equalsIgnoreCase(autreChaine) // Egalité (Minuscule/Majuscule non pris en compte)

Chaînes de caractères

Exemple

public class Chaine

{

public static void main (String args[])

{

String texte = "ABC"; if (texte.compareTo ("DEF") < 0) System.out.println (texte + "< DEF"); if (texte.compareTo ("ABC") == 0) System.out.println (texte + "== ABC"); if (texte.compareTo ("abc") == 0) System.out.println (texte +"== abc");

}

}