0% ont trouvé ce document utile (0 vote)
33 vues111 pages

Base Java Cours 1

Transféré par

mamy coura Guissé
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
33 vues111 pages

Base Java Cours 1

Transféré par

mamy coura Guissé
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd

NOTIONS DE BASE DU

LANGAGE JAVA
(PARTIE 1)
Plan
2
 Introduction
 Variable, valeur constante, conversion en Java
 Opérateurs
 Structure de contrôle
 Manipulation des types primitifs, les tableaux, les chaînes de
caractères,
passage des paramètres
 Notion d‟objets et de classes
 Héritage
 Interface
 Polymorphisme
 Paquetage
Petit historique du langage Java
3
 On peut faire remonter la naissance de Java à 1991.
 Java fondé sur le concept de machine virtuelle
 Traduire un programme source, non pas directement en langage
machine, mais
dans un pseudo langage universel
 Ce code intermédiaire (formé de byte codes), se
trouve ainsi compact et portable sur
n‟importe quelle machine
Cours POO/JAVA

 Une de ses plus grandes forces est son excellente portabilité : une fois
votre programme créé, il fonctionnera automatiquement sous
Windows, Mac, Linux, etc.

 On peut faire de nombreuses sortes de programmes avec Java :


- des applications, sous forme de fenêtre ou de console ;
- des applets, qui sont des programmes Java incorporés à des pages
web ;
- des applications pour appareils mobiles, avec J2ME , android;
- et bien d'autres ! J2EE, JMF, J3D pour la 3D...
Langage java
4

 C‟est un langage orienté objet

 Il est compilé en bytecode


Le bytecode est un code intermédiaire indépendant de la
machine
Cours POO/JAVA

 Il est interprété
Le bytecode est interpété par une machine virtuelle Java
Premier exemple : HelloWord
5

Dans un fichier de nom


HelloWorld.java public class
HelloWorld {
/* Un style de
commentaire sur
plusieurs lignes. */
public static void
Cours POO/JAVA

main(String[] args) {
// Un commentaire sur une seule ligne
System.out.println("Bonjour à vous les
IR1!");
}
}
NB: toute classe publique doit être dans un fichier qui a le même nom
que la classe
Ce fichier définit une classe, qui est une unité de compilation,
étant donné qu‟il y a une méthode main, cette classe est «
exécutable »
Compilation et Exécution
6
(Java Virtual Machine)
Cours POO/JAVA
B. NGOM
Le bytecode
7

 Le code source d'une classe contenue dans un


fichier est compilé avec la commande javac

 Cela produit un code intermédiaire(extension.class),


appelé bytecode, qui est le langage machine de la
machine virtuelle Java

 Le bytecode d'une classe est destiné à être chargé par


Cours POO/JAVA

une machine virtuelle qui doit l'exécuter avec la


commande java

 Ce bytecode peut être exécuté sous de nombreux


systèmes d‟exploitation par une machine virtuelle
Java.
B. NGOM
Machine Virtuelle Java (JVM)
8

 La machine virtuelle Java ou JVM (Java Virtual Machine) est


un environnement d'exécution pour applications Java.

 Elle exécute des programmes compilés.

 C'est un des éléments les plus importants de la plate-forme


Java.
Cours POO/JAVA

 Elle assure l'indépendance du matériel et du système


d'exploitation lors de l'exécution des applications Java.

 Une application Java ne s'exécute pas directement dans le


système d'exploitation mais dans une machine virtuelle qui
s'exécute dans le système d'exploitation et propose une
B. NGOM

couche d'abstraction entre l'application Java et ce


système.
Java : langage et plateforme
9

Il existe plusieurs éditions, selon la plateforme java considérée:

 Java SE (Java Platform, Standard Edition): Java SEpour


applications classiques, desktop

 Java EE (Java Platform, Enterprise Edition): Java EE pour


développer
Cours POO/JAVA

et déployer des applications serveur, Web services, etc.

 Java ME (Java Platform, Micro Edition): J2ME pour les


applications
embarquées, PDA, téléphones, etc.
B. NGOM
Plateforme Java
10

La plateforme java utilise un ensemble de bibliothèques,


programmes et d‟outils. Cet ensemble de
contient :
 Le kit de développement Java
(JDK)
 L‟environnement d‟exécution
(JRE)
Cours POO/JAVA

 La machine virtuelle java (JVM)


B. NGOM
JDK / JVM / JRE
11

 JDK (Java Developpement Kit) = un ensemble d‟outils et


programmes pour développer, compiler, déboguer et
exécuter un programme en java. Il contient également un
environnement d‟exécution de java (JRE)

 JVM (Java Virtual Machine) = un programmequi


permet
Cours POO/JAVA

d‟interpréter le programme java crée avec le JDK

 JRE (Java Runtime Execution) = un ensemble d‟outils et de


programmes nécessaires pour exécuter un programme java
(déjà compilé)
B. NGOM
Installation Java
12

 Installer JDK (exemple: JDK 8).


 Plateforme Java (exemple: Eclipse indigo SE).
 Vérification de l‟installation Java (java -version).

NB: Chaque fois que le développeur télécharge un JDK, celui-ci


inclut un JRE compatible avec la version, et ce JRE comprend
lui-même un JVM par défaut.
Cours POO/JAVA
B. NGOM
Compilation et exécution
13

Compilation (commande javac) =>


Fichier.class Exécution (commande java)
=> package.Fichier
Cours POO/JAVA
B. NGOM
Langage java
14

Les variables,les opérateurs, les expressions,


instructions, blocs,
contrôle de flot sont très proches de ceux du C

Les exceptions sont une nouveauté

Les types primitifs ont une taille et une représentation


normée
Cours POO/JAVA

Il y a des spécificités syntaxiques liées à la


programmation objets, aux classes, à l'héritage...

Un style de nommage (très fortement) conseillé


B. NGOM

 Première majuscule pour les classes (class HelloWorld)


 Première minusculepour les variableset les méthodes
(nom, getNom())
 Tout en majuscule pour les constantes (MAX_SIZE)
Plan
15
 Introduction
 Variable, valeur constante, conversion en Java
 Opérateurs
 Structure de contrôle
 Manipulation des types primitifs, les tableaux, les chaînes de
caractères,
passage des paramètres
 Notion d‟objets et de classes
 Héritage
 Interface
 Polymorphisme
 Paquetage
Les variables en Java
16

Les variables locales comme les champs des classes et des objets
ne peuvent être
que de deux natures:

 De type « primitif »
La déclaration de la variable réserve la place mémoire pour stocker sa
valeur (qui dépend de son type)
Exemple: int entier; long entierLong;
Cours POO/JAVA

 De
1 typeLe
« référence » comprennent
type tableau deux
qui est un type sous-catégories
prédéfini;
)
2 Les types des objets. Ils pourront être prédéfinis (ex: String)
)
par ouledéfinis
programmeur. La déclaration de la variable de type
«objet» ne fait que réserver la place d'une référence (une sorte de
pointeur) qui permettra d‟accéder à l‟endroit en mémoire où est
B. NGOM

effectivement stocké l'objet en lui même (vaut null si référence


inconnue)
Exemple:
Pixel p1; p1=new Pixel(1,3);
Type primitif
17

Types entiers signés


 byte (octet) sur 8 bits
 short sur 16 bits
 int sur 32 bits
 long sur 64 bits

Type caractère non signé


 char sur 16 bits
Cours POO/JAVA

Types à virgule flottante


 float sur 32 bits
 double sur 64 bits

Type booléen: boolean (true


B. NGOM

ou false)
B. NGOM Cours POO/JAVA

Type Fondamentaux
Valeur constante
19

Une constante est une variable finale, c‟est-`a-dire une


variable non
modifiable.

Pour signalerqu'unevariableest une constante, on


utilise le mot réservé final lors de sa déclaration :
Cours POO/JAVA

final int VAL = 6;

Le compilateur indique donc qu‟on ne peut pas donner une


valeur à
une constante.
B. NGOM

Message d‟erreur: « cannot assign a value »


Valeur littérale
20

Un littéral est une valeur explicite utilisée dans


le
code source d'un programme .

On peut représenter les entiers simplementen donnant


leur valeur sous forme décimale, binaire, octale ou
hexadécimale.
Cours POO/JAVA

Les littéraux de type numériques


Les littéraux sont pardéfaut de type int. Un
littéralpeut être rendu de type long en le suffixant avec l ou
L.
B. NGOM

Exemple:
 12345 est de type int
 12345L est de type long
Valeur littérale
21

Pour les valeurs numériques, voiciune


récapitulation des règles
appliquées :
Cours POO/JAVA

On remarque que les modificateurs d et f peuvent


s‟appliquer aux entiers et les faire considérer comme des
doubles ou des floats (un entier est un cas particulier de réel)
B. NGOM

Exemple
Conversion des types
22

Java est très strict du point de vue des données et il est parfois
intéressant de convertir une donnée d'un type primitif vers
un autre type primitif.
Cours POO/JAVA
B. NGOM
Conversion implicite /
23
Compatibilité des types
Types numériques
Il est toujours possible de placer un entier de “petite taille”
dans un entier plus grand (par exemple un entier de type int
dans une variable de type long).

De façon générale, il est impossible de faire des affectations


dans l‟autre sens, comme par exemple placer le contenu
Cours POO/JAVA

d‟une variable de type int dans une variable de type byte.

Les types numériques sont donc rangés dans l‟ordre suivant


: byte <
short < int < long < float < double
B. NGOM
Conversion implicite /
24
Compatibilité des types
Cas 1 => Correct

Cas 2 => Erreur de compilation


Cours POO/JAVA

Maintenant, si on avait le contraire, c'est-à-dire une


conversion par
B. NGOM

affectation du type float vers le type int. Dans ce cas, on


aurait eu une erreur de compilation puisque cette
conversion est avec perte d'information.
Conversion implicite /
25
Compatibilité des types
Le type boolean est compatible seulement avec lui-
même. Cela signifie qu‟il est strictement
impossible de placer une valeur de type boolean
dans une variable d‟un type autre que boolean.
Cours POO/JAVA

=> erreur
B. NGOM
Conversion explicite / implicite
26

 La conversion est réalisé via l‟un des 2 mécanismes:


conversion implicite ou conversion explicite.

 Les conversions qu'on vient de voir se font de manière


implicite, automatiquement.

 Conversion implicite:Les conversions automatiques sont possible


seulement lorsque le compilateur sait que la variable s
destination est assez grande.
Exemple:
Cours POO/JAVA

pour réaliser l‟addition, les deux opérandes doivent avoir le


même format. x = 3 + 2.5;
 Conversion explicite:le programmeur indique explicitement
la conversion qu‟il
souhaite réaliser.
Exemple: conversion de 2.5 vers int. En mémoire
x = 5. x = 3 + (int) 2.5;
B. NGOM
Compatibilité des types
28

 On peut placer une valeur de type char dans une variable de


type int (et donc dans une variable d‟un type “plus grand” que int).
 Le type char est compatible avec tous les types numériques
(int, double, etc.);
 Pour les types primitifs (char), on parle de conversion
implicite char < int
Conversions explicites entre types numériques et char:
Exemple : (char) 97 ⇒ ‟a‟
Cours POO/JAVA

(int) ‟+‟ ⇒
43 char a
= „a‟;
a = (char)
B. NGOM

(a+1);
 Cependant, il est impossible de placer une valeur entière
classique dans un char car les autres types entiers peuvent
prendre des valeurs négatives.
Compatibilité des types
29

On peut se servir des caractères comme


entiers :

Exemple:
int trois =
3; char un
Cours POO/JAVA

= ‟1‟;
char
quatre =
(char)
B. NGOM

(trois +
un);

 quatre :
‟4‟.
 un a été
converti à
int dans
Exemple
30
Plan
31
 Introduction
 Variable, valeur constante, conversion en Java
 Opérateurs
 Structure de contrôle
 Manipulation des types primitifs, les tableaux, les chaînes de
caractères,
passage des paramètres
 Notion d‟objets et de classes
 Héritage
 Interface
 Polymorphisme
 Paquetage
Opérateur logique
32

 La valeur de vérité d‟une expression logique est


vrai ou
faux. Une telle valeur est de type booléen
(boolean).

 Pour former des expressions logiques, on


Cours POO/JAVA

dispose d‟opérateurs de comparaison.

 Les principaux opérateurs sont les suivants


B. NGOM
Opérateur arithmétique
33

Les opérateurs
arithmétiques
Cours POO/JAVA
B. NGOM
Opérateurs d'incrémentation et
34
de décrémentation
 L'opération d'incrémentation ( ++ ) est un opérateur
unaire qui ne peut être appliqué qu'à des
variables. Il va modifier la valeur de la variable
sur laquelle il est appliqué, en lui ajoutant 1.

 Il y a également un opérateur de décrémentation


Cours POO/JAVA

( -- ) qui fonctionne comme l'opérateur


d'incrémentation, sauf que son effet de bord
consiste à retirer 1 de la variable sur laquelle il
est appliqué.
B. NGOM
Opérateurs d'incrémentation et
35
de décrémentation
Les deux opérateurs (++ et --) existent sous deux formes.
 la forme suffixe de l'opérateur; celui-ci étant placé après la
variable.
 la forme préfixe, c'est-à-dire qu'on les place avant la
variable.
Cours POO/JAVA
B. NGOM
Opérateurs d'incrémentation et
36
de décrémentation
Les deux opérateurs (++ et --) existent sous deux formes.
 la forme suffixe de l'opérateur; celui-ci étant placé après la
variable.
 la forme préfixe, c'est-à-dire qu'on les place avant la
variable.
Cours POO/JAVA
B. NGOM
Plan
37
 Introduction
 Variable, valeur constante, conversion en Java
 Opérateurs
 Structure de contrôle
 Manipulation des types primitifs, les tableaux, les chaînes de
caractères,
passage des paramètres
 Notion d‟objets et de classes
 Héritage
 Interface
 Polymorphisme
 Paquetage
Structure de contrôle
38

Il existe trois catégories :

 les instructions conditionnelles (if-else ,


switch);

 les instructions répétitives (while, do et for);


Cours POO/JAVA

 les instructions de permettent de faire un saut


un point précis du programme
branchement: depuis
vers autre endroit (Il
un break, continue qui sont utilisés avec
a y boucles
également
les et
return)
B. NGOM
Structure conditionnelle:
39
Syntaxe if
La condition est une expression booléenne et elle
est dite vérifiée si sa valeur est true
Cours POO/JAVA
B. NGOM
Structure conditionnelle:
39
Syntaxe if - else
La condition est une expression booléenne et elle
est dite vérifiée si sa valeur est true
Cours POO/JAVA
B. NGOM
Structure conditionnelle:
39
Syntaxe switch
La condition est une expression booléenne et elle
est dite vérifiée si sa valeur est true
Cours POO/JAVA
B. NGOM
Opérateur conditionnel (plus court)
42

L‟instruction if-else correspondante calcule


exactement la même chose :
Cours POO/JAVA
B. NGOM
Instruction répétitive: While
43

L'instruction while permet de répéter une instruction ou un


bloc de
code tant qu'une condition est vraie.

La condition est une expression booléenne, comme


pour l'instruction if-else.
Cours POO/JAVA
B. NGOM
Instruction répétitive: While
44

Boucle infinie
Lorsqu'on utilise des boucles, il faut faire très attention aux
boucles
infinies.

Comme le nom le suggère, il s'agit de boucles dont le corps


est exécuté un nombre infini de fois. La condition est
Cours POO/JAVA

toujours vérifiée et la boucle ne s'arrête donc jamais de


s'exécuter.
B. NGOM
Syntaxe do - while
45

L'instruction do -while est similaire à l'instruction while sauf pour


ce qui est de l'ordre dans lequel les choses sont exécutées.

Le corps de la boucle est d'abordexécuté,puis la condition


est
évaluée.
Cours POO/JAVA

Le corps de la boucle sera exécuté au moins une fois dans


tous les
cas.
B. NGOM
45
B. NGOM Cours POO/JAVA

Syntaxe For
Instruction continue
47

L'instruction continue, utilisable uniquement dans les boucles,


permet d'arrêter l'exécution de l'itération en cours et de
passer directement à la suivante.

Dans le cas des boucles while et do, on revient directement à


la
vérification de la condition
Cours POO/JAVA
B. NGOM
Instruction continue
48

L'instruction continue, utilisable uniquement dans les boucles,


permet d'arrêter l'exécution de l'itération en cours et de
passer directement à la suivante.

Dans le cas des boucles while et do, on revient directement à


la
vérification de la condition
Cours POO/JAVA
B. NGOM
Instruction break
49

L'instruction break a en fait pour effet de directement


quitter le switch ou la boucle et de poursuivre le programme à
l'instruction suivante.

Voici un exemple de programme qui affiche les entiers de 1 à


5 et qui utilise l'instruction break
Cours POO/JAVA
B. NGOM
Plan
50
 Introduction
 Variable, valeur constante, conversion en
Java
 Opérateurs
 Structure de contrôle
 Manipulation des types les tableaux, les chaînes de
primitifs,
caractères, passage des paramètres
 Notion d‟objets et de
classes
 Héritage
 Interface
 Polymorphisme
 Paquetage
Affichage
51

L‟affichage d‟une valeur (System.out.println)


est relativement simple, comme le montre
l‟exemple suivant :
Cours POO/JAVA
B. NGOM
Affichage
52

System.out.print(expression);
Cette méthode permet d‟afficher la valeur de
l‟expression entre
parenthèses sans passer à la ligne après cet affichage.

System.out.println(expression);
Cette méthode passe au contraire à la ligne après l‟affichage.
Cours POO/JAVA
B. NGOM
Saisie
53

Pour que Java puisse lire ce que vous tapez au clavier, vous
allez
devoir utiliser un objet de type Scanner.

Nous allons utiliser l'entrée standard System.in.

Exemple:
Cours POO/JAVA

import java.util.Scanner;

Scanner sc = new Scanner(System.in);


B. NGOM
Saisie
54

Nous présentons certaines méthodes les plus utiles pour lire


différents types de données à partir du périphérique d'entrée par
défaut (récupérer le type de variable primitif adéquat):

nextInt ()
nextByte ()
nextShort ()
nextLong ()
nextFloat ()
Cours POO/JAVA

nextDouble ()

Exemple:
Scanner
scanner =
new
B. NGOM

Scanner( Sy
stem.in ) )
System.out.
print( "Veuill
ez saisir un
premier
entier : " );
int a =
scanner.next
Int();
Saisie
55

 La méthode nextLine () permet de lire une ligne de texte


jusqu'au
prochain retour à la ligne (récupère une chaîne de
caractère)
Cours POO/JAVA
B. NGOM
Saisie
56

Remarque:
La classe Scanner ne contient pas de méthode nextChar().
Pour extraire un seul caractère du clavier, vous pouvez
utiliser la méthode nextLine(), puis la méthode charAt().

Exemple
System.out.println("Saisissez une lettre :");
Cours POO/JAVA

Scanner sc = new
Scanner(System.in); String str =
sc.nextLine();
char carac = str.charAt(0);
B. NGOM

System.out.println("Vous avez
saisi le caractère : " + carac);
Tableau
57

La création d‟un tableau peut être faite comme suit :

1) Déclaration d'une variable de tableau avec définition explicite de


taille :
 Déclaration de type
int tableau_entiers [] ; // déclaration équivalente à int []
tableau_entiers ;
// tableau_entiers est une variable de type référence vers un tableau
Cours POO/JAVA

contenant
des éléments de type int.

 Allocation mémoire, via new


tableau_entiers = new int[5] ;
B. NGOM

L‟opérateur new renvoie une référence vers un tableau


(une référence est un identifiant unique d‟une structure de données)

NB: Pour les tableaux, la valeur spéciale null représente un


tableau sans aucune valeur (0 pour chaque élément) .
Exemple de déclaration d‟un tableau
58
Cours POO/JAVA
B. NGOM
Tableau
59

2) Déclaration et initialisation d'un tableau avec définition implicite


de taille :

 Initialisation
<type du tableau> <nom du tableau> [] = {<contenu du
Cours POO/JAVA

tableau>};

Exemple:
int tableau_initialise[] = { 12, 34, 786 };
B. NGOM

Dans cette éventualité, Java crée le tableau, calcule sa taille et


l'initialise
avec les valeurs fournies.
Tableau
60

Exemple:
int tableauEntier [] = {0,1,2,3,4,5,6,7,8,9};

double tableauDouble [] =
{0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0};

char tableauCaractere [] = {'a','b','c','d','e','f','g'}; //


Cours POO/JAVA

initialisation du
caractère

String tableauChaine [] = {"chaine1", "chaine2", "chaine3" ,


"chaine4"}; //
B. NGOM

initialisation du String
Tableau
61

Variable locale constante


Un objet ou un tableau « final » peut avoir
ses
champs ou ses éléments modifiés
Cours POO/JAVA
B. NGOM
Tableau multidimensionnel
62

Tableaux multidimensionnels crées comme

double matrice[][] = new double[4][4];

Ce qui revient à
Cours POO/JAVA

 double matrice[][] = new double[4][];


 matrice[0] = new double[4];
 matrice[1] = new double[4];
 matrice[2] = new double[4];
B. NGOM

 matrice[3] = new double[4];


Tableau multidimensionnel
63

Initialisation par défaut de tous les éléments.

Des expressions sont permises dans les initialisations de

tableaux. double m[][] = {


{ 0*0, 1*0, 2*0 },
Cours POO/JAVA

{ 0*1, 1*1, 2*1 },


{ 0*2, 1*2, 2*2 }
};
B. NGOM
Tableau multidimensionnel
64

Voici une manière imagée de visualiser une matrice à n+1


lignes et à p+1
colonnes

Int [][] table = new int [n+1][p+1];


Cours POO/JAVA
B. NGOM
Opérations sur le tableau
65

 On dispose d'une classe utilitaire, Arrays, dans le package java.util,


qui nous propose des méthodes permettant de manipuler les
tableaux.

 Egalement, la classe Arrays offre des méthodes de classe


pour la recherche et le tri d'éléments d'un tableau.

Parmi ces méthodes nous citons:


Cours POO/JAVA

 La méthode equals compare deux tableaux renvoie un booléen true


s'ils ont même longueur et contenu,
 La méthode binarySearch effectue la recherche binaire d'une valeur
dans un tableau,
 La méthode fill remplit un tableau avec la valeur donnée,
B. NGOM

 La méthode sort trie un tableau dans l'ordre croissant de ses


éléments.
Opérations sur le tableau
66

Il existe un attribut général de la classe des tableaux, qui


contient la taille d'un tableau quelque soit son type, c'est
l'attribut length.

Exemple :
int [ ] table1 = {17,-9,4,3,57};
int taille;
taille = table1.length; // taille = 5
Cours POO/JAVA

NB:
1) Avec les tableaux, c'est la propriété .length, (array.length)
 Si tu essaies la méthode .length(), ça ne compilera pas.

2) Avec les String, c'est la méthode .length(), (string.length())


B. NGOM

 Si tu essaies la propriété .length, ça ne compilera pas.


Exemple
67

public class Test {


public static void main(String[] args)
{
// Here array is the array name of
int type int[] array = new int[4];
System.out.println("The size of the
array is " + array.length);
Cours POO/JAVA

// Here str is a string


object String str =
“TestExample";
System.out.println("The
B. NGOM

size of the String is " +


str.length());

// Here str is an array


String[] str = {"Hello", "Every",
"Person" };
System.out.println(str[0].length());
}
Utilisation d'un tableau comme
un Object
68

int [] tab1 = {0, 1, 2, 3, 4} ;


int [] tab2 = {0, 1, 2, 3, 4} ;

 La méthode toString() de tab1 nous retourne l'indigeste


chaîne de caractères suivante :
Exemple tab1.toString() ->
: [I@18d107f
 La comparaison de ces deux tableaux par la méthode
equals()
nous retourne
Exemple un désespérant
tab1.equals(tab2) -> :
: false
Copie de tableaux
69

 La copie d'un tableau dans l'autre peut toujours se faire par


itération sur les éléments du premier tableau, et recopie dans
le second. La méthode à invoquer est System.arraycopy, dont
voici la signature.

public static void arraycopy(Object src, int


src_pos, Object dest, int dest_pos, int
length)
Remarque:
1) Si un dépassement de capacité a lieu, une exception est
générée.
2) Rappelons qu'une fois un tableau créé, il n'est plus possible
d'en changer la taille. L'utilisation de System.arraycopy ne
déroge pas à cette règle.
Accès à un tableau
70

Accès à un élément avec tab[indice]

Exemple : tab[i] = tab[j] * 2;

Attention : les éléments sont indexés à partir de 0


⇒ un tableau possède les éléments allant de 0 à tab.length -
1
Cours POO/JAVA

Un accès en dehors des bornes du tableau provoque une


erreur à l‟exécution (ArrayOutOfBoundsException)
B. NGOM
Exemple d'accès à un tableau
71
Cours POO/JAVA
B. NGOM
Exemple de référencement
72
Cours POO/JAVA
B. NGOM
Chaîne de caractères
73

Comme pour les tableaux, il n‟existe pas de variable de type


String en
Java !

La classe String est une classe fondamentale du langage


Java, puisque c'est elle qui permet de gérer les chaînes
de caractères.
Cours POO/JAVA

Elle déclare une variable référençant une zone mémoire


typée avec le type String
Exemple : String s1 = String s2 =
"Coucou"; s1;
B. NGOM
Chaîne de caractères
74

Construction d'un objet String de deux façons


String s1 = "Coucou"; // création implicite
String s2 = new String("Bonjour le monde !") ; //création
explicite

Concaténation de deux String


1ère méthode
Cours POO/JAVA

String s1 =
"Bonjour" ; String
s2 = “à tous!" ;
String s3 = s1 + "
B. NGOM

" + s2 ;
 2ème méthode
=> à l'aide de la
méthode concat :

String
concat(String)
Chaîne de caractères
75

D‟autre opérations

Longueur
 intlength(): La méthode length() renvoie la
longueur ( nombre de caractères) de la chaîne.

Comparaison
 intcompareTo(String anotherString): Compare
Cours POO/JAVA

une chaîne de caractère à un autre objet.


Renvoie une valeur <0 ==0 ou > 0.

 boolean equals(Object anObject): Compare la chaîne a un


objet et retourne true en cas d‟égalité et false sinon
B. NGOM

 boolean startsWith(String), endsWith():


renvoient true si la chaîne
commence ou se termine par la chaîne passée en paramètre
Chaîne de caractères
76

Caractère et sous-chaînes
 char charAt(int): Retourne le caractère à l‟indice spécifié en
paramètre.
 String substring(int): Sous-chaîne depuis l‟indice jusqu‟à la fin.

Conversions
 String toLowerCase(): Retourne une chaîne égale à la chaîne
convertie en minuscules.
Cours POO/JAVA

 String toUpperCase(): Retourne une chaîne égale à la


chaîne convertie en majuscules.

Recherche:
 intindexOf(int): Retourne l‟indice de la première
B. NGOM

occurrence du
caractère.
Conversions vers les types primitifs
77

 Les classes Byte, Short, Integer et Long possèdent une


méthode X.parseX(String) qui permet de convertir une chaîne de
caractères en un entier en Byte, Short, Interger …

Exemple :
int s = Integer.parseInt("111"); //
returns 111 int s = Integer.parseInt("-
121"); // returns -121
Cours POO/JAVA

 Les classes Float et Double


possèdent une méthode
X.parseX(String) qui
permet de convertir une chaîne de
caractères en un flottant.
B. NGOM

NB: Si cette conversion n'est pas possible, une exception est


levée: NumberFormatException
Les Chaînes modifiables « StringBuffer »
78

 Elles sont modifiables par insertion, ajouts, conversions, …

On obtient une « StringBuffer » avec ses


constructeurs StringBuffer mCM = new
StringBuffer(int length); StringBuffer mCM = new
StringBuffer(String str);

 On peut les transformer en chaînes normales


String
String s = mCM.toString(); => la méthode toString() renvoie le
nom de la classe de l'objet concerné suivi de l'adresse de cet
objet

 On peut leur ajouter n‟importe (surcharge) quoi


mCM.append(...); // String, int, long, float, double, boolean,
char
Exemple: append()
79

StringBuffer sbf = new


StringBuffer("Bonjour - ");
System.out.println("string buffer = "
+ sbf);

String strvalue = " à tous";

// Here it appends the Object value


sbf.append(strvalue);

System.out.println("After appending
result is = " + sbf);
}

 Resultat:
string buffer = Bonjour
After appending result is = Bonjour - à
tous
Passage de paramètres
80

Lors des appels de méthode, les arguments sont toujours passés


par
valeur

 Dans le cas des types primitifs, c'est la valeur de l'argument


qui est recopiée dans le paramètre de la méthode
Cours POO/JAVA

 Dans le cas des types « objet », c'est la valeur de la


variable, (la référence à l'objet) qui est transmise à la
méthode
B. NGOM
Passage de paramètre:
Type primitif
81

Dans le cas des types primitifs, c'est la valeur de l'argument qui


est
recopiée dans le paramètre de la méthode

Les modifications sur le paramètre de la méthode


sont sans effet sur l'argument.
Cours POO/JAVA
B. NGOM
Passage de paramètre:
Type référence
82

 Dans le cas des types « objet », c'est la valeur de la


variable, (la
référence à l'objet) qui est transmise à la méthode.

 Les modifications effectuées en suivant cette


référence (e.g. modification d'un champ de l'objet) sont
répercutés dans la mé moire et sont donc visibles sur
l'argument.
Cours POO/JAVA
B. NGOM
Type référence et valeur nulle
83

Par défaut, une référencevaut une valeur


particulière,
nulle
Cours POO/JAVA
B. NGOM
Allocation mémoire
84

Pour qu'une variable objet prenne une autre valeur que null, il
faut être
capable d'y affecter une référence.

 Elle peut être retournée par l'opérateur d'allocation new.


 Cet opérateur a besoin de connaître la
taille de l'objet
new Box(); // j'ai qu'il doit 1 int (field)
besoin de stocker
Cours POO/JAVA

réserver en mémoire.
new int[10]; // stocker 10 int + la taille du tableau

La zone mémoire allouée doit être initialisée


(affectation des valeurs)
new Pixel(1,3); // utilise un « constructeur »
B. NGOM

 Ce que retourne l'opérateur new est la


référence qui permet
d'accéder à l'objet alloué en mémoire
Désallocation mémoire
85

La désallocation mémoire n‟est pas gérée par


le programmeur, mais par un Garbage Collector (GC).

En fait, la restitution de la mémoire inutilisée est prise en


charge automatiquement par le récupérateur de mémoire
(garbage collector). Ce GC aussi appelé ramasse-miettes.

Il n'existe pas d'instruction delete comme en C++.


Cours POO/JAVA

En Java, les destructeurs appelés finaliseurs


(finalizers), sont automatiquement invoqués par le
garbage collector.

Pour créer un finaliseur, il faut redéfinir la méthode


B. NGOM

finalize() héritée de
la classe Object.
Désallocation mémoire
86

Les objets qui ne sont plus référencés peuvent être «


récupérés » par le GC, pour « recycler » l'espace mémoire
qu'ils occupent.

Un même objet peut être référencé par plusieurs variables.

Il faut qu'aucune variable ne référence plus un


Cours POO/JAVA

objet pour qu'il soit réclamé.

Les variables cessent de référencer un objet


 Quand on leur affecte une autre valeur, ou null
B. NGOM

 Quand on quitte le bloc où elles ont été définies: elles


meurent et disparaissent...
Plan
87

 Introduction
 Variable, valeur constante, conversion en Java
 Opérateurs
 Structure de contrôle
 Manipulation des types primitifs, les tableaux, les chaînes de
caractères, passage des paramètres
 Notion d‟objets et de classes
 Héritage
 Interface
 Polymorphisme
 Paquetage
POO : Notion de propriétés et de
méthodes
88

Les propriétés sont les caractéristiques(données) d’un objets

Pour un être humain,


 Taille
 Poids
 Couleur
 Nom
 Prenom
 …

Les methodes sont des actions qu’un objet peut effectuer

Pour un etre humain :


 Courir
 Sauter
 Nager
 Marcher
 …
POO : Notion de propriétés et de
méthodes
88

Les propriétés sont les caractéristiques(données) d’un objets


Pour un être humain,
 Taille
 Poids
 Couleur
 Nom
 Prenom
 …
Les propriétés sont des variables.
Les methodes sont des actions qu’un objet peut effectuer

Pour un etre humain :


 Courir
 Sauter
 Nager
 Marcher
 …
Les methode sont des fonctions à l’interieur de la classe.
POO : Notion de propriétés et de
méthodes
89

Les propriétés sont des Les methode sont des


variables. fonctions.

 int taille = 156;  Void courir(){…}


 String nom = ‘modou’;  Void marcher(){…}
 Etc.  …
POO : exemple carnet d’adresse
89

Quelles seraient les propriétés Quelles seraient les methodes


POO : exemple carnet d’adresse
89

Quelles seraient les propriétés Quelles seraient les methodes


 Nom
 Prenom
 Telephone
 Adresse
 …
POO : exemple carnet d’adresse
89

Quelles seraient les propriétés Quelles seraient les methodes


 Nom  Ajouter()
 Prenom  Modifier()
 Telephone  Supprimer()
 Adresse  Appeler()
 …  …
POO : Classe et Objet
89

 Objet et classe:
 Classe = définitions pour des données (variables)
+ fonctions (méthodes) agissant sur ces données
 Objet = élément d’une classe (instance) avec un
état
 (une méthode ou une variable peut être de
classe = commune à la classe ou d’instance =
dépendant de l’instance)

Class Objet
 Definition  Une representation

 Un modele décrivant les d’une classe


proprietes et les  Appartient au monde

methodes réel
 Le plan d’un objet  Appelé Instance d’une

classe
POO : exemple de classe d’objet
89

Objet Classe
POO : exemple de classe d’objet
89

Classe

Objet Classe

Objet
POO : exemple de classe d’objet
89
POO : exemple de classe d’objet
89
POO : exemple de classe d’objet
89
POO : Encapsulation
89

Un objet renferme ses propriétés et ses méthodes


POO : Avantage de l’Encapsulation
89

Programme : Les données d’un cercle sont le


rayon et une couleur.
Le code fournit en résultat : le diametre, une
aire, et une circonference

Les donnes du
Mes Calculs Les résultats
cercle
POO : Avantage de l’Encapsulation
89

Programme : Les données d’un cercle sont le


rayon et une couleur.
Le code fournit en résultat : le diamètre, une
aire, et une circonférence

Les donnes du
Mes Calculs Les résultats
cercle

Rayon en cm Air : Pi * R2 Air en inch


couleur Circonf : 2Pi*R Circonf en inch
Diam : 2*R Diam en inch
POO : Avantage de l’Encapsulation
89

Programme : Les données d’un cercle sont le


rayon et une couleur.
Le code fournit en résultat : le diamètre, une
aire, et une circonférence

Les donnes du
Mes Calculs Les résultats
cercle

Rayon en cm Air : Pi * R2 Air en inch


couleur Circonf : 2Pi*R Circonf en inch
Diam : 2*R Diam en inch
POO : Avantage de l’Encapsulation
89

Programme : Les données d’un cercle sont le


rayon et une couleur.
Le code fournit en résultat : le diametre, une
aire, et une circonference
POO : Accessibilité de classe
89

class MyClass
• La classe sera accessible depuis toutes les
classes du même paquetage qu'elle (on
parle quelque fois de visibilité de
paquetage)
public class MyClass
• La classe sera accessible de n'importe où
(pourvu qu'on indique son nom de
paquetage complet ou qu'on utilise la
directive import)
• Cette notion d'accessibilité sert à définir
des « composants » de plus grande
granularité que les classes,
• Permet de limiter l'accès
• Peut éviter des conflits de noms
POO : Accessibilité de membre
89

 Tous les membres ont une accessibilité qui


est spécifiée à la déclaration par un «
modificateur »
 De manière complémentaire à celui de la
classe, il permet de déterminer qui, parmi
ceux qui ont accès à la classe A, ont accès à
ce membre
 private : accessible uniquement depuis
l'intérieur de la classe A
 Par défaut (pas de modificateur) : accessible
depuis toutes les classes qui sont dans le
même paquetage que A
 protected : accessible depuis toutes les classes
qui sont dans le même paquetage que A, et
également depuis celles qui ne sont pas dans le
même paquetage mais qui héritent de la classe
A
POO : Acces aux membres
89

 Avec le point « . » sur une référence à un


objet:
 p.x, p0.sameAs(p1);

 Le compilateur regarde le type déclaré de la


variable (ici p ou p0) et vérifie que le
membre (ici x ou sameAs) existe.
 Le compilateur vérifie également les droits
d'accessibilité
 Un champ et une méthode peuvent avoir le
même nom
 this représente l'instance courante
POO : Acces aux membres
89

 Avec le point « . » sur une référence à un


objet:
 p.x, p0.sameAs(p1);

 Le compilateur regarde le type déclaré de la


variable (ici p ou p0) et vérifie que le
membre (ici x ou sameAs) existe.
 Le compilateur vérifie également les droits
d'accessibilité
 Un champ et une méthode peuvent avoir le
même nom
 this représente l'instance courante
POO : Creation d’instances
89

 Une instance, ou un objet, d'une classe est


créée en 3 temps
 Pixel p1 = new Pixel(1,3);

 new est l'opérateur d'instanciation: comme


il est suivi du nom de la classe, il sait
quelle classe doit être instanciée
 Il initialise chaque champ à sa valeur par défaut
 Il peut exécuter un bloc d'initialisation éventuel
 Il retournera la référence de l'objet ainsi créé

 Pixel est le nom de la classe

 (1,3) permet de trouver une fonction d'initialisation


particulière dans la classe, qu'on appelle un
constructeur
POO : Constructeur
89

 Un constructeur est une méthode particulière,


qui sert à initialiser un objet une fois que la
mémoire est réservée par new
 Permet de garantir des invariants sur un objet

sont conservés, par exemple pour initialiser


un objet avec des valeurs particulières
 Par exemple, on veut qu'un Pixel soit en (1,1)
 Le faire avec une méthode « normale » ne
garantirait pas qu'on accède pas à l'état de
l'objet avant son initialisation
 Le constructeur a le même nom que la classe
et pas de type de retour
 Ps : En l'absence de constructeur
explicitement défini, le compilateur
ajoute un constructeur public sans
paramètre
POO : appel à un autre Constructeur
89

 Plusieurs constructeurs peuvent cohabiter dans la


même classe
 Ils ont typiquement des rôles différents et offrent

des « services » complémentaires à l'utilisateur,


par exemple:
 new Pixel(1,3) crée un pixel avec les coordonnées
explicites
 new Pixel() crée un pixel avec les coordonnées à
l'origine
 Quand c'est
 new possible,
Pixel(1) crée un pixel sur la diagonale (x == y), etc.
il est préférable qu'il
y en ait un « le plus
général » et que les
autres y fassent appel
 Plutôt que de dupliquer le
code dans plusieurs
constrcuteurs
 L'appel à un autre
constructeur de la même
classe se fait par this(...)
POO : Champ constant
89

 Comme pour les variables locales, il est possible de


déclarer un champ avec le modificateur final.
 Cela signifie qu'il doit avoir une
affectation unique
 Le compilateur vérifie que il a
bien été initialisé, et ce quelque
soit le constructeur mais
également qu'il n'a été affecté
qu'une seule fois

Vous aimerez peut-être aussi