Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Développer un programme qui utilise une interface graphique pour introduire les données à
traiter
2
JAVA COMME LANGAGE DE PROGRAMMATION
3
DÉPLOIEMENT D’UN PROGRAMME CLASSIQUE DE LA COMPILATION
4
DÉPLOIEMENT D’UN PROGRAMME
CHANGEMENT DE LA VISION TRADITIONNELLE DE LA COMPILATION
5
JAVA ET SES VERSIONS
6
II. PREMIÈRE APPLICATION EN
JAVA
COMMENT DÉVELOPPER UNE APPLICATION?
Les textes entre « /** » et « */ » sont utilisés pour créer des commentaires que l’exécutable
JAVADOC pourra traiter afin de produire une documentation
/** Commentaires afin de produire
la documentation */
LES MOTS RÉSERVÉS DE JAVA
Référence: Adresse
TYPES PRIMITIFS ET TYPES DE RÉFÉRENCE
TYPES DE DONNÉES PRIMITIFS (1/4)
P rim itive Da ta T yp es
T e xtu al L o g ical
Explication:
byte : codé sur 8 bits 28 valeurs (–27) to (27–1) = -128 à 127
int : codé sur 32 bits 232 valeurs (–231) to (231–1)
Déclaration et initialisation :
int int x=12;
short short x= 32;
long long x= 200L; // Nombre accolé à un L
byte byte x=12;
double double x=23.2323;
float float x= 23.233F; // Nombre accolé à un F
char char c=‘a’;
boolean boolean b=true;
TYPES PRIMITIFS ET TYPES DE RÉFÉRENCE
TYPES DE DONNÉES PRIMITIFS (3/4)
Exemple:
a=b;
Référence: Adresse
PORTÉE D'UNE VARIABLE
1 () Parenthèse
* Produit
2 / Division
% Modulo
+ Addition ou concaténation
3
- Soustraction
OPÉRATEURS DE COMPARAISON
if, else
for
while
do, while
STRUCTURES DE CONTRÔLE
Structure if
if (expression logique) instruction;
if (expression logique)
{ instruction; instruction;
...
}
Structure if else
if (expression logique) instruction;
else instruction;
if (expression logique)
{ instruction; instruction;
...
}
else
{ instruction; instruction;
...
}
STRUCTURES DE CONTRÔLE
Boucle for
instruction_2;
...
instruction_n;
}
Boucle while
while (expression
booléenne)
{
instruction_1;
instruction_2;
...
instruction_n;
STRUCTURES DE CONTRÔLE
Boucle do while
do
{
instruction_1;
instruction_2;
...
instruction_n;
} while (condition);
switch (variable){
case valeur1 : instructions1 ;
case valeur2 : instructions2 ;
…
default : instructions ;
}
Exemples:
int choix=2;
switch(choix){
case 1: System.out.println("Bonjour");
break;
case 2: System.out.println("Hello");
break;
case 3: System.out.println("Buenos
dias"); break;
default: System.out.println("Choix
incorrect"); break;
}
STRUCTURES DE CONTRÔLE
f
a
l
s
e
;
STRUCTURES DE CONTRÔLE
int somme = 0;
for (int i = 0; i < 100; i++)
{
if (i % 2 == 0) continue;
somme += i;
}
STRUCTURES DE CONTRÔLE
En résumé
•Pour pouvoir récupérer ce que vous allez taper dans la console, vous
devrez initialiser l'objet Scanner avec l'entrée standard, System.in.
Création du tableau
Remplissage du tableau
Lecture du tableau.
JAVA/TABLEAUX
Si [ ] suit le type, toutes les variables déclarées seront des tableaux, alors que si [ ] suit le nom de
la variable, seule celle-ci est un tableau :
L'indexation démarre à partir de 0, ce qui veut dire que, pour un tableau de N éléments, la
numérotation va de 0 à N-1.
Dans l'exemple ci-dessus, la 6ème case contient donc la valeur 23.
int nb;
nb = monTableau[4]; // 11
Ceci est particulièrement utile lorsque nous voulons parcourir les éléments d'un tableau.
for (int i = 0; i < monTableau.length; i++) {
42
DE LA PROGRAMMATION CLASSIQUE VERS LA
PROGRAMMATION ORIENTÉE OBJET
43
DE LA PROGRAMMATION CLASSIQUE VERS LA
PROGRAMMATION ORIENTÉE OBJET
44
DE LA PROGRAMMATION CLASSIQUE VERS LA
PROGRAMMATION ORIENTÉE OBJET
45
CLASSES ET OBJETS
Exemple
46
CLASSES ET OBJETS
Exemple
47
CLASSES ET OBJETS
Classe Instances
-Nom : hariri
-Prenom :nabil
-Age :25
Instanciation
-Nom :ibrahimi
-Prenom :nawal
-Age :22
48
CLASSES ET OBJETS(SYNTAXE DE DÉCLARATION D’UNE
CLASSE)
49
CLASSES ET OBJETS
51
CRÉATION D'UN OBJET : INSTANCIER UNE
CLASSE
En Java, tous les objets sont instanciés par allocation dynamique. Dans
l'exemple, la variable m contient une référence sur l'objet instancié (contient
l'adresse de l'objet qu'elle désigne : attention toutefois, il n'est pas possible de
manipuler ou d'effectuer des opérations directement sur cette adresse comme
en C.
Si m2 désigne un objet de type MaClasse, l'instruction m2 = m ne définit pas un
nouvel objet mais m et m2 désignent tous les deux le même objet.
L'opérateur new est un opérateur de haute priorité qui permet d'instancier des
objets et d'appeler une méthode particulière de cet objet : le constructeur. Il fait
appel à la machine virtuelle pour obtenir l'espace mémoire nécessaire à la
représentation de l'objet puis appelle le constructeur pour initialiser l'objet dans
l'emplacement obtenu. Il renvoie une valeur qui référence l'objet instancié.
Si l'opérateur new n'obtient pas l'allocation mémoire nécessaire, il lève
l'exception OutOfMemoryError.
52
CRÉATION D'UN OBJET : INSTANCIER UNE
CLASSE
Remarque sur les objets de type String : un objet String est automatiquement
créé lors de l'utilisation d'une constante chaîne de caractères sauf si celle-ci
est déjà utilisée dans la classe. Ceci permet une simplification lors de la
compilation de la classe.
53
CRÉATION D'UN OBJET :
INSTANCIER UNE CLASSE
Pour obtenir une seconde instance de la chaine, il faut explicitement demander sa création en
utilisant l'opérateur new.
les tests réalisés dans ces deux exemples sont réalisés sur les références des
instances. Pour tester l'égalité de la valeur des chaînes, il faut utiliser la méthode
equals() de la classe String.
54
DURÉE DE VIE D'UN OBJET
Les objets ne sont pas des éléments statiques et leur durée de vie ne
correspond pas forcément à la durée d'exécution du programme.
La durée de vie d'un objet passe par trois étapes :
La déclaration de l'objet et l'instanciation grâce à l'opérateur new.
L'utilisation de l'objet en appelant ses méthodes
La suppression de l'objet : elle est automatique en Java grâce à la machine
virtuelle. La restitution de la mémoire inutilisée est prise en charge par le
récupérateur de mémoire (garbage collector). Il n'existe pas d'instruction
delete comme en C++.
55
RÉFÉRENCES ET LA COMPARAISON D'OBJETS
Les variables de type objet que l'on déclare ne contiennent pas un objet mais une
référence vers cet objet. Lorsque l'on écrit c1 = c2 (c1 et c2 sont des objets), on copie
la référence de l'objet c2 dans c1.
c1 et c2 font référence au même objet : ils pointent sur le même objet.
L'opérateur == compare ces références.
Deux objets avec des propriétés identiques sont deux objets distincts :
Exemple :
Pour comparer l'égalité des variables de deux instances, il faut munir la classe d'une
méthode à cet effet : la méthode equals() héritée de Object.
Pour s'assurer que deux objets sont de la même classe, il faut utiliser la méthode getClass()
de la classe Object dont toutes les classes héritent:
(obj1.getClass().equals(obj2.getClass())
56
LES VARIABLES DE CLASSES
Elles ne sont définies qu'une seule fois quel que soit le nombre d'objets
instanciés de la classe. Leur déclaration est accompagnée du mot clé static.
Exemple :
public class MaClasse() {
static int compteur = 0;
}
L'appartenance des variables de classe à une classe entière et non à un
objet spécifique permet de remplacer le nom de la variable par le nom de
la classe.
MaClasse m = new MaClasse(); Ce type de variable est utile
int c1 = m.compteur; pour, par exemple, compter
le nombre d'instanciations
int c2 = MaClasse.compteur; de la classe.
// c1 et c2 possèdent la même valeur. 57
LA VARIABLE THIS
Cette variable sert à référencer dans une méthode l'instance de l'objet en
cours d'utilisation. this est un objet qui est égal à l'instance de l'objet dans
lequel il est utilisé.
class MaClasse() {
String chaine = " test " ;
public String getChaine() { return chaine; }
// est équivalent à public String getChaine() { return
this.chaine; }
}
Il est préférable de préfixer la variable d'instance par le mot clé this.
this.nombre = nombre;
Cette référence est habituellement implicite :
private int nombre;
public maclasse(int nombre) {
nombre = nombre;
} 58
OPÉRATEUR INSTANCEOF
L'opérateur instanceof permet de déterminer la classe de l'objet qui lui
est passé en paramètre. La syntaxe est objet instanceof classe
void testClasse(Object o) {
if (o instanceof MaClasse )
System.out.println(" o est une instance de la classe MaClasse ");
else System.out.println(" o n'est pas un objet de la classe MaClasse ");
}
59
OPÉRATEUR INSTANCEOF
même si o est une instance de MaClasse, il n'est pas permis d'appeler une
méthode de MaClasse car o est de type Objet.
void afficheChaine(Object o) {
if (o instanceof MaClasse)
System.out.println(o.getChaine());
// erreur à la compil car la méthode getChaine()
//n'est pas définie dans la classe Object
}
Pour résoudre le problème, il faut utiliser la technique du casting (conversion).
void afficheChaine(Object o) {
if (o instanceof MaClasse) {
MaClasse m = (MaClasse) o;
System.out.println(m.getChaine());
}
} 60
ENCAPSULATION
61
LES MOTS CLÉS QUI GÈRENT LA VISIBILITÉ DES ENTITÉS
Quand vous définissez des membres dans une classe, vous avez le
choix parmi quatre niveaux de visibilité. Trois de ces niveaux (public,
protected et private) sont associés à des mots clés. Le quatrième
niveau s'obtient en ne spécifiant aucune mot clé relatif à la visibilité.
62
LA VISIBILITÉ PUBLIQUE - PUBLIC
63
LA VISIBILITÉ PROTÉGÉE - PROTECTED
Un membre marqué dans une classe comme étant protégé (mot clé
protected) peut être manipulé :
64
LA VISIBILITÉ « PACKAGE PRIVATE »
En l'absence de mot clé pour spécifier la visibilité, un membre sera considéré comme
étant « package private » (on peut simplifier en parlant de visibilité package). C'est
donc le mode de visibilité par défaut (absence de mot clé). Cela veut dire que le
membre sera accessible par tout code Java localisé dans le même package. Voici un
exemple d'utilisation.
package cours.exemple;
public class TestVisibilite {
public int attr1 = 10;
protected int attr2 = 20;
int attr3 = 30; // Visibilité package private !
private int attr4 = 40;
}
66
EXEMPLE CLASSES ET OBJETS (1)
NomDeClasse NomDeVariable ;
Point a ;
La situation peut a 3 x
5
être schématisée y
ainsi :
if(demande == 1){
Objet1 o1 = new Objet1();
o1.initialiser();
}
else{
Objet2 o2 = new Objet2();
o2.initialiser();
}
EXEMPLE CLASSES ET
OBJETS (9)
Réutilisation d'objets
• Il faut éviter la création d'objets à l'intérieur d'une boucle.
– Cette création peut être coû teuse en terme de consommation de
la mémoire.
– Préférer la réutilisation d'objet, qui sera instancié avant la boucle,
et modifié à l'intérieur.
a 3 x
a = new Point(3,5);
5
y
b 2 x
b= new Point(2,0) 0
y
a 3 x
5
b y
2
0 x
y
HÉRITAGE
Caractéristiques de l’héritage
- La classe «Materiel » est la classe mère de «MaterielInfo». - La classe «MaterielInfo» est la classe mère de
«Scanner» et «Imprimante».
- La classe «MaterielInfo» est une sous-classe de «Materiel ».
- «Scanner» et «Imprimante» sont des sous-classes de «MaterielInfo» .
HÉRITAGE
Camion Voiture
chargeMax modele
poidsChargement nbPortes
charger()
decharger()
HÉRITAGE
Classes dérivées: Camion et Voiture
La classe Camion est une classe dérivée de Vehicule. Elle hérite tous ses
méthodes et attributs. Elle étend la classe mère Vehicule en lui ajoutant
deux nouveaux attributs chargeMax et poidsChargement, ainsi que deux
nouvelles méthodes charger() et decharger()).
La classe Voiture est une classe dérivée de Vehicule et hérite tous les
méthodes et les attributs de Vehicule en lui ajoutant deux nouveaux attributs
modele et nbPortes.
On peut utiliser, dans les classes dérivées Camion et Voiture, les attributs et
les méthodes héritées (par exemple couleur ou freiner()) comme si ces
membres ont été déclarés dans chacune des sous-classes (sous réserve,
naturellement, que les droits d'accès le permettent).
HÉRITAGE
Implémentation de la classe Voiture
• La déclaration d'une classe dérivée se fait en utilisant le mot clé
«extends» suivi du nom de la classe de base.
• Lorsque le mot «extends» est omis, alors la classe hérite
automatiquement de la classe « Object ».
une méthode héritée sans changer sa signature.
Exemple 1
{
super. affiche() ;
System.out.println (" et ma couleur est : " + couleur) ;
}
HÉRITAGE
Si une méthode est redéfinie dans une sous-classe, le type de retour doit être identique à
celui de la méthode correspondante de la classe parente.
En redéfinissant une méthode, il est possible d'étendre sa zone de visibilité (private à package
à protected à public), mais non de la restreindre.
Exemple:
public class A {
private void fonction(float v) { ……}
}
public class B extends A {
public void fonction(float v){…}//redéfinition avec extension des droits d’accès.
}
POLYMORPHISME
• Le polymorphisme est la capacité, pour un même message de correspondre à
plusieurs formes de traitements selon l'objet auquel ce message est adressé, en
se basant sur la relation d’héritage.
• La gestion du polymorphisme est assurée par la machine virtuelle
dynamiquement à l'exécution.
Il est possible d’affecter à une référence d'une classe n'importe quel objet d'une de
ses classe dérivées.
POLYMORPHISME
• Le polymorphisme est la capacité, pour un même message de correspondre à
plusieurs formes de traitements selon l'objet auquel ce message est adressé, en
se basant sur la relation d’héritage.
• La gestion du polymorphisme est assurée par la machine virtuelle
dynamiquement à l'exécution.
Il est possible d’affecter à une référence d'une classe n'importe quel objet d'une de
ses classe dérivées.
POLYMORPHISME
Exemple 1 : Graphique
Cercle Rectangle
public class Graphique {
private int x, y;
public class Cercle extends Graphique
public Graphique ( int x, int y) {
{
this.x = x ; this.y = y ;
private double r ;
}
public Cercle ( int x, int y, double r){
public void identifie () {
super(x,y) ; this.r = r ;
System.out.println ("Je suis une
}
forme géométrique ") ;
public void identifie () {
}
System.out.println ("Je suis un
public void affiche () {
cercle ") ;
this.identifie() ;
}
System.out.println ("Le centre de l’objet
public double surface (){
se trouve dans :"+ x + " et "+ y) ;
return (2* 3.14*r) ;}
}
}
public double surface () {return (0) ;}
}
POLYMORPHISME
Exemple 1 (suite):
}} g.identifie() ;}}
public static void main (String [] args) { Je suis une forme géométrique
Graphique [] tab = new Graphique [6]; Le centre de l'objet se trouve dans : 3 et 2
} Je suis un rectangle