Vous êtes sur la page 1sur 13

22/09/2022

Conception Orientée Objet


Langage Java

Ayoub SABRAOUI

SMI – Semestre 5 –

Année Universitaire 2022/2023

Plan

1. Introduction au langage JAVA

2. Bases du langage

3. Classes et objets

4. Héritage

5. Héritage et polymorphisme

6. Les indispensables : package, Javadoc et exception

7. Les collections

1
22/09/2022

Chapitre 01
Introduction au langage JAVA

SMI 5

Année Universitaire 2022/2023

Programmation Orientée Objet


La POO consiste à programmer en utilisant des objets.

Un objet modélise un élément du domaine étudié (exemples : un


compte bancaire, une voiture, un étudiant, etc.).

Un objet est une instance de classe. Une classe est un type


abstrait, un objet est un exemplaire concret de cette classe.

Une classe regroupe des informations et des actions.

Les informations sont stockées sous la forme de champs. Les


champs décrivent l'état d'un objet.

Les actions réalisables sur un objet sont représentées par des


méthodes. Elles expriment ce que les objets peuvent faire, leur
comportement.
4

2
22/09/2022

Programmation Structurée VS POO


Objectifs de la POO
» Faciliter la réutilisation de code, encapsulation et abstraction
» Faciliter de l’évolution du code
» Améliorer la conception et la maintenance des grands systèmes
» Programmation par « composants ». Conception d’un logiciel à la
manière de la fabrication d’une voiture

Programmation Structurée
» Unité logique: le module
» Une zone pour les variables
» Une zone pour les fonctions
» Chaque fonction résout une partie du problème
» Structuration « descendante » du programme 5

Principes POO: programmation par objets

L’unité logique: l’objet

Un objet est défini par:


» un état
» un comportement
» une identité

État: représenté par des attributs (variables) qui stockent des


valeurs

Comportement: défini par des méthodes (procédures) qui


modifient des états

Identité: permet de distinguer un objet d’un autre objet


6

3
22/09/2022

Principes POO

Les objets communiquent entre eux par des messages


Un objet peut recevoir un message qui déclenche
» une méthode qui modifie son état
et / ou
» Une méthode qui envoie un message à un autre objet

Principes POO: notion de classe

Les objets qui ont les mêmes états et les mêmes comportements
sont regroupés: c’est une classe

Les classes servent de «moules» pour la création des objets


Un objet est une instance d’une classe

Un programme OO est constitué de classes qui permettent de


créer des objets qui s’envoient des messages

4
22/09/2022

Principes POO

L’ensemble des interactions entre les objets défini un


algorithme

Les relations entre les classes reflètent la décomposition du


programme

Java
Développé par Sun Microsystems en 1994 par James Gosling et Patrick
Naughton, employés de Sun Microsystems, avec le soutien de Bill Joy

Objectif:
» langage sûr (fortement typé)
» gestion automatique de la mémoire
» usage sur le web
La société Sun a été ensuite rachetée en 2009 par la société Oracle qui
détient et maintient désormais Java

Java a connu deux logos au cours de son histoire:

de 1996 à 2003 à partir de 2003

10

5
22/09/2022

Atouts de Java
Java possède un certain nombre de caractéristiques qui ont
largement contribué à son énorme succès :
» Orienté objet: Java est un langage purement objet (à l’exception des
types primitifs) c'est-à-dire qu'il respecte une approche orientée objet
de la programmation, sans qu'il ne soit possible de programmer
autrement.
» Portable: un programme écrit en Java sur une plateforme peut être
exécuté sans aucune modification sur un autre système (JVM); WORA
(Write Once, Run Anywhere).
» Interprété: Un programme écrit en Java est exécuté par un
interpréteur qui traduit en temps réel les instructions Java en
instructions exécutables par le système hôte.
» doté d'une API évoluée: Java est livré en standard avec une
importante API (Application Programming Interface) : threads,
sockets, entrées/sorties... 11

Atouts de Java

» Simple: abandon des éléments mal exploités: pointeurs, héritage


multiple et surcharge des opérateurs, ...

» Multitâche: il permet l'utilisation de threads qui sont des unités


d'exécutions isolées. La JVM, elle même, utilise plusieurs threads.

» Meilleure gestion de la mémoire: l'allocation de la mémoire pour un


objet est automatique à sa création et Java récupère automatiquement
la mémoire inutilisée grâce au garbage collector qui restitue les zones
de mémoire laissées libres suite à la destruction des objets.

» Java est fortement typé: toutes les variables sont typées et il n'existe
pas de conversion automatique qui risquerait une perte de données. Si
une telle conversion doit être réalisée, le développeur doit
obligatoirement utiliser un cast ou une méthode statique fournie en
standard pour la réaliser.
12

6
22/09/2022

Qu’est-ce que Java ?

Java est un langage de programmation


» Un programme Java est compilé et interprété

Java est une plateforme

» La plateforme Java, uniquement software, est exécutée sur la


plateforme du système d’exploitation

» La « Java Platform » est constituée de :


• La « Java Virtual Machine » (JVM)
• Des interfaces de programmation d’application (Java API)

Introduction à la POO
13

Machines Virtuelles Java ...

Navigateurs Web, Stations de travail, Network Computers

Systèmes embarqués

WebPhones

Smartphones

Cartes à puces

...
14

7
22/09/2022

Java comme langage de programmation


Java est un langage de programmation particulier qui
possède des caractéristiques avantageuses:
» Simplicité et productivité:
• Intégration complète de l’OO
• Gestion mémoire (« Garbage collector »)
» Robustesse, fiabilité et sécurité
» Indépendance par rapport aux plateformes
» Ouverture:
• Support intégré d’Internet
• Connexion intégrée aux bases de données (JDBC)
• Support des caractères internationaux
» Distribution et aspects dynamiques
» Performance 15

Java comme langage de programmation


Source Java
» Fichier utilisé lors de la phase de programmation
» Le seul fichier réellement intelligible par le programmeur!

Byte-Code Java
» Code objet destiné à être exécuté sur toute «Machine Virtuelle» Java
» Provient de la compilation du code source

Machine Virtuelle Java


» Programme interprétant le Byte-Code Java et fonctionnant sur un
système d’exploitation particulier
Conclusion: il suffit de disposer d’une «Machine Virtuelle» Java pour
pouvoir exécuter tout programme Java même s’il a été compilé avec un
autre système d’exploitation
16

8
22/09/2022

Java comme langage de programmation


Création du code source
"Code Source"
» A partir des spécifications (par exemple en UML) MonProgramme.java
» Outil : éditeur de texte, IDE
Compilation en Byte-Code
» A partir du code source javac
» Outil : compilateur Java
Diffusion sur l’architecture cible
"Byte Code"
» Transfert du Byte-Code seul MonProgramme.class

» Outils : réseau, disque, etc


java java java
Exécution sur la machine cible
JVM JVM JVM
» Exécution du Byte-Code Mac Windows Unix
» Outil : Machine Virtuelle Java 17

Java comme Plateforme


Plateforme = environnement hardware ou software sur lequel
le programme est exécuté.

La Java « Platform » se compose de:


» la Java Virtual Machine (Java VM)
» la Java Application Programming Interface (Java API)

18

9
22/09/2022

Java comme Plateforme


Java Application Programming Interface (API)

L’API Java est structuré en libraires (packages). Les packages


comprennent des ensembles fonctionnels de composants (classes).

Le noyau (core) de l’API Java (incluse dans toute implémentation


complète de la plateforme Java) comprend notamment :
» Essentials (data types, objects, string, array, vector, I/O,date,…)
» Applet
» Abstract Windowing Toolkit (AWT)
» Basic Networking (URL, Socket –TCP or UDP-,IP)
» Evolved Networking (Remote Method Invocation)
» Internationalization
» Security
» …..

19

Déploiement d’un programme (1/2)


Paradigme classique de la compilation

MonProgramme.c

Exécuté une seule fois Mais Génère du code natif directement


différent pour chaque exécutable, mais spécifique à
environnement chaque environnement

MonProgramme.o

...

20

10
22/09/2022

Déploiement d’un programme (2/2)


Changement de la vision traditionnelle de la compilation

Chaque programme est compilé et interprété


« Write once run everywhere »

MonProgramme.java
Traduit le programme en un code intermédiaire
Appelé bytecode – indépendant de la machine
Exécuté une seule fois

MonProgramme.class

Interpreter
Chaque fois que le programme
est exécuté
Lit le bytecode et l’exécute sur la machine

10010. . .

21

Comment développer une application ?


Deux façons d’écrire des programmes Java:

En écrivant le code dans un simple éditeur de texte


» Compilation et exécution du code en ligne de commande DOS

En utilisant un environnement de développement (IDE)


» Eclipse (https://www.eclipse.org/)
» Netbeans (http://www.netbeans.com)
» Visual Studio Code (https://code.visualstudio.com/)
» Borland JBuilder (http://www.borland.com/jbuilder)
» IBM WebSphere Studio (http://www.ibm.com/software/awdtools)
» Sun ONE Studio (http://wwws.sun.com/software/sundev)
» Microsoft .Net Studio (http://msdn.microsoft.com/vstudio)
22

11
22/09/2022

Java et ses versions ...


Trois plateformes d'exécution (ou éditions) Java sont définies pour des
cibles distinctes selon les besoins des applications à développer :

Java Standard Edition (J2SE / Java SE) : environnement d'exécution et


ensemble complet d'API pour des applications de type desktop. Cette
plateforme sert de base en tout ou partie aux autres plateformes

Java Enterprise Edition (J2EE / Java EE) : environnement d'exécution


reposant intégralement sur Java SE pour le développement
d'applications d'entreprises

Java Micro Edition (J2ME / Java ME) : environnement d'exécution et


API pour le développement d'applications sur appareils mobiles et
embarqués dont les capacités ne permettent pas la mise en œuvre de
Java SE
23

Java et ses versions ...


Avec ces différentes éditions, les types d'applications qui peuvent
être développées en Java sont nombreux et variés :
» Applications desktop
» Applications web : servlets/JSP, portlets, applets
» Applications pour appareil mobile (MIDP) : midlets
» Applications pour appareil embarqué (CDC) : Xlets
» Applications pour carte à puce (Javacard) : applets Javacard

Sun puis Oracle fourni un ensemble d'outils et d'API pour permettre


le développement de programmes avec Java
» SDK (Software Development Kit) ou JDK fournit un compilateur et une machine
virtuelle
» JRE (Java Runtime Environment) contient uniquement l'environnement
d'exécution de programmes Java: la machine virtuelle. Le JDK contient lui-même
le JRE.
24

12
22/09/2022

Bref historique des versions


version date faits notables
1.0 janvier 1996 La naissance
1.1 février 1997 Ajout de JDBC, fichiers JAR et définition des JavaBeans
• Collections JFC (Swing, Java2D, drag & drop ...)
• La machine virtuelle inclut la compilation à la volée (Just
1.2 décembre 1998
In Time)
• Renommé Java 2
1.3 mai 2000 hotspot est inclus dans la JVM …
1.4 février 2002 Support des regexp et premier parser de XML
Évolutions majeures du langage : autoboxing, énumérations,
5 septembre 2004 varargs, imports statiques, foreach, types génériques,
annotations.
6 décembre 2006 J2SE est renommée en Java SE
7 juillet 2011 Plusieurs améliorations et évolutions du langage
Évolutions majeures du langage : les lambdas et les streams
8 mars 2014
et une nouvelle API pour les dates
25
9 septembre 2017 Ajout de nouvelles API (Data and Time, Annotations…)

Bref historique des versions


10 mars 2018 Inférence des types pour les variables locales (mot-clé var)
• Nouvelle licence propriétaire (payante) de Oracle JDK
11 septembre 2018
• Distribution libre sous licence GPL v2 + CPE
• Nouvel algorithme de ramasse-miettes
12 mars 2019
• Extension de l’expression switch
• Nouvelle implémentation de la couche socket.
13 septembre 2019 • Extension de l’expression switch : Support des blocs de
texte en utilisant le tripe guillemet """.
• Extension de l’expression switch
14 mars 2020
• Nouveau type record
15 septembre 2020 Support des blocs de texte en utilisant le tripe guillemet """
Déclaration locale et statique des classes, interfaces et
16 mars 2021
énumérations
17 septembre 2021 Améliorations relatives à la sécurité et corrections de bugs
18 mars 2022 Améliorations relatives à la sécurité et corrections de26bugs

13

Vous aimerez peut-être aussi