Vous êtes sur la page 1sur 34

29/11/2020

JAVA
Chapitre III : Les bases de la programmation
en Java
Pr. Sarra ROUBI
LP Génie Informatique : S3

Plan du cours
■ Java, LE langage Orienté Objet

■ Java : Comment cela fonctionne?


– Du code source au résultat.
– Environnement de développement
– Structure d’un programme Java

■ Les bases du langage Java :


– La syntaxe des éléments de base
– Les notions avancées

1
29/11/2020

JAVA : LE PROGRAMME
ORIENTÉ OBJET
Principe, fonctionnement et environnement

Java : Le langage Orienté Objet


■ La fiche descriptive : Java est
– né en 1995 chez Sun Microsystems (actuellement Oracle)
– orienté objet
– fortement typé
– modulaire
– rigoureux
– portable

2
29/11/2020

Java : Le langage Orienté Objet


■ La fiche descriptive : Java est
– né en 1995 chez Sun Microsystems (actuellement Oracle)
– orienté objet
– fortement typé :
toute variable doit avoir un type
Vérification de la cohérence à la compilation
– modulaire
– rigoureux
– portable

Java : Le langage Orienté Objet


■ La fiche descriptive : Java est
– né en 1995 chez Sun Microsystems (actuellement Oracle)
– orienté objet
– fortement typé
– modulaire :
portions de code génériques,
utilisables par plusieurs applications
– rigoureux
– portable

3
29/11/2020

Java : Le langage Orienté Objet


■ La fiche descriptive : Java est
– né en 1995 chez Sun Microsystems (actuellement Oracle)
– orienté objet
– fortement typé
– modulaire :
– rigoureux :
La plupart des erreurs se produisent à la compilation, et non à l’exécution
– portable

Java : Le langage Orienté Objet


■ La fiche descriptive : Java est
– né en 1995 chez Sun Microsystems (actuellement Oracle)
– orienté objet
– fortement typé
– Modulaire
– rigoureux
– portable :
un même programme compilé peut s’exécuter sur différents environnements

4
29/11/2020

Java : Le langage Orienté Objet


■ Java est aussi :
– défini par la JLS (Java Language Specification) éditée par Sun-
Oracle
– Compilé :
En bytecode, i.e., code intermédiaire indépendant de la machine
– Interprété :
Le bytecode est interprété par une machine virtuelle Java (JVM)

C’est à dire : Java est un langage interprété, ce qui signifie qu’un programme compilé
n’est pas directement exécutable par le système d’exploitation mais il doit être
interprété (« lu ») par un autre programme, qu’on appelle interpréteur.

Java : Le langage Orienté Objet


■ On peut donc dire que :

– bytecode, qui est le « langage machine » de la machine virtuelle Java JVM


– on parle plus communément de JRE (Java Runtime Environment)

10

5
29/11/2020

JAVA : COMMENT ÇA
FONCTIONNE?
Du code source au résultat

11

JAVA : Principe de fonctionnement


Ecrire le programme en langage
JAVA
Code Source

Compiler le programme en
utilisant la commande javac
Compilateur
Enregistré dans un fichier avec
extension .class
Bytecode

Interprété par la machine


Virtuelle JVM
Interpréteur

Résultat de l’interprétation
Code Machine

Système Utilisation de l’exécutable


d’Exploitation

12

6
29/11/2020

JAVA : Principe de fonctionnement (write


Interprétation / exécution
once, run everywhere)
Fichier HelloWorld.java
Hello World !
public class HelloWorld { Pile Tas
public static void main(String[] args) { Linux
// Un commentaire sur une seule ligne Java Virtual Machine Hello World !
System.out.println( "Hello World! ");
Pile Tas
}}
Windows
Java Virtual Machine
Fichier HelloWorld.class
Compiled from "HelloWorld.java"
public class HelloWorld extends java.lang.Object{ public HelloWorld();
Code:
Compilation 0: aload_0
(Une seule fois) 1: invokespecial #1; //Method java/lang/Object."":()V 4: return
public static void main(java.lang.String[]);
Code:
0: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #3; //String Bonjour à vous les IR1!
5: invokevirtual #4; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
8: return }
13

JAVA : Principe de fonctionnement


Le bytecode :
■ Le langage source Java est défini par la JLS (Java Language Specif
ication) éditée par SunOracle
■ Le code source d'une classe contenue dans un fichier est compilé
avec la commande javac
■ Cela produit un code intermédiaire, appelé bytecode, qui est le «
langage machine » de la machine virtuelle Java
■ Le bytecode d'une classe est destiné à
être chargé par une machine virtuelle qui doit l'exécuter avec la
commande java

14

7
29/11/2020

JAVA : Principe de fonctionnement


La JVM :
■ Son rôle est d'abstraire le comportement d'une machine

■ Pour le rendre le + possible indépendant de la plateforme

■ Une JVM traduit le bytecode dans le langage machine de la platef


orme d'accueil

15

LES BASES DU
LANGAGE JAVA
Syntaxe, normes et Codage

16

8
29/11/2020

Java et sa syntaxe : Types


Types Primitifs :
■ Les types primitifs en java, strictement analogues aux types
correspondants dans des langages non orientés objets.
■ Huit types primitifs :
– Entiers : byte, short, int et long, tous signés.
– Nombres à virgule flottante : float et double.
– Caractères : char.
– booléens : boolean, pour les valeurs logiques.

17

Java et sa syntaxe : Types


Types Primitifs :

18

9
29/11/2020

Java et sa syntaxe : Types


Types Primitifs :
■ Plage de variables :
Type Taille Plage de variation
-9 223 372 036 854 775 808 . . .
long 64 bits
9 223 372 036 854 775 807
int 32 bits -2 147 483 648 . . . 2 147 483 647
short 16 bits -32 768 . . . 32 767
byte 8 bits -128 . . . 127
double 64 bits 1.7e-308 . . . 1.7e308
float 32 bits 3.4e-38 . . . 3.4e+38
19

Java et sa syntaxe : Types


Types Primitifs : Cast
■ Transtypage (ou conversions, “cast”) :
– Conversions possibles en java.
– Conversion automatique seulement possible lorsque le
compilateur sait que la variable destination est assez grande.

20

10
29/11/2020

Java et sa syntaxe : Types


Types Primitifs : Cast

21

Java et sa syntaxe : Types


Types Primitifs :
■ Caractère :
– Un caractère est codé par un entier allant de 0 à 65536 (selon le
standard unicode).
– On peut se servir des caractères comme entiers avec le cast :
int trois = 3;
char un = ’1’;
char quatre = (char) (trois + un);

22

11
29/11/2020

Java et sa syntaxe : Types


Types Primitifs :
■ Booléan :
– Type renvoyé par tous les opérateurs de comparaison, comme (a <
b).
– Type requis par tous les opérateurs de contrôle de flux, comme if,
while et do.

23

Java et sa syntaxe : Types


Types Objet :
■ Type Objet : Instance de classe prédéfinie ou nouvellement définie
dans le programme.
■ Il faut utiliser le mot clé new

■ Il s’agit de l’instaciation de la classe en objet avec des paramètres


connus.

LeTypeObjet objet = new LeTypeObjet(lesParamètres)

24

12
29/11/2020

Java et sa syntaxe : Types


Types Objet :
■ String :
– permet de gérer les chaînes de caractères, c'est-à-dire le stockage
de texte.
– Il s'agit d'une variable d'un type plus complexe que l'on
appelle objet.
– String n'est pas un type de variable, mais un objet. Notre variable
est un objet, on parle aussi d'une instance : ici, une instance de la
classe String. Nous y reviendrons lorsque nous aborderons les
objets.

25

Java et sa syntaxe : Types


Types Objet :
■ String :

26

13
29/11/2020

Java et sa syntaxe : Opérations


Opérations arithmétiques:
■ Les opérateurs arithmétiques fonctionnent comme en C.

Opération Résultat
+ addition
- soustraction
* multiplication
/ division
% modulo
++ incrémentation

27

Java et sa syntaxe : Opérations


Opérations :
■ Il existe aussi :

■ Idem pour - , *, /

28

14
29/11/2020

Java et sa syntaxe : Opérations


Opérations logiques:
■ Les opérateurs arithmétiques fonctionnent comme en C.
Opération Résultat
== égal à
!= différent de
> strictement supérieur à
< strictement inférieur à
>= supérieur ou égal à
<= inférieur ou égal à

29

Java et sa syntaxe : Variables / Classe


Syntaxe générale :
■ La syntaxe de déclaration d'une classe est la suivante :
■ modificateurs class nom_de_classe [extends classe_mere]
[implements interfaces] {
... // Implémentation
}

30

15
29/11/2020

Java et sa syntaxe : Variables / Classe


Nommage:
■ une convention de nommage. En fait, c'est une façon d'appeler
nos classes, nos variables, etc. Il faut que vous essayiez de la
respecter au maximum :
■ Les noms de classes doivent commencer par une majuscule ;
■ Les noms de variables doivent commencer par une minuscule ;
■ si le nom d'une variable est composé de plusieurs mots, le premier
commence par une minuscule, le ou les autres par une majuscule,
et ce, sans séparation ;
■ tout ceci sans accentuation !

31

Java et sa syntaxe : Variables / Classe


Nommage:

32

16
29/11/2020

Java et sa syntaxe : Méthodes / Classe


Modificateurs de classe :
la classe contient une ou des méthodes abstraites, qui n'ont
abstract pas de définition explicite. Une classe déclarée abstract ne
peut pas être instanciée
la classe ne peut pas être modifiée, sa redéfinition grâce à
final l'héritage est interdite. Les classes déclarées final ne
peuvent donc pas avoir de classes filles.

la classe n'est accessible qu'à partir du fichier où elle est


private définie

public La classe est accessible partout

33

Java et sa syntaxe : Méthodes / Classe


Modificateurs de classe : abstract
■ Le mot clé abstract s'applique aux méthodes et aux classes.

■ Abstract indique que la classe ne pourra être instanciée telle


quelle. De plus, toutes les méthodes de cette classe abstract ne
sont pas implémentées et devront être redéfinies par des
méthodes complètes dans ses sous-classes.

34

17
29/11/2020

Java et sa syntaxe : Méthodes / Classe


Modificateurs de classe : abstract
■ Dés qu’une classe comporte une méthode abstraite, elle est
abstraite, et ce même si on n’indique pas le mot abstract
class A {public abstract void f(); //ok … }
A est considérée abstraite et une expression telle que new A(…) sera
rejetée
■ Une méthode abstraite doit obligatoirement être déclarée public,
ce qui est logique car sa vocation est d’être redéfinie dans une
classe dérivée
■ Dans l’entête d’une méthode abstraite, il faut mentionner les nom
des arguments

35

Java et sa syntaxe : Méthodes / Classe


Modificateurs de classe : abstract
■ Exemple

36

18
29/11/2020

Java et sa syntaxe : Méthodes / Classe


Modificateurs de classe : final
■ Le mot clé final permet de rendre l'entité sur laquelle il s'applique
non modifiable une fois qu'elle est déclarée pour une méthode ou
une classe et initialisée pour une variable.

■ PS : Le mot clé final s'applique aux variables de classe ou


d'instance ou locales, aux méthodes, aux paramètres d'une
méthode et aux classes.

37

Java et sa syntaxe : Méthodes


Syntaxe
■ Les méthodes permettent de faire des traitements.
– TypeDeRetour :
■ Void : ne retourne rien
■ Type primitifs (int, double, float, char..)
■ Type de classe (String, Personne, ..)

Accesseur TypeDeRetour nomDeLaMethode (Type1 arg1, Type2 arg2,..) {


//liste d'instructions
return (ou pas)
}
38

19
29/11/2020

Java et sa syntaxe : Méthodes


Appel
■ Elles sont utilisées par les objets.

■ Syntaxe :

Objet.nomDeLaMethode (argument1,argument2,..) ;

39

Java et sa syntaxe : Classe


Instances :
■ Une instance d’une classe est créée par un des constructeurs de
la classe

■ Une fois qu’elle est créée, l’instance :


– a son propre état interne (les valeurs des variables)
– partage le code qui détermine son comportement (les méthodes) avec
les autres instances de la classe

40

20
29/11/2020

Java et sa syntaxe : Classe


Instances :
■ Un constructeur est une méthode d'instance qui va se charger de
créer un objet et, le cas échéant, d'initialiser ses variables de
classe.
■ Cette méthode a pour rôle de signaler à la JVM (Java Virtual
Machine) qu'il faut réserver de la mémoire pour notre futur objet
et donc, par extension, d'en réserver pour toutes ses variables.

41

Java et sa syntaxe : Classe


Constructeurs :
■ Chaque classe a un ou plusieurs constructeurs qui servent à
– créer les instances
– initialiser l’état de ces instances
■ Un constructeur
– a le même nom que la classe
– n’a pas de type retour

42

21
29/11/2020

Java et sa syntaxe : Classe


Constructeurs :
■ Il existe 3 types de constructeurs :
– un constructeur par défaut : Il a le même nom que la classe sans
paramètres. L’initialisation est dite par défaut.

43

Java et sa syntaxe : Classe


Constructeurs :
■ Il existe 3 types de constructeurs :
– un constructeur avec paramètres : Instancier tous les paramètres
de l’objet.

44

22
29/11/2020

Java et sa syntaxe : Classe


Constructeurs :
■ Il existe 3 types de constructeurs :
– un constructeur avec ‘ quelques ‘ paramètres :
Instancier quelques paramètres de l’objet.

45

Java et sa syntaxe : Classe


Mot clé this
■ This fait référence à l'objet courant ! Bien que la traduction
anglaise exacte soit « ceci », il faut comprendre « moi ». À l'intérieur
d'un objet, ce mot clé permet de désigner une de ses variables ou
une de ses méthodes.

■ Son utilisation n’est pas obligatoire mais elle peut l’être si les
noms des paramètres sont identiques aux noms des attributs
■ Il peut être utilisé pour rendre le code explicite et non ambigu.

46

23
29/11/2020

Java et sa syntaxe : Classe


Mot clé this
Soit :

public class UneClasse


int x;
public void methode1(){ objet 1 objet2
this.x = 5;
... x
5 X 5
}

UneClasse objet1 = new UneClasse();


UneClasse objet2 = new UneClasse();

objet1.methode1(); //this == objet1 dans methode1()


objet2.methode1(); //this == objet2 dans methode1()

47

Java et sa syntaxe : Classe


Constructeurs : usage this
■ Il est utilisé dans les constructeurs lorsque les paramètres passés
ont le même nommage que ceux de la classe :

48

24
29/11/2020

Java et sa syntaxe : Classe


Méthode : usage this
■ Il est utilisé dans les méthodes aussi lorsqu’un paramètre ayant le
même nom qu'un attribut de la classe dont la méthode fait partie:

49

Java et sa syntaxe : Classe


Classe: usage this
■ Il est utilisé pour s'auto-désigner comme référence.
■ peut être utilisé pour passer une référence à l'instance elle-même
comme paramètre d'une méthode.

source.addListener(this);

50

25
29/11/2020

Java et sa syntaxe : Classe


Classe imbriquée : usage this
■ Dans le cas de classes imbriquées, c'est-à-dire qu'une classe
interne utilise l'instance de la classe externe, le mot-clé this préfixé
du nom de la classe externe permet de désigner l'instance de la
classe externe. S'il n'est pas préfixé, il désigne l'instance de la
classe interne.

51

Java et sa syntaxe : Classe


Classe imbriquée : usage this

52

26
29/11/2020

Java et sa syntaxe : Objets


Accesseurs/Mutateurs : Getter/Setter
■ Un accesseur est une méthode qui va permettre d'accéder aux
variables des objets en lecture.
■ Un mutateur permettra d'en faire de même en écriture.

■ On les appelles getters/setters :

53

Java et sa syntaxe : Objets


Accesseurs/Mutateurs : Getter/Setter

54

27
29/11/2020

LES TRAITEMENTS EN
LANGAGE JAVA
Entrée, Sorties, Boucles, Conditions

55

Java et sa syntaxe : Traitements


Entrée / Sortie :
■ Affichage : print()
– System.out.print(‘’ Hello World !‘’) : écrire « Hello World ! » en
utilisant l'objet out de la classe System»

– System : Classe utilitaire qui permet surtout d'utiliser l'entrée et la


sortie standard, c'est-à-dire la saisie clavier et l'affichage à l'écran.

– PS : println() -à print() + \n

56

28
29/11/2020

Java et sa syntaxe : Traitements


Entrée / Sortie :
■ Affichage : Scanner
– Scanner sc = new Scanner(System.in); Créer un objet scanner qui
utilise l’objet in de l’utilitaire System.

– Le scanner lit les lignes et les stocke dans une variable :


String str = sc.nextLine();

PS : String -> nextLine(), int -> nextInt(), double -> nextDouble()

57

Java et sa syntaxe : Condition


If .. Else :
■ Utilisation des opérateurs logiques.
– Structure :

58

29
29/11/2020

Java et sa syntaxe : Condition


If .. Else :
■ Utilisation des opérateurs logiques.
– Fonctionnement :

Le résultat de l'expression évaluée par l'instruction if sera


un boolean, donc soit true, soit false. La portion de code du bloc if ne
sera exécutée que si la condition est remplie. Dans le cas contraire,
c'est le bloc de l'instruction else qui le sera.

59

Java et sa syntaxe : Condition


If .. Else :
■ Utilisation des opérateurs logiques.
– Imbrication : si .. Sinon si … sinon

60

30
29/11/2020

Java et sa syntaxe : Condition


Switch .. Case :
■ Le switch est surtout utilisé lorsque nous voulons des conditions «
à la carte »..
■ on utilise un switch pour éviter des else if à répétition et pour
alléger un peu le code

61

Java et sa syntaxe : Condition


Switch .. Case :
■ Fonctionnement :
– La classe évalue l'expression figurant après le switch (/*Variable*/).
– Si la première languette (case /*Valeur possible de la variable*/:)
correspond à la valeur de /*Variable*/, l'instruction figurant dans
celle-ci sera exécutée.
– Sinon, on passe à la languette suivante, et ainsi de suite.
– Si aucun des cas ne correspond, la classe va exécuter ce qui se
trouve dans l'instruction default:/*Action*/;. Voyez ceci comme une
sécurité.

62

31
29/11/2020

Java et sa syntaxe : Condition


Switch .. Case :
■ Exemple :

63

Java et sa syntaxe : Boucles


For :
■ Fonctionnement : elle prend tous ses attributs dans sa condition et
agit en conséquence :
– déclaration d'une variable avant la boucle ;
– initialisation de cette variable ;
– incrémentation de celle-ci dans la boucle

64

32
29/11/2020

Java et sa syntaxe : Boucles


For :
■ Exemple :

65

Java et sa syntaxe : Boucles


While :
■ Fonctionnement : faire répéter une instruction un certain nombre de
fois. C'est à ça que servent les conditions.

■ Attention aux boucles infinies : Toujours vérifier les conditions d’arrêt.

■ La boucle do .. while est similaire, avec des différences, lesquelles?

66

33
29/11/2020

Java et sa syntaxe : Boucles


While :
■ Exemple :

67

34

Vous aimerez peut-être aussi