Introduction au Java – BFA
Cours 1
Stéphane Airiau
Université Paris-Dauphine
Cours 1– (Stéphane Airiau) Java 1
Aujourd’hui
ë Eléments de base
ou bien : (presque) tout ce dont vous avez besoin pour ré-écrire les algo-
rithmes vus en cours d’algorithmique sans utiliser des objets !
Variables, opérateurs, type d’une expression
Tests, boucles
Tableaux
méthodes
ë Une introduction à la programmation objet
créer un objet
compiler et exécuter
Cours 1– (Stéphane Airiau) Java 2
Programmation orientée Objet en Java
Cours 1– (Stéphane Airiau) Java 3
Objets et Classes
Un objet se définit par ses états (on peut aussi parler de ses caractéris-
tiques) et son comportement.
exemple d’un objet voiture
Etats Comportements
marque accélerer
modèle passer rapport supérieur
cylindrée passer rapport inférieur
quantité d’essence tourner volant
niveau d’huile ouvrir porte
pression des pneus fermer porte
nombre de tours freiner
Une classe est un plan ou un moule pour fabriquer des objets.
les états d’un objet vont être représentés par des variables
les comportements d’un objet seront representés par des méthodes.
Un objet est une instance d’une classe.
Cours 1– (Stéphane Airiau) Java 4
Autrement dit
Une classe est un type abstrait caractérisé par des propriétés (attributs et
méthodes) communes à un ensemble d’objets et permettant de créer des
objets ayant ces propriétés.
Un objet ou une instance de classe possède un comportement et un état
qui ne peut être modifié que par les actions du comportement.
On peut créer une classe Personnage car tous les personnages par-
tagent les mêmes caractéristiques. Lorsqu’on veut créer un person-
nage, on instantie la classe Personnage
N.B. par convention, le nom d’une classe commence toujours par une
majuscule.
Cours 1– (Stéphane Airiau) Java 5
Des classes déjà existentes
Java possède une large librairie de classes. La librairie se compose de
différents packages et sous-packages.
[Link]
[Link]
Par exemple, le package [Link] contient des classes de bases du
langage Java. On y trouve aussi une classe pour manipuler les chaînes
de caractères appelée String.
Cours 1– (Stéphane Airiau) Java 6
Attributs et variables de classe
variables d’instance ou attributs :
ces variables définissent les caractéristiques de l’objet.
• initialisation optionnelle.
accès : <nom objet>.<nom attribut>
variables de classe : ces variables sont communes à toutes les
instances de la classe,
• déclaration avec le mot clé static
• initialisation obligatoire
accès : <nom de classe>.<nom variable de classe>
exemple : classe Float pour encapsuler un nombre flottant float.
variables de classes : MAX_VALUE, MAX_EXPONENT, NaN, etc.
Cours 1– (Stéphane Airiau) Java 7
méthodes d’instance et méthodes de classe
méthode d’instance : ces méthodes permettent de modifier ou
d’accéder à l’état de l’objet.
méthode de classe : ces méthodes ne modifient pas l’état interne
d’un objet.
exemple : la classe Float
méthode d’instance String toString()
ë retourne une représentation en chaîne de caractères de l’objet courant
méthode de classe static String toString(float f)
ë retourne une représentation en chaîne de caractères du float passé en
paramètre
1 Float f;
2 [Link]([Link]());
3 [Link]([Link](3.1419));
Cours 1– (Stéphane Airiau) Java 8
Encapsulation
Les comportements et les états d’un objets peuvent être
connus de tous ë public
toute classe peut
exécuter la méthode publique
modifier ou accéder à un attribut publique
cachés ë private la méthode ou l’attribut ne peut être accédée que
depuis l’intérieur de la classe
ë cacher un méchanisme interne
(on pourra changer une implémentation sans que cela ait un impact
sur la partie publique).
ë protection
Cours 1– (Stéphane Airiau) Java 9
Constructeurs
Une classe est un plan ou un moule pour fabriquer un objet, ce qu’on ap-
pelle instancier un objet.
Les méthodes pour instancier un objet sont appelées des constructeurs.
Un constructeur
porte le nom de la classe
n’a pas de type de retour.
On appelle constructeur par défaut le constructeur sans arguments :
1 public class <nom classe> {
2 // déclaration des variable d’instances et
3 // variables de classe
..
. ...
5 // constructeur par défaut
6 public <nom classe>(){
7 // corps de la méthode
8 }
9 }
Cours 1– (Stéphane Airiau) Java 10
Exemple
La surcharge permet d’avoir des constructeurs avec des signatures diffé-
rentes.
Pour une classe Personnage, on peut donc écrire :
1 public class Personnage {
2 public String nom;
3
4 // constructeur par défaut
5 public Personnage(){
6 nom = ”Inconnu";
7 }
8
9 public Personnage(String name){
10 nom = name;
11 }
12 }
Cours 1– (Stéphane Airiau) Java 11
Création d’un objet
Déclaration : comme pour les types primitifs :
<Nom de la classe> <nom objet>;
Création/initialisation à l’aide du mot clé new et appel du
constructeur :
new <Nom de classe>(<liste d’arguments>);.
comme pour les types primitifs, on peut déclarer et initialiser
plusieurs objets du même type en même temps.
1 Personnage asterix = new Personnage("Astérix");
2 Personnage obelix = new Personnage("Obelix"),
3 idefix = new Personnage(”Idéfix”),
4 romain = new Personnage();
Cours 1– (Stéphane Airiau) Java 12
Egalité
1 Personnage asterix = new Personnage("Astérix");
2 Personnage asterixBis = asterix;
3 Personnage asterixTer = new Personnage("Astérix");
4 if (asterix == asterixBis)
5 [Link]("Bleu");
6 else
7 [Link]("Rouge");
8 if (asterix == asterixTer)
9 [Link]("Bleu");
10 else
11 [Link]("Rouge");
Qu’est-ce qui est affiché sur la console ?
Cours 1– (Stéphane Airiau) Java 13
Egalité
1 Personnage asterix = new Personnage("Astérix");
2 Personnage asterixBis = asterix;
3 Personnage asterixTer = new Personnage("Astérix");
4 if (asterix == asterixBis)
5 [Link]("Bleu");
6 else
7 [Link]("Rouge");
8 if (asterix == asterixTer)
9 [Link]("Bleu");
10 else
11 [Link]("Rouge");
Qu’est-ce qui est affiché sur la console ?
la variable est une référence vers l’objet
et non l’objet lui même
== désigne l’égalité de la référence :
deux variables peuvent pointer vers le même objet
pour tester l’égalité entre les propriétés de l’objet,
on utilise la méthode boolean equals(Object o).
Cours 1– (Stéphane Airiau) Java 14
Destruction d’un objet
La destruction des objets est prise en charge par Java à l’aide d’un “gar-
bage collector” (GC).
ë Le GC détruit les objets (i.e. efface la mémoire) qui ne sont
référencés par aucun autre objet.
Les destructions sont asynchrones et il n’y a pas de garanties que les
objets soient détruits.
Une méthode optionnelle nommée finalize est appelée lorsque
l’objet est détruit.
Elle peut par exemple s’assurer que des fichiers ou des connexions sont bien
fermées avant la destruction de l’objet.
Cours 1– (Stéphane Airiau) Java 15
Compilation, exécution, machine virtuelle
Java n’est pas seulement la description d’un langage et une bibliothèque
de classes.
Java dispose d’outils pour générer et exécuter du code.
Cours 1– (Stéphane Airiau) Java 16
Compilation
Chaque classe <MaClasse> est enregistrée dans un fichier
<MaClasse>.java : il porte le même nom que la classe et possède
l’extension .java.
Le développeur doit compiler l’ensemble de classes à l’aide d’un pro-
gramme appelé javac.
Le compilateur traduit le code écrit par le développeur en un langage plus
simple qui pourra être exécuté.
Pour Java, le compilateur produit un code dans le langage bytecode.
Le résultat de la compilation est un fichie nommé <MaClasse>.class
Cours 1– (Stéphane Airiau) Java 17
Compilation
Pour simplifier, il y a deux étapes lors de la compilation :
analyse syntaxique : le code est lu, on forme un arbre de syntaxique.
on vérifie la syntaxe du code
(i.e. on vérifie la grammaire du code).
analyse sémantique : l’arbre syntaxique est analysé et traduit en
bytecode.
les références à des classes extérieures sont vérifiées (on cherche si la classe
existe bien, si elle a besoin d’être compilée, etc).
Cours 1– (Stéphane Airiau) Java 18
Exécution
On exécute une méthode spéciale appelée main.
Cette méthode se trouvera dans une classe de votre choix.
Si la méthode main se trouve dans une classe MaClasse, on lancera l’exé-
cution en lançant l’application Java :
java MaClass
(on peut taper cette commande sous linux ou mac os)
La méthode main a une signature fixée par convention
1 public static void main(String[] args)
public : pour être appelée de l’extérieur de la classe
static : pour être appelée sans avoir instancié un objet
void : la méthode ne retourne rien
String[] args : lors du lancement de l’exécution, on peut ajouter
du texte et chaque mot sera inséré dans un tableau de String qui
peut servir à paramétrer l’exécution.
Cours 1– (Stéphane Airiau) Java 19
Machine virtuelle
Java fournit une machine virtuelle : c’est un programme qui lit du code
en bytecode et interprète ce code dans le langage de la machine pour
l’exécuter : Lors de l’exécution java MaClass
on lance un programme appelée java
se programme interprète le code lancé à partir de la méthode main
de la classe MaClasse
Cours 1– (Stéphane Airiau) Java 20
Machine Virtuelles
avantages :
le code est portable :
ë On peut écrire, compiler et exécuter sur des machines d’architectures
différentes. (ordinateur windows, apple, linux, téléphone mobile,
caisse enregistreuse, etc).
la machine virtuelle permet de partager d’une manière sécurisée
une machine
le code est généralement plus compact (pas besoin d’inclure les
bibliothèques comme en C ou C++).
la machine virtuelle donne l’impression que l’on dispose d’une
machine entière (la machine réelle donner du temps processeur à la
machine virtuelle).
inconvenients : coût en ressources de la machine virtuelle.
Cours 1– (Stéphane Airiau) Java 21
Compilation et Exécution d’un code Java
Code Source .java
sous windows
sous mac OS
sous linux
Compilation javac
Bytecode .java
machine
virtuelle Exécution java
machine windows machine linux machine apple portable android
Cours 1– (Stéphane Airiau) Java 22
Travaux Pratiques
Coder une classe pour manipuler des Etudiants. Chaque étudiant aura 4
notes (une pour chaque module), il sera identifié par son nom.
coder une méthode toString() qui retourner une représentation
en chaîne de caractères d’un étudiant.
coder une méthode pour ajouter la note d’un module. Par exemple,
vous pouvez utiliser comme argument le numéro du module et la
note.
coder une méthode qui retourne la moyenne sur les quatre modules.
Si une note est manquante, affichez un message. Comme vous
devrez tout de même retourner une valeur, choisissez-la bien.
coder une méthode qui indique si oui ou non l’étudiant valide son
année (i.e. il doit avoir la moyenne sur les quate modules).
Ecrire une méthode main ou vous testerez chaque opération
PS : Pour imprimer sur la console utilisez cette méthode :
[Link](<une chaine de caractères>)
PPS : l’opérateur + concatène les chaînes de caractères, par exemple ”par Java
Cours 1– (Stéphane Airiau) 23