Vous êtes sur la page 1sur 36

POO/JAVA

UML_GI2 S. KOULALI 1
Philosophie Objet
Pourquoi étudier la programmation objet (PO) ?
 Simuler une réalité (modèle) avec différents niveau d'abstraction.
 Pour concevoir et réaliser des logiciels complexes avec le minimum d'erreurs.
 Favoriser le travail collaboratif sur des projets d'envergure.
 Approche Client/Fournisseur et sécurité accrue.

UML_GI2 S. KOULALI 2
Domaines d'utilisation
Java est utilisé dans divers domaines tels que :
 Les smartphone tournant sous Android supportent des applications écrites en
JAVA.
 Big Data & recherche scientifique : Le framework Hadoop est entièrement
écrit en JAVA.
 Les Systèmes d'information des entreprises pour la partie Facturation, Stock, .
. ..
 La finance.
. . .

UML_GI2 S. KOULALI 3
UML_GI2 S. KOULALI 4
Java et les autres langages de
programmation

UML_GI2 S. KOULALI 5
Outils pour Développement JAVA
Java Development Kit Standard Edition (JDK SE)
 http ://www.oracle.com/technetwork/java/javase/downloads/index.html

Éditeur de texte
 Notepad++, bloc note, . . .
 Gedit, vim, emacs, . . .
 ,...

Environnement de Développement Intégré (EDI) (IDE :))


 Eclipse, Netbeans
 Complétion de code, indication des erreurs, . . .

UML_GI2 S. KOULALI 6
Ressources Bibliographique

https ://docs.oracle.com/javase/8/docs/api/

UML_GI2 S. KOULALI 7
Java : le choix d'une architecture
dynamique
Java est un langage moderne qui puise son inspiration de sources
diverses :
 une syntaxe très proche du C/C++
 une architecture dynamique avec un compilateur et une JVM
 Java évolue régulièrement (nouvelle bibliothèque IHM dans JAVA5, lambda
calcul dans JAVA8. . .)

UML_GI2 S. KOULALI 8
Portabilité
Java est SE-indépendant, il est portable et s'exécute sur tout les SE sans modification du code
source.

UML_GI2 S. KOULALI 9
Caractéristiques

UML_GI2 S. KOULALI 10
Dynamique
Java est dynamique et s'adapte à un environnement évolutif.
Le support de l'allocation dynamique de la mémoire réduit les memory-leaks et booste les
performances.

UML_GI2 S. KOULALI 11
Concurrence
Java supporte la programmation concurrente ou des ensembles d'instructions
peuvent être exécutés en parallèle.

UML_GI2 S. KOULALI 12
Sécurité

Java est un langage sécurisé.


 Le code source est converti en byte-code non lisible.
 L'accès directe à la mémoire n'est pas autorisé.
 Les programmes sont exécuté au sein d'un sandbox pour ne pas compromettre le système hôte.

UML_GI2 S. KOULALI 13
Robustesse

Java est un langage robuste :


 Java dispose d'un mécanisme puissant de gestion de la mémoire.
 Les erreurs sont éléiminés avec vérication du code lors de la compilation et de l'exécution.
 Java prend en charge l'allocation et la libération de la mémoire (pas de pointeurs !).

UML_GI2 S. KOULALI 14
Performances

Java réalise de grandes performances


 Les compilateurs JIT (Just-In-Time) permettent de booster les performances
des programmes JAVA.

UML_GI2 S. KOULALI 15
Programmation distribuée

Java permet de créer des programmes distribués.


Avec Remote Method Invocation (RMI), un programme java peut invoquer une
méthode d'un autre programme via un réseau connectant les deux VMs les
hébergeants.

UML_GI2 S. KOULALI 16
Différentes Plateformes Java
Java Micro Edition : Environnement Java destiné aux applications tournant sur
terminaux mobiles et embarqués (Téléphones portables, personal digital
assistants (PDAs), Imprimantes).
Java Standard Edition : Environnement Java pour le développement et la
déploiement d'applications sur des ordinateurs personnels et serveurs ainsi que
pour les systèmes embarqués avec forte exigences.
Java Entreprise Edition : Environnement Java riche pour le développement
d'application à l'échelle de l'entreprise. Développé avec la contribution d'experts
du monde industriel, commerciale et des organisations open source dans le
cadre du Java Community Process.

UML_GI2 S. KOULALI 17
La Java Virtual Machine (JVM)
JVM : Une spécification d'une machine abstraite qui fournit l'environnement
d'exécution du bytecode JAVA.
Le processeur physique ne peux exécuter que les programmes écrit en langage
binaire adéquat.
L'appellation JVM décrit les éléments suivants :
 Une spécification : Un document fournit par ORACLE décrivant l'implémentation de la JVM.
 Analogie : croquis/produit (UML, . . .)
 Implémentation : un programme qui répond aux exigences mentionnés dans la spécification
de la JVM (Écrit en quel langage de programmation ?)
 Instance d'exécution : Une instance de la JVM est crée et chargée en mémoire par le système
d'exploitation au besoin.

UML_GI2 S. KOULALI 18
Java Runtime Environment (JRE)
JRE représente l'environnement d'exécution du bytecode. Il
implémente la JVM et fournit toutes les bibliothèques de classes
utilisées par les programmes JAVA en cours d'exécution.
La JRE est un composant logiciel qui contient les fonctionnalités
nécessaires à l'exécution d'un programme JAVA.

UML_GI2 S. KOULALI 19
Composants JAVA SE

UML_GI2 S. KOULALI 20
Le Java Development Kit (JDK)
Le Java Development Kit (JDK) regroupe les outils pour compiler,
documenter et packager les programmes JAVA.
 La machine virtuelle Java (JRE)
 Le compilateur Java (javac)
 Un générateur de documentation (javadoc)
 Le désassembleur de chier .class (javap).
 L'archiveur pour packager plusieurs chiers (jar)
. . .
JDK = JRE ⊕ Outils de développement.

UML_GI2 S. KOULALI 21
Java SE

UML_GI2 S. KOULALI 22
Composants de la Java SE

UML_GI2 S. KOULALI 23
La machine virtuelle Java (Suite)

UML_GI2 S. KOULALI 24
Le bytecode
Le code source Java

UML_GI2 S. KOULALI 25
Le compilateur et l'interpréteur java
Programme javac.exe

UML_GI2 S. KOULALI 26
Le bytecode
Le bytecode associé

UML_GI2 S. KOULALI 27
Arborescence de la jdk
Le choix du dossier est fournit lors de l'installation.

Dossier Contenu
jdk<version> Répertoire d'installation de la jdk

jdk<version>\bin Contient les exécutables : javac, java, jdb,


jar . . .

jdk<version>\lib Contient des bibliothèques java ( chiers .jar)

jdk<version>\include Contient les chiers d'entête C pour faire in-


teragir code java et code natif

jdk<version>\jre Contient les chiers de la JVM

UML_GI2 S. KOULALI 28
Et l'open source

Le projet OpenJDK http://openjdk.java.net/

Oracle projette de déléguer la gestion de la JAVA SE à une fonction dédiée (A


suivre).

UML_GI2 S. KOULALI 29
Philosophie Objet

UML_GI2 S. KOULALI 30
Une classe, un main
En JAVA, l'unité élémentaire est la classe qui encapsule le code.
Les nom des classes commencent par une majuscule.
Un programme principal constitue le point d'entrée dans un logiciel complexe
avec de plusieurs classes.

UML_GI2 S. KOULALI 31
Une classe, un main : syntaxe
Signature du main :
public static void main(String[] args)
Achage :
System.out.println ("xxxxxxxxxxxxx") ;

UML_GI2 S. KOULALI 32
Compilation/Exécution
Compilation :
 Vérication de la syntaxe, droits d'accès. . .
 Génération du bytecode : MonPremierProgramme.class

1 [ chemin prog java ]>javac MonPremierProgramme . j a v a

Exécution :

1 [ chemin prog java]>java MonPremierProgramme


2 [ chemin prog java]>Bonjour !

UML_GI2 S. KOULALI 33
Philosophie
Décomposer un programme complexe en plusieurs unités (objets) en
respectant lors de leurs conception les principes de :
 Réutilisabilité dans plusieurs programmes . . .
 Sécurité : pour correspondre à la réalité et garantir une utilisation cohérente par d'autres
objets.
 Simplicité : les objets en interaction n'exposent que ce qui est nécessaire.

Ce qu'il faut faire :


 Concevoir un bon découpage & penser à la sécurité.
 Documenter le code.
 Respecter les conventions de codage.

UML_GI2 S. KOULALI 34
Encapsulation(Sécurité)
Nouvelle classe :
Etudiant.java
Construction : deux valeurs
entières pour initialiser le cne
et l'age.
Communication : dénir une
méthode pour observer
chaque donnée.

UML_GI2 S. KOULALI 35
Encapsulation(Suite)
Nouveau Type :)
int i ; Etudiant e ;
Construction d'un objet de type Etudiant ?
1. e = new Etudiant (123456 , 24) ;
Le "." permet d'accéder à l'interface de l'objet :
1. e . getAge ( ) ;

UML_GI2 S. KOULALI 36

Vous aimerez peut-être aussi