Fundamentals of Java
Fundamentals of Java
Fundamentals of Java
Electronic Presentation
D61796FR10
Edition 1.0
D61796FR10_EP
Copyright © 2007, 2009, Oracle and/or its affiliates. All rights reserved.
Disclaimer
This document contains proprietary information, is provided under a license agreement containing restrictions on use and disclosure, and is protected by copyright
and other intellectual property laws. You may copy and print this document solely for your own use in an Oracle training course. The document may not be
modified or altered in any way. Except as expressly permitted in your license agreement or allowed by law, you may not use, share, download, upload, copy, print,
display, perform, reproduce, publish, license, post, transmit, or distribute this document in whole or in part without the express authorization of Oracle.
The information contained in this document is subject to change without notice. If you find any problems in the document, please report them in writing to: Oracle
University, 500 Oracle Parkway, Redwood Shores, California 94065 USA. This document is not warranted to be error-free.
This training manual may include references to materials, offerings, or products that were previously offered by Sun Microsystems, Inc. Certain materials, offerings,
services, or products may no longer be offered or provided. Oracle and its affiliates cannot be held responsible for any such references should they appear in the
text provided.
If this documentation is delivered to the U.S. Government or anyone using the documentation on behalf of the U.S. Government, the following notice is applicable:
Trademark Notice
Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.
AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced Micro Devices. Intel and Intel Xeon are
trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC
International, Inc. UNIX is a registered trademark licensed through X/Open Company, Ltd.
Sommaire du cours
Préface
À propos de ce cours
Objectifs du cours
À la fin de ce cours, vous serez en mesure d'effectuer les
opérations suivantes :
• Bien connaître la technologie Java™, le langage de
programmation Java et le cycle de vie du produit
• Utiliser les diverses constructions du langage de
programmation Java pour créer plusieurs applications
Java
• Utiliser les méthodes et les constructions de boucles et
de conditions pour imposer un flux de programme
• Implémenter les concepts intermédiaires de
programmation Java et orientésobjet (OO) dans les
programmes Java
Plan du cours
Déclaration, Création et
initialisation et utilisation
utilisation des
variables des objets
Implémentation Création et
de l'encapsulation Implémentation
utilisation des
et des tableaux de l'héritage
constructeurs
Introductions
• Nom
• Société
• Poste, fonction et responsabilités
• Votre expérience concernant les sujets présentés dans
ce cours
• Motif de votre inscription à ce cours
• Ce que vous attendez de ce cours
Icônes
1 Démonstration
2
3
! Débat
?
Note
Avertissement - Électricité
Avertissement - Chaleur
Icônes
Étude de cas
Auto-évaluation
✓
Conventions typographiques
• La police Courier est utilisée pour les noms des
commandes, des fichiers et des répertoires, le code et
les constructions de programmation, ainsi que les
résultats affichés à l'écran.
• La police Courier gras est utilisée pour les caractères
et les nombres saisis et pour chaque ligne de code
référencée dans une description textuelle.
• La police Courier italique est utilisée pour les
variables et les paramètres substituables de ligne de
commande qui sont remplacés par un nom ou une
valeur réel(le).
Conventions typographiques
• La police Courier italique gras est utilisée pour
représenter les variables dont les valeurs doivent être
saisies par le participant dans le cadre d'une activité.
• La police Palatino italique est utilisée pour les titres du
manuel, les nouveaux termes ou les mots qui doivent
attirer l'attention.
Autres conventions
Les exemples de langage de programmation Java utilisent les
conventions supplémentaires suivantes :
• La police Courier est utilisée pour les noms de classe,
les méthodes et les mots clés.
• Les noms de méthode ne sont pas suivis de parenthèses,
à moins qu'une liste de paramètres formels ou réels
n'apparaisse.
• Les sauts de ligne sont utilisés en cas de séparations,
de conjonctions ou d'espace dans le code.
• Si une commande du système d'exploitation Solaris™
(Solaris OS) diffère de celle utilisée dans la plate-forme
Microsoft Windows, les deux commandes sont
présentées.
Notions élémentaires du langage de programmation Java™ Préface, diapo xxi de xxi
Copyright 2007 Sun Microsystems, Inc. Tous droits réservés. Sun Services, Révision E.1
Sun Services
Module 1
Fonctionnement de la
technologie Java™
Sun Services
Objectifs
• Décrire les principaux concepts du langage de
programmation Java
• Énumérer les trois groupes de produits de la
technologie Java
• Résumer chacune des sept phases du cycle de vie du
produit
Pertinence
• Quelle est la définition des termes suivants ?
• Sécurisé
• Orienté objet
• Indépendant
• Dépendant
• Distribué
• Quelles sont les différentes phases impliquées dans la
construction d'un objet, par exemple une maison ou un
meuble ?
Programmation procédurale
L'objectif de la programmation procédurale est séquentiel.
1 Etape 1
2 Etape 2
3 Etape 3
4 Etape 4
5 Etape 5
Orienté objet
Objet
Objet
Objet
Objet
Objet
Objet
Distribué
Exécution
Applet Applet
Simple
• Des références sont utilisées à la place des pointeurs
mémoire.
• Un type de données boolean peut avoir comme valeur
true ou false.
• La gestion de la mémoire est automatique.
À multithread
Base de
données
Imprimante Utilisateur graphique
Interface
Sécurisé
X Applet Applet
Binaire
Solaris
Compilateur C OS
Solaris OS 1001010
C Binaire
Code Linux
Compilateur 0001010
C Linux
Binaire
Microsoft
Compilateur C Windows
Microsoft Windows 0101001
du projet
Binaire Bibliothèques Exécutable
Solaris
Editeur de liens Solaris
OS
Solaris OS OS
0001010
du projet
Binaire Bibliothèques Linux
Linux Exécutable
Editeur de liens
0001010
Linux
du projet
Binaire Bibliothèques Exécutable
Microsoft
Editeur de liens Microsoft
Windows
Microsoft Windows Windows
0101001
Station de travail
Solaris OS
Solaris
OS
Exécutable
Station de travail
Linux
Linux
Exécutable
Station de travail
Windows
Exécutable
Microsoft
Windows
Programmes indépendants de la
plate-forme
Java Java
Code Bytecode
(fichier Compilateur Java (fichier
.java) .class)
Programmes indépendants de la
plate-forme
JRE
Java JRE
Bytecode
(fichier
.class )
JRE
TM
Phase de l'analyse
!
Idée ou problème Composants principaux
Phase de conception
Plan
Plan principal
Plans de composant
Composants principaux
Phase de développement
Phase de test
Test
Composants
Phase d'implémentation
En
vente
Produit
Phase de maintenance
En
vente
Produit amélioré
En
vente
Nouveau produit
Module 2
Objectifs
• Analyser un problème à l'aide de l'Analyse orientée
objet (AOO)
• Concevoir des classes à partir desquelles des objets
seront créés
Pertinence
• Comment identifiez-vous les composants nécessaires
pour une construction, par exemple pour construire
une maison ou un meuble ?
• Qu'est-ce que la taxonomie ?
• Comment les organismes sont-ils reliés dans une
taxonomie ?
• Quelle est la différence entre attributs et valeurs ?
Attributs Opérations
dorsa le, petit uer
nageoire Migrer Communiq
bleu Taille, g
Couleur, rande r
Mange Plon
ger
Client Commande
ID client ID commande
nom date
adresse *Chemise(s)
numéro de téléphone prix total
adresse e-mail *Forme de paiement
*Commande *CSR
état
affecter une ID client
calculer l'ID de commande
calculer le prix total
ajouter la chemise à la
commande
supprimer la chemise de la
commande
soumettre la commande
ID commande Commande
orderID IDchemise Chemise ID client Client
date
date prix nom
*Chemise(s)
*Shirt(s) description adresse
prix total
totalPrice taille numéro de
*Formeofde
*Form Payment code couleur téléphone
paiement
*CSR adresse e-mail
*CSR
status *Commande
état
rcalculer l'ID
calculate orderdeID
commande calculer l'ID de la chemise affecter une ID client
calculer le prix total
calculate
ajouter la chemise price
the total à la Afficher des informations
add shirt to order
commande sur la chemise
supprimer
remove la from
shirt chemise
orderde la
commande
submit the order
soumettre la commande
Commande Chemise
réf. de commande réf. chemise
date prix
*Chemise(s) description
prix total taille
*Formulaire de code couleur
paiement
*Conseiller du
service clientèle
état
Commande Chemise
calculer réf. de calculer réf. de
commande chemise
calculer le prix afficher les
total informations
ajouter une sur la chemise
chemise à la
commande
retirer une
chemise de la
commande
envoyer la
commande
Formulaire de
Client
paiement
réf. client vérifier le numéro
nom numéro de carte
adresse bancaire
numéro de date d'expiration
téléphone
adresse électronique
*Commande
attribuer une vérifier le numéro
référence client de carte bancaire
vérifier le paiement
par chèque
Conseiller
Catalogue du service
clientèle
*Chemise(s) nom
extension
ajouter une
chemise
retirer une
chemise
Conception de classes
Couleur, bleu
Nageoire dorsale,
petit
Taille, grande
Shirt
shirtID
price
description
size
colorCode R=Red, B=Blue, G=Green
calculateShirtID()
displayShirtInformation()
• Exemple
Chemise
IDchemise
prix
description
taille
codeCouleur R=Rouge, B=Bleu, G=Vert
calculerIDChemise()
afficherInformations()
Module 3
Objectifs
• Identifier les quatre composants d'une classe dans le
langage de programmation Java
• Utiliser la méthode main dans une classe test pour
exécuter un programme de technologie Java à partir
de la ligne de commande
• Compiler et exécuter un programme de
technologie Java
Pertinence
• Comment pouvez-vous tester un élément que vous
avez construit, par exemple une maison, un meuble ou
un programme ?
Chemise
Commande
Date
Fenêtre
OrderEntry
Client
Bouton
Commentaires
• À une ligne :
public int shirtID = 0; // ID par défaut de la chemise
public double price = 0.0; // Prix par défaut de toutes les chemises
• Traditionnel :
/****************************************************
* Section de déclaration des variables d'attribut *
****************************************************/
Les méthodes
• Syntaxe :
[modificateurs] type_retour identificateur_méthode ([arguments]) {
bloc_code_méthode
}
• Exemple :
public void displayInformation() {
Méthode main
• Une méthode spéciale reconnue par la JVM comme le
point de départ de tout programme Java exécuté à
partir d'une ligne de command
• Syntaxe :
public static void main (String [] args)
• Exemple :
javac Shirt.java
• Exemple
java ShirtTest
• Output:
Shirt ID: 0
Shirt description:-description required-
Color Code: U
Shirt price: 0.0
Quantity in stock: 0
Conseils de débogage
• Les messages d'erreur précisent le numéro de la ligne
dans laquelle chaque erreur se produit. Cette ligne n'est
pas toujours la source réelle de l'erreur.
• Vérifiez que chaque ligne se termine par un point-
virgule lorsque nécessaire, et rien d'autre.
• Assurez-vous d'avoir un nombre pair d'accolades.
• Assurez-vous d'avoir utilisé une indentation cohérente
dans votre programme, telle qu'illustrée dans les
exemples de ce cours.
Module 4
Objectifs
• Identifier les utilisations des variables et définir leur
syntaxe
• Énumérer les huit types de primitives du langage de
programmation Java
• Déclarer, initialiser et utiliser des variables et des
constantes selon les directives et les normes de codage
du langage Java
• Modifier les valeurs des variables à l'aide d'opérateurs
• Utiliser la promotion et la conversion du type
Pertinence
• Une variable désigne un élément qui peut changer.
Les variables peuvent contenir une valeur ou un
ensemble de valeurs. Où avez-vous déjà vu des
variables ?
• Quels types de données pensez-vous que les variables
peuvent stocker ?
public double price = 0.0; // Prix par défaut de toutes les chemises
Constantes
• Variable (peut changer) :
double tauxTVA = 6.25;
Le reste donne
toujours une
réponse du même
signe que le
premier opérande.
Opérateurs d'incrémentation et de
décrémentation (++ et --)
La syntaxe longue :
age = age + 1;
Opérateurs d'incrémentation et de
décrémentation (++ et --)
La syntaxe courte :
Opérateurs d'incrémentation et de
décrémentation (++ et --)
Opérateur Objectif Exemple Notes
-- Pré- int i = 6;
décrémentation int j = --i;
(--variable) i est 5, j est 5
Opérateurs d'incrémentation et de
décrémentation (++ et --)
Exemples :
int count=15;
int a, b, c, d;
a = count++;
b = count;
c = ++count;
d = count;
System.out.println(a + “, “ + b + “, “ + c + “, “ + d);
Utilisation de la promotion et de la
conversion de types
• Exemple de problème potentiel :
int num1 = 53; // 32 bits de mémoire pour détenir la valeur
int num2 = 47; // 32 bits de mémoire pour détenir la valeur
byte num3; // 8 bits de mémoire réservée
num3 = (num1 + num2); // entraîne une erreur de compilation
Promotion
• Promotions automatiques :
• Si vous attribuez un type plus petit à un type plus
grand
• Si vous attribuez un type nombre entier à un type à
virgule flottante
• Exemples de promotions automatiques :
long big = 6;
Conversion de types
• Syntaxe :
identificateur = (type_cible) valeur
• Exemple de problème potentiel :
int num1 = 53; // 32 bits de mémoire pour détenir la valeur
int num2 = 47; // 32 bits de mémoire pour détenir la valeur
byte num3; // 8 bits de mémoire réservée
num3 = (num1 + num2); // entraîne une erreur de compilation
Conversion de types
Exemples :
int myInt;
long myLong = 99L;
myInt = (int) (myLong); // Pas de perte de données, seulement des zéros.
// Un nombre beaucoup plus grand entraînerait une
// perte de données.
int myInt;
long myLong = 123987654321L;
myInt = (int) (myLong); // Le nombre est « tronqué »
Exemple
1 public class Person {
2
3 public int ageYears = 32;
4
5 public void calculateAge() {
6
7 int ageDays = ageYears * 365;
8 long ageSeconds = ageYears * 365 * 24L * 60 * 60;
9
10 System.out.println("Vous êtes âgé de " + ageDays + " jours.");
11 System.out.println("Vous êtes âgé de " + ageSeconds + " secondes.");
12
13 } // fin de la méthode calculateAge
14 } // fin de la classe
Module 5
Objectifs
• Déclarer, instancier et initialiser des variables de
référence d'objet
• Comparer le stockage des variables de référence
d'objet et des variables primitives
• Utiliser la classe String, incluse dans le kit de
développement logiciel Java (SDK)
• Utiliser les spécifications de la bibliothèque de
classes Java SE™ (Java Platform Standard Edition)
pour découvrir les autres classes de cette API
(application programming interface)
Pertinence
• Que signifie créer une instance du plan d'une maison ?
• Comment pouvez-vous faire référence aux différentes
maisons d'une même rue ?
• Lorsqu'un entrepreneur construit une maison,
en fabrique-t-il chaque composant, y compris les
fenêtres, les portes et les placards ?
int counter;
counter = 10;
Shirt myShirt = new Shirt ( );
}
0x034009
0 shirtID
0.0 price
U colorCode
counter 10
0x034009
0 shirtID
0.0 price
U colorCode
0x034009 0x99f311
myShirt 0x99f311
0 shirtID
0.0 price
yourShirt 0x99f311 U colorCode
0xdef
0x0011f
Sammy Summary
• Exemple :
http://java.sun.com/javase/6/docs/api/
• Exemple :
System.out.print("Carpe diem");
System.out.println("Seize the day");
imprime :
Carpe diem Seize the day
Module 6
Objectifs
• Identifier les opérateurs relationnels et conditionnels
• Créer des constructions if et if/else
• Utiliser les constructions switch
Pertinence
• Lorsque vous devez prendre une décision parmi
plusieurs options, comment faites-vous votre choix
final ?
• Par exemple, que vous vient-il à l'esprit lorsque vous
devez acheter un article ?
Au rcroisement,
tourner à rgauche
ou à droite ?
TM
Le fichier ElevatorTest.java
1 public class ElevatorTest {
2 public static void main (String args[]) {
3
4 Elevator myElevator = new Elevator();
5
6 myElevator.openDoor();
7 myElevator.closeDoor();
8 myElevator.goDown();
9 myElevator.goUp();
10 myElevator.goUp();
11 myElevator.goUp();
12 myElevator.openDoor();
13 myElevator.closeDoor();
14 myElevator.goDown();
15 myElevator.openDoor();
16 myElevator.goDown();
17 myElevator.openDoor();
18 }
19 }
Opérateurs relationnels
Condition Opérateur Exemple
est égal à == int i=1;
(i == 1)
n'est pas égal à != int i=2;
(i != 1)
Est inférieur à < int i=0;
(i < 1)
Est inférieur ou égal à <= int i=1;
(i <= 1)
Est supérieur à > int i=2;
(i > 1)
Est supérieur ou égal à >= int i=1;
(i >= 1)
Construction if
• Syntaxe :
if (expression_booléenne) {
bloc_de_code;
} // fin de la construction if
// le programme continue ici
Construction if
Exemple de solution potentielle :
1
2 public class IfElevator {
3
4 public boolean doorOpen=false; // Les portes sont fermées par défaut.
5 public int currentFloor = 1; // Tous les ascenseurs partent du premier
6 // étage.
7 public final int TOP_FLOOR = 10;
8 public final int MIN_FLOORS = 1;
9
10 public void openDoor() {
11 System.out.println(“Ouverture de la porte.”);
12 doorOpen = true;
13 System.out.println(“La porte est ouverte.”);
14 }
15 public void closeDoor() {
16 System.out.println(“Fermeture de la porte.”);
17 doorOpen = false;
Construction if
18 System.out.println(“La porte est fermée.”);
19 }
20 public void goUp() {
21 System.out.println(“Monter d'un étage.”);
22 currentFloor++;
23 System.out.println(“Étage : “ + currentFloor);
24 }
25 public void goDown() {
26
27 if (currentFloor == MIN_FLOORS) {
28 System.out.println(“Impossible de descendre”);
29 }
30 if (currentFloor > MIN_FLOORS) {
31 System.out.println(“Descendre d'un étage.”);
32 currentFloor--;
33 System.out.println(“Étage : “ + currentFloor);
34 }
35 }
36 }
Construction if
Exemple de résultat potentiel :
Ouverture de la porte.
La porte est ouverte.
Fermeture de la porte.
La porte est fermée.
Impossible de descendre <--- la logique de l'ascenseur évite le problème
Monter d'un étage.
Étage : 2
Monter d'un étage.
Étage : 3
...
Instructions if imbriquées
Exemple :
1
2 public class NestedIfElevator {
3
4 public boolean doorOpen=false; // Les portes sont fermées par défaut.
5 public int currentFloor = 1; // Tous les ascenseurs partent du premier
6 // étage.
7 public final int TOP_FLOOR = 10;
8 public final int MIN_FLOORS = 1;
9
10 public void openDoor() {
11 System.out.println(“Ouverture de la porte.”);
12 doorOpen = true;
13 System.out.println(“La porte est ouverte.”);
14 }
15
16 public void closeDoor() {
17 System.out.println(“Fermeture de la porte.”);
18 doorOpen = false;
Instructions if imbriquées
19 System.out.println(“La porte est fermée.”);
20 }
21
22 public void goUp() {
23 System.out.println(“Monter d'un étage.”);
24 currentFloor++;
25 System.out.println(“Étage : “ + currentFloor);
26 }
27
28 public void goDown() {
29
30 if (currentFloor == MIN_FLOORS) {
31 System.out.println(“Impossible de descendre”);
32 }
33
34 if (currentFloor > MIN_FLOORS) {
35
36 if (!doorOpen) {
37
Instructions if imbriquées
38 System.out.println(“Descendre d'un étage.”);
39 currentFloor--;
40 System.out.println(“Étage : “ + currentFloor);
41 }
42 }
43 }
44
45
46 }
47
Construction
Construction if/else
if/else
Syntaxe
Syntaxe ::
if (expression_booléenne) {
if (expression_booléenne) {
bloc_de_code;
bloc_de_code;
} // fin de la construction if
} // fin de la construction if
else {
else {
bloc_de_code;
bloc_de_code;
} // fin de la construction else
} // fin de la construction else
// le programme continue ici
// le programme continue ici
Construction if/else
Exemple :
1 public class IfElseElevator {
2
3 public boolean doorOpen=false; // Les portes sont fermées par défaut.
4 public int currentFloor = 1; // Tous les ascenseurs partent du premier
5 // étage.
6 public final int TOP_FLOOR = 10;
7 public final int MIN_FLOORS = 1;
8
9 public void openDoor() {
10 System.out.println(“Ouverture de la porte.”);
11 doorOpen = true;
12 System.out.println(“La porte est ouverte.”);
13 }
14 public void closeDoor() {
15 System.out.println(“Fermeture de la porte.”);
16 doorOpen = false;
17 System.out.println(“La porte est fermée.”);
18 }
Construction if/else
19
20 public void goUp() {
21 System.out.println(“Monter d'un étage.”);
22 currentFloor++;
23 System.out.println(“Étage : “ + currentFloor);
24 }
25
26 public void goDown() {
27
28 if (currentFloor == MIN_FLOORS) {
29 System.out.println(“Impossible de descendre”);
30 }
31 else {
32 System.out.println(“Descendre d'un étage.”);
33 currentFloor--;
34 System.out.println(“Étage : “ + currentFloor);}
35 }
36 }
37 }
Construction if/else
Exemple de résultat potentiel :
Ouverture de la porte.
La porte est ouverte.
Fermeture de la porte.
La porte est fermée.
Impossible de descendre <--- la logique de l'ascenseur évite le problème
Monter d'un étage.
Étage : 2
Monter d'un étage.
Étage : 3
...
bloc_de_code;
} // fin de la construction if
else if (expression_booléenne){
bloc_de_code;
else {
bloc_de_code;
}
// le programme continue ici
Module 7
Objectifs
• Créer des boucles while
• Développer des boucles for
• Créer des boucles do/while
Pertinence
Dans quelles situations souhaiteriez-vous continuer à effectuer
une action donnée tant qu'une certaine condition est remplie ?
bloc_de_code;
bloc_de_code;
}
bloc_de_code;
}
while (expression_booléenne);// Le point-virgule est obligatoire.
Module 8
Développement et utilisation de
méthodes
Sun Services
Présentation
• Objectifs :
• Décrire les avantages des méthodes et définir des
méthodes de travail et d'appel
• Déclarer et invoquer une méthode
• Comparer les méthodes d'objet et statiques
• Utiliser des méthodes surchargées
Pertinence
Comment structurez-vous ou implémentez-vous les opérations
exécutées sur un objet ?
Appelant
TM
Travailleur
Transmission d'arguments et de
valeurs de retour
Objet 1 Objet 2
Méthode de travail
Méthode appelante
• Exemple :
public void multiply(int numberOne, int numberTwo)
Méthode main
• Exemple :
public static void main (String args[])
• Exemple (invocation) :
java ShirtTest 12.99 R
return result;
}
• Exemple :
public int getFloor() {
return currentFloor;
}
Création de méthodes et de
variables static
• Comparaison des méthodes et des variables d'instance
et static
• Déclaration de méthodes static :
static Properties getProperties()
• Invocation de méthodes static :
Classname.method();
Création de méthodes et de
variables static
• Exemple :
public static char convertShirtSize(int numericalSize) {
else {
return ’X’;
}
}
Création de méthodes et de
variables static
• Exemple :
char size = Shirt.convertShirtSize(16);
Création de méthodes et de
variables static
• Déclaration de variables static :
static double tauxTVA = 8.25;
• Accès aux variables static :
Classname.variable;
• Exemple :
double myPI;
myPI = Math.PI;
Module 9
Implémentation de l'encapsulation et
des constructeurs
Sun Services
Objectifs
• Utiliser l'encapsulation pour protéger les données
• Créer des constructeurs pour initialiser des objets
Pertinence
• Pour fonctionner, les ascenseurs d'autrefois, ou monte-
charges, exigeaient que l'utilisateur manipule des
poulies, des cordes et des roues. Les ascenseurs
modernes cachent leurs mécanismes et exigent
seulement que l'utilisateur appuie sur quelques
boutons. Quels sont les avantages des ascenseurs
modernes par rapport aux anciens modèles ?
• La plupart des ascenseurs, par exemple l'ascenseur de
service d'une usine, imposent l'utilisation de clés pour
fonctionner. D'autres imposent l'utilisation d'une clé
pour atteindre un étage particulier, par exemple le
dernier étage d'un hôtel. Pourquoi ces clés sont-elles
importantes ?
• Que vous suggèrent les termes privé et public ?
Notions élémentaires du langage de programmation Java™ Module 9, diapo 3 de 43
Copyright 2007 Sun Microsystems, Inc. Tous droits réservés. Sun Services, Révision E.1
Sun Services
Utilisation de l'encapsulation
Modificateur public
Ascenseur
Panneau de
commande
5 Accès public
4 Accès public
3 Accès public
2 Accès public
1 Accès public
P Accès public
TM
Modificateur public
Exemple :
1
2 public class PublicElevator {
3
4 public boolean doorOpen=false;
5 public int currentFloor = 1;
6 public int weight =0;
7
8 public final int CAPACITY=1000;
9 public final int TOP_FLOOR = 5;
10 public final int BOTTOM_FLOOR = 1;
11 }
12
Modificateur public
Exemple :
1
2 public class PublicElevatorTest {
3
4 public static void main (String args[]) {
5
6 PublicElevator pubElevator = new PublicElevator();
7
8 pubElevator.doorOpen = true; //Les passagers entrent
9 pubElevator.doorOpen = false; //Les portes se ferment
10 //descente au niveau 0 (au-dessous du rez-de-chaussée)
11 pubElevator.currentFloor--;
12 pubElevator.currentFloor++;
13
14 //accès au niveau 7 (il n'y a que 5 étages dans le bâtiment)
15 pubElevator.currentFloor = 7;
16 pubElevator.doorOpen = true; //Les passagers entrent/sortent
17 pubElevator.doorOpen = false;
Modificateur public
18 pubElevator.currentFloor = 1; //accès au premier étage
19 pubElevator.doorOpen = true; //Les passagers entrent/sortent
20 pubElevator.currentFloor++; //l'ascenseur se déplace avec la porte
21 //ouverte
22 pubElevator.doorOpen = false;
23 pubElevator.currentFloor--;
24 pubElevator.currentFloor--;
25 }
26 }
27
Modificateur private
Ascenseurr
Panneau de
commande
Accès privé
(Fermer la porte)
4 Accès public
3 Accès public
2 Accès public
1 Accès public
P Accès public
Modificateur private
Exemple :
1
2 public class PrivateElevator1 {
3
4 private boolean doorOpen=false;
5 private int currentFloor = 1;
6 private int weight =0;
7
8 private final int CAPACITY=1000;
9 private final int TOP_FLOOR = 5;
10 private final int BOTTOM_FLOOR = 1;
11 }
12
Modificateur private
Exemple :
1
2 public class PrivateElevator1Test {
3
4 public static void main (String args[]) {
5
6 PrivateElevator1 privElevator = new PrivateElevator1();
7
8 /**********************************************************
9 * Les lignes de code suivantes ne seront pas compilées *
10 * car elles tentent d'accéder à des variables privées. *
11 **********************************************************/
12
13 privElevator.doorOpen = true; //les passagers entrent
14 privElevator.doorOpen = false; //les portes se ferment
15 //descente au niveau 0 (au-dessous du rez-de-chaussée)
16 privElevator.currentFloor--;
Modificateur private
17 privElevator.currentFloor++;
18
19 //accès au niveau 7 (il n'y a que 5 étages dans le bâtiment)
20 privElevator.currentFloor = 7;
21 privElevator.doorOpen = true; //les passagers entrent/sortent
22 privElevator.doorOpen = false;
23 privElevator.currentFloor = 1; //accès au premier étage
24 privElevator.doorOpen = true; //les passagers entrent/sortent
25 privElevator.currentFloor++; //l'ascenseur se déplace avec la
26 //porte ouverte
27 privElevator.doorOpen = false;
28 privElevator.currentFloor--;
29 privElevator.currentFloor--;
30 }
31 }
32
Interface et implémentation
Ascenseur
Panneau de
commande
Haut
Bas
Interface et implémentation
Exemple :
1
2 public class PrivateShirt1 {
3
4 private int shirtID = 0; // ID par défaut de la chemise
5 private String description = “-description required-”; // par défaut
6
7 // Les codes de couleur sont R=Red, B=Blue, G=Green, U=Unset
8 private char colorCode = ‘U’;
9 private double price = 0.0; // Prix par défaut de tous les articles
10 private int quantityInStock = 0; // Quantité par défaut de tous les
11 // articles
12
13 public char getColorCode() {
14 return colorCode;
15 }
16
17 public void setColorCode(char newCode) {
18 colorCode = newCode;
Interface et implémentation
19 }
20
21 // D'autres méthodes get et set pour l'ID de la chemise, la
22 // description, le prix et la quantité en stock devraient suivre
23
24 } // fin de la classe
25
Interface et implémentation
Exemple :
1
2 public class PrivateShirt1Test {
3
4 public static void main (String args[]) {
5
6 PrivateShirt1 privShirt = new PrivateShirt1();
7 char colorCode;
8
9 // Définir un code de couleur valide
10 privShirt.setColorCode(‘R’);
11 colorCode = privShirt.getColorCode();
12
13 // La classe PrivateShirtTest1 peut définir un code de couleur valide.
14 System.out.println(“Code couleur : “ + colorCode);
15
16 // Définit un code de couleur non valide
17 privShirt.setColorCode(‘Z’);
Interface et implémentation
18 colorCode = privShirt.getColorCode();
19
20 // La classe PrivateShirtTest1 peut définir un code de couleur non valide.
21 System.out.println(“Code couleur : “ + colorCode);
22 }
23 }
24
Interface et implémentation
Exemple :
1
2 public class PrivateShirt2 {
3
4 private int shirtID = 0; // ID par défaut de la chemise
5 private String description = “-description required-”; // par défaut
6
7 // Les codes de couleur sont R=Red, B=Blue, G=Green, U=Unset
8 private char colorCode = ‘U’;
9 private double price = 0.0; // Prix par défaut de tous les articles
10 private int quantityInStock = 0; // Quantité par défaut de tous les
11 // articles
12
13 public char getColorCode() {
14 return colorCode;
15 }
16
17 public void setColorCode(char newCode) {
18
Interface et implémentation
19 switch (newCode) {
20 case ‘R’:
21 case ‘G’:
22 case ‘B’:
23 colorCode = newCode;
24 break;
25 default:
26 System.out.println(“Code couleur non valide. Utilisez R, G ou B”);
27 }
28 }
29
30 // D'autres méthodes get et set pour l'ID de la chemise, la
31 // description, le prix et la quantité en stock devraient suivre
32
33 } // fin de la classe
34
Interface et implémentation
Exemple :
1
2 public class PrivateShirt2Test {
3
4 public static void main (String args[]) {
5 PrivateShirt2 privShirt = new PrivateShirt2();
6 char colorCode;
7
8 // Définit un code de couleur valide
9 privShirt.setColorCode(‘R’);
10 colorCode = privShirt.getColorCode();
11
12 // La classe PrivateShirtTest2 peut définir un code de couleur valide.
13 System.out.println(“Code couleur : “ + colorCode);
14
15 // Définit un code de couleur non valide
16 privShirt.setColorCode(‘Z’);
17 colorCode = privShirt.getColorCode();
Interface et implémentation
18
19 // La classe PrivateShirtTest2 ne peut pas définir un code de
20 // couleur non valide.
21 // Le code de couleur reste R
22 System.out.println(“Code couleur : “ + colorCode);
23 }
24 }
25
Ascenseur encapsulé
Exemple :
1
2 public class PrivateElevator2 {
3
4 private boolean doorOpen=false;
5 private int currentFloor = 1;
6 private int weight =0;
7
8 private final int CAPACITY = 1000;
9 private final int TOP_FLOOR = 5;
10 private final int BOTTOM_FLOOR = 1;
11
12 public void openDoor() {
13 doorOpen = true;
14 }
15
16 public void closeDoor() {
17 calculateCapacity();
Ascenseur encapsulé
18
19 if (weight <= CAPACITY) {
20 doorOpen = false;
21 }
22 else {
23 System.out.println(“La capacité de l'ascenseur est dépassée.”);
24 System.out.println(“Les portes resteront ouvertes jusqu'à la
25 sortie d'une personne.”);
26 }
27 }
28
29 // Dans la pratique, des capteurs de poids permettraient à l'ascenseur
30 // de vérifier le poids réel de l'ascenseur, mais pour plus de
31 // simplicité, nous avons choisi un nombre aléatoire représentant le
32 // poids de l'ascenseur.
33
34 private void calculateCapacity() {
35 weight = (int) (Math.random() * 1500);
36 System.out.println(“Le poids est “ + weight);
37 }
Ascenseur encapsulé
38
39 public void goUp() {
40 if (!doorOpen) {
41 if (currentFloor < TOP_FLOOR) {
42 currentFloor++;
43 System.out.println(currentFloor);
44 }
45 else {
46 System.out.println(“Déjà au dernier étage.”);
47 }
48 }
49 else {
50 System.out.println(“Les portes sont encore ouvertes.”);
51 }
52 }
53
54 public void goDown() {
55 if (!doorOpen) {
56 if (currentFloor > BOTTOM_FLOOR) {
Ascenseur encapsulé
57 currentFloor--;
58 System.out.println(currentFloor);
59 }
60 else {
61 System.out.println(“Déjà au premier étage.”);
62 }
63 }
64 else {
65 System.out.println(“Les portes sont encore ouvertes.”);
66 }
67 }
68
69 public void setFloor(int desiredFloor) {
70 if ((desiredFloor >= BOTTOM_FLOOR) && (desiredFloor<=TOP_FLOOR)) {
71
72 while (currentFloor != desiredFloor){
73 if (currentFloor < desiredFloor) {
74 goUp();
75 }
Ascenseur encapsulé
76
77 else {
78 goDown();
79 }
80 }
81 }
82 else {
83 System.out.println(“Étage non valide”);
84 }
85 }
86
87 public int getFloor() {
88 return currentFloor;
89 }
90
91 public boolean getDoorStatus() {
92 return doorOpen;
93 }
94 }
Ascenseur encapsulé
Exemple :
1
2 public class PrivateElevator2Test {
3
4 public static void main (String args[]) {
5
6 PrivateElevator2 privElevator = new PrivateElevator2();
7
8 privElevator.openDoor();
9 privElevator.closeDoor();
10 privElevator.goDown();
11 privElevator.goUp();
12 privElevator.goUp();
13 privElevator.openDoor();
14 privElevator.closeDoor();
15 privElevator.goDown();
16 privElevator.openDoor();
17 privElevator.goDown();
Ascenseur encapsulé
18 privElevator.closeDoor();
19 privElevator.goDown();
20 privElevator.goDown();
21
22 int curFloor = privElevator.getFloor();
23
24 if (curFloor != 5 && ! privElevator.getDoorStatus()) {
25 privElevator.setFloor(5);
26 }
27
28 privElevator.setFloor(10);
29 privElevator.openDoor();
30 }
31 }
32
Sortie de test
Le poids est 453.
Déjà à l'étage le plus bas.
2
3
Le poids est 899.
2
Les portes sont encore ouvertes.
Le poids est 974.
1
Déjà à l'étage le plus bas.
2
3
4
5
Création de constructeurs
Syntaxe :
[modificateurs] class NomClasse {
[modificateurs] NomConstructeur([arguments]) {
bloc_de_code
}
}
Création de constructeurs
Exemple :
1
2 public class ConstructorShirt1 {
3
4 private int shirtID = 0; // ID par défaut de la chemise
5 private String description = “-description required-”; // par défaut
6
7 // Les codes de couleur sont R=Red, B=Blue, G=Green, U=Unset
8 private char colorCode = ‘U’;
9 private double price = 0.0; // Prix par défaut de tous les articles
10 private int quantityInStock = 0; // Quantité par défaut de tous les
11 // articles
12
13 public ConstructorShirt1(char startingCode) {
14
15 switch (startingCode) {
16 case ‘R’:
17 case ‘G’:
18 case ‘B’:
Création de constructeurs
19 colorCode = startingCode;
20 break;
21 default:
22 System.out.println(“Code couleur non valide. Utilisez R, G ou B”);
23 }
24 }
25
26 public char getColorCode() {
27 return colorCode;
28 }
29 } // fin de la classe
30
Création de constructeurs
Exemple :
1
2 public class ConstructorShirt1Test {
3
4 public static void main (String args[]) {
5
6 ConstructorShirt1 constShirt = new ConstructorShirt1(‘R’);
7 char colorCode;
8
9 colorCode = constShirt.getColorCode();
10
11 System.out.println(“Code couleur : “ + colorCode);
12 }
13 }
14
• Exemple :
1
2 public class DefaultShirt {
3
4 private int shirtID = 0; // ID par défaut de la chemise
5 private String description = “-description required-”; // par défaut
6
7 // Les codes de couleur sont R=Red, B=Blue, G=Green, U=Unset
8 private char colorCode = ‘U’;
9 private double price = 0.0; // Prix par défaut de tous les articles
10 private int quantityInStock = 0; // Quantité par défaut de tous les
11 // articles
12
13 public DefaultShirt() {
14 colorCode = ‘R’;
15 }
Module 10
Objectifs
• Coder des tableaux unidimensionnels
• Définir les valeurs des tableaux à l'aide de l'attribut
length et d'une boucle
• Transmettre des arguments à la méthode main en vue
de leur utilisation dans un programme
• Créer des tableaux bidimensionnels
Pertinence
• Un tableau est une organisation ordonnée d'éléments,
par exemple une liste triée. Dans notre vie quotidienne,
à quelles occasions utilisons-nous des tableaux ?
• Si un tableau unidimensionnel est une liste d'éléments,
qu'est-ce qu'un tableau bidimensionnel ?
• Comment peut-on accéder aux éléments d'un tableau ?
Tableau de int
Tableau de chemises
Tableau de chaînes
es ie ys on
gus tir g erk eKe ell is wn
on Da in K D M orr La
M n D rt ie er M D e
gh ro an be rr lt gh e
Hu Aa St Al Ca Wa Hu Mo
Shirt [] shirts;
String [] names;
• Erreur :
int [] ages;
ages = {19, 42, 92, 33, 46};
char s = status[0];
String name = names [1];
int age = ages[1];
double price = prices[2];
0x334009
0 S
1 M
2 L
size L
sizes 0x334009
0x99f311
0 shirtID
0.0 price
U colorCode
0x00099
0 shirtID
myShirt 0x99f311
0.0 price
shirts 0x179009 U colorCode
0x179009 0x00327
0 0x00099 0 shirtID
1 0x00327 0.0 price
2 0x00990 U colorCode
0x00990
0 shirtID
0.0 price
U colorCode
}
}
• Exemple :
1 public class ArgsTest {
2
3 public static void main (String args[]) {
4
5 System.out.println("args[0] est " + args[0]);
6 System.out.println("args[1] est " + args[1]);
7 }
8 }
9
Fonctionnalité varargs
• Vous pouvez créer une méthode capable d'accepter un
nombre variable d'arguments.
• Une méthode peut avoir au moins un paramètre vararg
• Vararg doit être le dernier paramètre accepté par la
méthode. Il est indiqué par le type d'objet, un ensemble
d'ellipses ( ... ), et le nom de la variable. Par exemple :
class VarMessage{
public static void showMessage(String... names) {
for (String list: names)
System.out.println(list);
}
public static void main (String args[]){
showMessage (args)
}
Dimanche
Vendredi
Mercredi
Samedi
Mardi
Lundi
Jeudi
Semaine 1
Semaine 2
Semaine 3
Semaine 4
• Exemple :
// Instanciation d'un tableau bidimensionnel : 5 tableaux de 4 éléments chacun
yearlySales = new int[5][4];
Module 11
Implémentation de l'héritage
Sun Services
Objectifs
• Définir et tester votre utilisation de l'héritage
• Expliquer le concept d'abstraction
• Identifier explicitement les bibliothèques de classes
utilisées dans votre code
Pertinence
• L'héritage consiste à transmettre un élément d'un
organisme à un autre. Pouvez-vous citer quelques
caractéristiques physiques dont vous avez hérité ?
• De qui avez-vous hérité vos caractéristiques ?
• De quelle hiérarchie de classe provenez-vous ?
• Avez-vous hérité de caractéristiques provenant de
plusieurs classes ?
• Que signifie le terme « abstrait » ?
• Que signifie pour vous classe abstraite ?
de l'héritage
Hat Sock
ID ID
prix prix
description description
codeCouleur R=Rouge, codeCouleur R=Rouge,
B=Bleu, G=Vert B=Bleu, G=Vert
quantityInStock quantityInStock
calculateID() calculateID()
afficherInformations() afficherInformations()
Pant Chemise
ID ID
prix prix
taille description
gender M=Male, F=Female codeCouleur R=Rouge,
description B=Bleu, G=Vert
colorCode B=Blue, T=Tan quantityInStock
quantityInStock
calculateID() calculateID()
afficherInformations() afficherInformations()
Superclasses et sous-classes
Mammifères
rà sang chaud
respirent de l'air
Cétacé
rnageaoires caudales
rnageoires pectorales
Pants:Clothing Shirt:Clothing
taille taille
gender M=Male, F=Female codeCouleur R=Rouge,
colorCode B=Blue, T=Tan B=Bleu, G=Vert
afficherInformations() afficherInformations()
Clothing
ID
prix
description
quantityInStock
calculateID()
Abstraction
• Qu'est-ce que l'abstraction ?
• Abstraction dans l'étude de cas DirectClothing, Inc.
Instruction import
• Syntaxe :
import nom_package.nom_classe;
import nom_package.*;
• Exemple :
import java.awt.*;
public class MyPushButton1 extends Button {
// instructions de la classe