Vous êtes sur la page 1sur 89

Programmation Orientée Objet et Java

Les fondamentaux du langage


Yousef EL Mourabit

GI2-EST Beni Mellal

2021/2022
Introduction à Java
● Java est un pur langage orienté objet qui permet le
développement d’applications complètes.
● Java est portable ! Java Virtual Machine (JVM) et byte code
● Cette portabilité est possible grâce à une normalisation indépendante
de la plateforme :
● Exemple : En java un entier occupe toujours 4 octets alors qu’en C ou C++ ça peut
occuper 2 ou 4 selon les plateformes.
● write once, run anywhere
● La richesse du langage Java tient aussi à sa bibliothèque de classes
(API : Application Programming Interface) qui permet de traiter
des applications très diverses (interfaces graphiques, chaînes de
caractères, images, sons, mathématiques, etc.).

!2 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


JDK JVM JRE
● JDK JVM JRE
JVM (Java Virtual Machine) est une machine abstraite qui permet à votre ordinateur d’exécuter un programme

Java. Lorsque vous exécutez le programme Java, le compilateur Java compile d'abord votre code Java(.java)

JRE
en (Java Runtime
Bytecode (.class).Environment) est un progiciel
Ensuite, la machine virtuelle qui
Javafournit des bibliothèques
convertit le Bytecode endecode
classes Java,natif
machine ainsi que JVM

(Java Virtual Machine), ainsi que d'autres composants permettant d'exécuter des applications écrites en

programmation Java. Si vous devez exécuter des programmes Java sans les développer, JRE est ce dont
JDK avez
(Javabesoin.
Development Kit) est un kit de développement logiciel permettant de développer des applications
vous
en Java. Lorsque vous téléchargez JDK, JRE est également téléchargé et vous n'avez pas besoin de le

télécharger séparément. En plus de JRE, JDK contient également plusieurs outils de développement

(compilateurs, JavaDoc, Java Debugger, etc.).

!3
JDK JVM JRE

!4 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Exécution d’un programme Java

!5 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Compilation/Exécution

!6 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Versions - Java
● Versions : 1.01, 1.02 en 1996. 1.1 en 1998 et 1.2 en 1999 (Java 2).
1.3 en 2000, 1.4 en 2002 et 5.0 en 2004 (toujours appelé Java 2).
● Ainsi parle-t-on du J2SE 1.4 (Java 2 Standard Edition 1.4) basée sur
le
JDK 1.4 (Java Development Kit 1.4), plus récemment du J2SE5.0
(JDK 5.0) ou encore de Java 5. En revanche, depuis la version 6
s’intitulant JSE 6 (le 2 a disparu !), ou plus simplement Java 6.
● Actuellement, Java 13 est lancé.

!7 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Hello Word en Java

!8 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


La fonction « main »
● La fonction main est la fonction principale. Elle doit être:
public, static.
● public : pour qu’elle puisse être exécutée par la machine virtuelle
java (JVM)
● static : pour que l’exécution puisse avoir lieu avant même la création
d’une instance de la classe.
● Le tableau de chaines de caractères passé en argument
correspond aux arguments de la lignes de commande.
Déclarations légales
pour la fonction main

!9 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Les variables Java

• Trois types de variables:


• Variables locales
• Variables d’instance
• Variables statiques

!10 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Catégories de variables

!11 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


!12
Types de données

boolean

!13 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Plage des valeurs des types de données

!14 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Les chaines de caractères

!15 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


La class Scanner
import java.util.Scanner;

Exemple 1 :
Scanner sc = new Scanner(system.in);
System.out.println("Veuillez saisir un mot :");
String str = sc.nextLine();

Exemple 2 :
canner sc = new Scanner(System.in);
System.out.println("Veuillez saisir un nombre :");
int str = sc.nextInt();

!16
Transtypage

!17 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Transtypage
● Le programmeur peut forcer la conversion d’une expression quelconque
dans un type de son choix, à l’aide d’un opérateur un peu particulier
nommé cast.
● Si, par exemple, n et p sont des variables de type int, l’expression :
(double) ( n/p ) aura comme valeur celle de l’expression entière n/p
convertie en double.
● En Java, toutes les conversions d’un type numérique (ou caractère) vers
un autre type numérique (ou caractère) sont réalisables par cast et ne
conduisent jamais à une erreur d’exécution.
● On pourra forcer la conversion d’un objet d’une classe de base en un
objet d’une classe dérivée (la conversion inverse étant légale de façon
implicite)

!18 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Opérateurs arithmétique

!19 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Opérateurs d’incrémentation en Java

!20 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Opérateurs d’incrémentation en Java

!21 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Opérateurs logiques en Java

!22 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Opérateurs logiques en Java

!23 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Opérateur ternaire

!24 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Les commentaires
● Trois types :
● Commentaire sur une ligne
● Commentaire multi lignes
● Commentaire de documentation

!25 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Les tableaux

!26 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Passer un tableau comme paramètre d’une fonction

!27 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Les tableaux multi dimensionnels

!28 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Les tableaux multi dimensionnels

!29 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Exemple: addition de deux matrices

!30 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Les tableaux et référence à « null »

!31 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Les structures de contrôle:
if else

!32 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Les structures de contrôle:
if else if else if … else

!33 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Les structures de contrôle
structures imbriquées

!34 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Les structures de contrôle:
switch case

!35 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Les structures de contrôle:
switch case

!36 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Les structures de contrôle:
imbrication des switch case

!37 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Les boucles
● Trois types de boucles :
● La boucle « while »
● La boucle « do while »
● La boucle « for »

!38 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


La boucle « for »

!39 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


La boucle « for »

!40 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Les boucles « while » et « do while »

!41 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Les boucles « while » et « do while »

!42 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


« Break »

!43 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


« Break »

!44 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


« Continue »

!45 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Classes et objets
Une classe est un plan à partir duquel les objets peuvent être crées.
Il s’agit d’un concept abstrait caractérisé par des propriétés (attributs et les méthodes)
Une instance est une concrétisation d’un concept abstrait.

!46 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Classes et objets

!47 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Déclaration de classe
class Rectangle {
private int largeur;
private int longueur; Attributs précédés de leur
type et leur portée
public int surface() {
return largeur*longueur; méthode
}

!48 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Les classes et les objets

!49 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Les classes et les objets

!50 Java-les fondamentaux (Yousef EL Mourabit /


v1.1)
Les classes et les objets

!51 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Les classes et les objets

!52 Java-les fondamentaux (Yousef EL Mourabit /


v1.1)
Classe avec une fonction « main »

!53 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Structuration

!54 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Les constructeurs
● Pour instancier une classe et donc créer un objet à partir de cette classe
on utilise l’opérateur new qui appelle une méthode spéciale de la classe
: le constructeur.
● Le rôle du constructeur est la création de l’objet avec une possibilité de
personnaliser l’initialisation des données membres de la classe.
● Il se caractérise par :
● Son nom qui doit être conforme au nom de la classe dans laquelle il est
défini.
● L’absence de type de retour même void n’est pas autorisé.
● Un constructeur peut avoir des arguments.
● La définition d’un constructeur n’est pas obligatoire lorsqu’il n’est pas
nécessaire.
● Si un constructeur avec paramètre est défini, le compilateur ne fournit
plus le constructeur par défaut.

!55 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Les constructeurs

new Foo();

new Foo ("abc" , 12);

!56 Java-les fondamentaux (Yousef EL Mourabit /


v1.1)
Les constructeurs

!57 Java-les fondamentaux (Yousef EL Mourabit /


v1.1)
Le mot clé « this »

!58 Java-les fondamentaux (Yousef EL Mourabit /


v1.1)
Le mot clé « this »

!59 Java-les fondamentaux (Yousef EL Mourabit /


v1.1)
Le ramassse-miettes : « garbage collector »
● Quand Java rencontre « new », on alloue un emplacement mémoire pour
l’objet et l’on initialise (implicitement, explicitement, par le
constructeur).
● En revanche, il n’existe aucun opérateur permettant de détruire un objet
dont on n’aurait plus besoin.
● Java dispose d’un mécanisme de gestion automatique de la mémoire connu
sous le nom de ramassse-miettes.
● À tout instant, on connaît le nombre de références à un objet donné
● Lorsqu’il n’existe plus aucune référence sur un objet, ce dernier devient
candidat
au ramasse-miettes.
● Avant qu’un objet soit soumis au ramasse-miettes, Java appelle la méthode
finalize de sa classe. En théorie, on pourrait se fonder sur cet appel pour
libérer des ressources qui ne le seraient pas automatiquement.

!60 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Surcharge (surdéfinition) de méthodes
● La surcharge d'une méthode permet de définir plusieurs fois une
même méthode avec des arguments différents.
● Le compilateur choisi la méthode qui doit être appelée en fonction
du nombre et du type des arguments.
● La signature d'une méthode comprend le nom de la classe, le nom
de la méthode, le nombre et les types des paramètres.
● Il est possible de donner le même nom à deux méthodes différentes
à condition que les signatures de ces deux méthodes soient
différentes.

!61 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Surcharge de méthodes

!62 Java-les fondamentaux (Yousef EL Mourabit /


v1.1)
Surcharge de méthodes
class Point {
public Point (int abs, int ord) { // constructeur
x = abs ; y = ord ;
}
public void deplace (int dx, int dy) { // deplace (int, int)
x += dx ; y += dy ;
}
public void deplace (int dx) { // deplace (int)
x += dx ;
}
public void deplace (short dx) { // deplace (short)
x += dx ;
}
private int x, y ;
}

!63 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Surcharge de méthodes

!64 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Surcharge de méthodes : cas d’ambiguité

!65 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Surcharge de méthodes:
constructeur par copie
● Une méthode peut posséder des arguments de type classe. Il est
possible de (sur)définir un constructeur de la classe Point, de façon qu’il
construise un point dont les coordonnées seront identiques à celle d’un
autre point fourni en argument.
Il suffit de procéder ainsi :
public Point (Point a) { // constructeur par copie d’un autre point
x = a.x ; y = a.y ;
}
.....
Point a = new Point (1, 3) ; // construction usuelle
Point d = new Point (a) ; // appel du constructeur par copie d’un
point

!66 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Surcharge de méthodes et droits d’accès
● Une méthode privée ou publique peut être surdéfinie
● Cependant, les méthodes privées ne sont pas accessibles en dehors de la
classe.
● Dans ces conditions, suivant son emplacement, un même appel peut
conduire à l’appel d’une méthode différente.

Java-les fondamentaux (Yousef EL Mourabit /


!67 v1.1)
Le mot clé « static »
● Est utilisé principalement
pour la gestion de mémoire.
● Il peut être appliqué à des
variables, des blocs, des
classes internes ou à des
méthodes.

!68 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Propriété et méthodes statiques

!69 Java-les fondamentaux (Yousef EL Mourabit /


v1.1)
Propriétés et méthodes statiques

!70 Java-les fondamentaux (Yousef EL Mourabit /


v1.1)
Propriétés et méthodes statiques

!71 Java-les fondamentaux (Yousef EL Mourabit /


v1.1)
Conventions de nommage
● les identificateurs valides = toutes suites de caractères qui sont soit
des chiffres, des lettres, le signe $ ou le signe _. L’identificateur ne
doit absolument pas commencer par un chiffre.

!72 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Conventions de nommage: mots réservés

!73 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Conventions de nommage
● Les classes et les interfaces : doivent commencer par une lettre Majuscule. Si un mot est
composé de deux ou plus de mots, alors les mots qui suivent doivent commencer aussi par des
lettres Maj.
Exemple : Dog, Account, PrintWriter
● Pour les interfaces, les noms doivent être des adjectives :
Exemple : Runnable, Serializable
● Pour les méthodes et les variables : les noms doivent être conformes au CamelCase format.
Exemple : getBalance, doCalculation, buttonWidth, accountBalance
● Les constantes sont marquées par les mots clés final et static et doivent être écrites en Maj.
L’association de plusieurs mots se fait par le signe « _ ».
Exemple : MIN_HEIGHT
● Les package sont nommés en Minuscule de façon hiérarchique:
Exemple : com.eclipse.me

!74 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Règles de déclaration du fichier source
● Dans un fichier source, il ne peut y avoir qu’une seule classe public.
● Si le fichier source contient une classe public alors son nom doit
être conforme au nom de la classe: public class Test {} ➔ Test.java
● Si la classe fait partie d’un package alors la première ligne du code
et avant tout « import » doit être la déclaration du package.
● Un fichier source peut avoir plusieurs classes non public
● Si toutes les classes d’un fichier source sont non public alors on est
libre de nommer le fichier source.

!75 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Les droits d’accès
Les membres déclarés avec les modificateurs :
● Private : sont accessibles uniquement au sein de la classe dans laquelle ils
sont déclarés
● Protected : sont accessibles uniquement aux classes d’un package et à ses
classes filles.
● Public : sont accessibles de partout et sans restriction.
● Les membres déclarés sans modificateur d’accès ont une portée d’accès au
niveau du package (default access).

!76 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Les droits d’accès : accès aux méthodes
package cert;
public class Roo {
private String doRooThings() {
// imagine the fun code that goes here, but only the Roo class
knows
return "fun";
}
}

!77 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Les droits d’accès aux attributs et aux méthodes

!78 Java-les fondamentaux (Yousef EL Mourabit /


v1.1)
Les paquetages « package »
● La notion de paquetage (package en anglais) s’apparente à la notion de bibliothèque de
programmes.
● Plusieurs classes sont regroupées logiquement dans un même paquetage (un même
répertoire).
● L’ensemble des paquetages peut être hiérarchisé sur plusieurs niveaux en insérant les
paquetages dans des sous-paquetages (sous-répertoires du répertoire du paquetage
initial).
● Toute la hiérarchie des paquetages peut être réunie dans un seul fichier
(d’extension .zip ou .jar).
● L’instruction package < nom_de_package > comme première instruction d’un
programme Java indique que toutes les classes du programme (du fichier) sont insérées
dans le paquetage mentionné.
● Pour référencer une classe d’un paquetage, il suffit de l’indiquer à l’aide d’une
instruction import comme indiqué sur l’exemple ci-dessous où le programme importe
(utilise) la classe classe1 de paquetage1.

!79 Java-les fondamentaux (Yousef EL Mourabit /


v1.1)
Les paquetages « package »
● La bibliothèque standard des classes Java est hiérarchisée en
paquetage comme suit (seule une partie de la hiérarchie est
mentionnée) :

Java-les fondamentaux (Yousef EL Mourabit /


!80
v1.1)
Les « import »
Le mot clé import
indique au compilateur
que l’on va utiliser des
classes appartenant au
package spécifié juste
après ce mot clé.

!81 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


L’importation des membres statiques

Avec Java 5

!82 Java-les fondamentaux (Yousef EL Mourabit /


v1.1)
Quelques règles avec les « static import »
● Nous devons écrire « import static » et non « static import »
● Il faut faire attention aux ambiguïtés qui peuvent être causées par
les « static import » et causeront par conséquent des erreurs de
compilation : imaginer que vous importez la constante statique
« MAX_VALUE » des classes Integer et Long. Java ne reconnaitra
laquelle des constantes est à invoquer.
● Vous pouvez effectuer les static import sur les références d’objets
qui sont statiques, les constantes et les méthodes statiques.

!83 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Les classes internes
● Une classe est dite interne lorsque sa définition est située à
l’intérieur de la définition d’une autre classe.

!84 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Les classes internes
● D’habitude, la définition d’une classe interne I est utilisable au sein de
la définition de la classe de base E, pour instancier quand on le souhaite
un ou plusieurs objets de ce type.
● Il est très important de savoir que la définition de la classe I n’introduit
pas d’office de membre de type I dans E

!85 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Les classes internes
● Bien entendu, on peut aussi trouver une ou plusieurs références à
des objets de type I au sein de la classe E

!86 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Lien entre objet interne et objet externe
● Un objet d’une classe interne est toujours associé, au moment de
son instanciation, à un objet d’un classe externe dont on dit qu’il
lui a donné naissance.
● Un objet d’une classe interne a toujours accès aux champs et
méthodes (même privés) de l’objet externe lui ayant donné
naissance
● Un objet de classe externe a toujours accès aux champs et
méthodes (même privés) d’un objet d’une classe interne auquel il
a donné naissance.

!87 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Instanciation d’un objet d’une classe interne
● Il faut rattacher un objet d’une classe interne à un objet de sa
classe englobante, moyennant l’utilisation d’une syntaxe
particulière de new.

!88 Java-les fondamentaux (Yousef EL Mourabit / v1.1)


Des Questions ??

!89 Java-les fondamentaux (Yousef EL Mourabit / v1.1)

Vous aimerez peut-être aussi