Vous êtes sur la page 1sur 66

Université Abdelmalek Essaâdi

Faculté des Sciences et Techniques d’Al-Hoceima


Département de Mathématiques et Informatique
Filière : LST-MI – S6
Année universitaire : 2018 - 2019

Cours du Module M32 : Programmation orientée objet Java

Chapitre 1 : Introduction à la Programmation Orientée Objet

Pr. A. El Mhouti FSTH


Plan du chapitre 1 : Introduction à la POO

 Introduction à la POO

 Introduction au langage Java

 Notion de classe

 Notion d’objet

Pr. A. El Mhouti 2 FSTH


Introduction à la POO

Pr. A. El Mhouti 3 FSTH


Paradigme de programmation
Types de programmation

 Deux grandes approches de programmation :

Types de
programmation

Orientée
Procédurale objet

Pr. A. El Mhouti 4 FSTH


Paradigme de programmation
Types de programmation

 Il existe deux grandes approches de programmation :


 Programmation procédurale (structurée) :
 se fonde sur le concept de procédure (fonction).
 une procédure contient une série d’instructions à réaliser.
 N'importe quelle procédure peut être appelée à n'importe
quelle étape de l'exécution.

 Programmation orientée objet (POO) :


 tout tourne autour des "objets" qui sont des petits ensembles
de données représentants leurs propriétés.
 Objets = ensembles groupés de variables et de méthodes
associées à des entités.

Pr. A. El Mhouti 5 FSTH


Introduction à la POO
De la programmation procédurale vers la POO

 La programmation classique définie un programme comme étant un


ensemble de données sur lesquelles agissent des fonctions.

 Les données = la partie passive du programme.


 Les fonctions = la partie active du programme.

 Programmer dans ce cas revient à :


 définir des variables.

 écrire des fonctions pour les manipuler sans


associer explicitement les unes aux autres.

Programme

 Exécuter un programme se réduit alors à appeler ces fonctions et en


leur fournissant les données nécessaires.
Pr. A. El Mhouti 7 FSTH
Introduction à la POO
De la programmation procédurale à la POO

 Dans la programmation classique, données et fonction sont traitées


indépendamment les unes des autres sans tenir compte des relations étroites
qui les unissent.

 Les questions qu’on peut poser dans ce cas :


1. Cette séparation (données, fonctions) est elle utile ?

2. Pourquoi privilégier les fonctions sur les données ?

3. Pourquoi ne pas considérer qu’un programme est un ensemble d’objets ET


chaque objet est caractérisés par ses propres données et fonctions?

 Les langages orientés objets sont nés pour répondre à ces questions.

Pr. A. El Mhouti 8 FSTH


Introduction à la POO
De la programmation procédurale à la POO

 La POO est fondée sur l’utilisation d’une seule catégorie d’entités


informatiques : les objets.
 Un objet incorpore des aspects statiques (données) et dynamiques
(fonctions) au sein d’une même structure.
 Avec les objets, ce sont les données qui deviennent prépondérantes.

Programmation procédurale POO


Pr. A. El Mhouti 9 FSTH
Introduction à la POO
De la programmation procédurale à la POO

 En programmation classique, un programme = ensemble de fonctions


agissants sur des données.

 En POO, un programme = ensemble d’objets, chacun disposant d’une


partie fonctions (méthodes) et d’une partie données.

Pr. A. El Mhouti 10 FSTH


Introduction à la POO
Définition

 La Programmation Orientée Objet (POO) est un paradigme (style) de


programmation consistant à organiser les programmes sous formes de
collections coopératives d’objets.

 La POO propose une méthodologie de programmation centrée sur les


« objets ».

 Un objet représente un concept ou une entité du monde réel.

 Exemples d’objets :

Objet 1 : Voiture Objet 2 : Table Objet 3 : Livre Objet 4 : Etudiant

Pr. A. El Mhouti 11 FSTH


Introduction à la POO
Principe

 L’approche orientée objet est basé sur le principe d'abstraction des données.
 L’abstraction est le processus qui consiste à représenter des objets qui
appartiennent au monde réel dans le monde du programme que l’on écrit.
 Le processus d’abstraction consiste à :
 l'OBSERVATION de la façon dont nous procédons dans notre vie :
 nous sommes entourés d’OBJETS que nous manipulons,
  il nous importe peu de savoir comment ils sont fabriqués.
 l’IDENTIFICATION pour un ensemble d’éléments des :
 caractéristiques communes à tous les éléments: attributs.

  comportements communs à tous les éléments : méthodes.

Pr. A. El Mhouti 12 FSTH


Introduction à la POO
Principe
 Exemples :

Renault Clio Ford Fiesta

Dacia Logan Réseaux

Abstraction Abstraction

Voiture Livre
Marque : ………….. Titre: ………………
Carburant : ………. Auteur : ………….
Démarrer {…} Lire {…}
Arreter {…} Preter {…}
Rouler {…}
Accelerer {…}

Pr. A. El Mhouti 13 FSTH


Introduction à la POO
Principe

 Le principe de la POO consiste à :


 1) identifier les objets qui doivent être utilisés (ou manipulés) par le
programme: => on ne commence pas par ce que doit faire l’application mais
plutôt par ce qu’elle doit manipuler.
 2) définir les traitements : pour chaque objet définir les traitements
associés.

 Exemple : pour une application de gestion d’une banque :


 1) les objets à utiliser : Client, Compte, ….
 2) traitements associés aux objets :
 Client : Créer compte, clôturer compte, …
 Compte : Verser montant, Débiter montant, …

Pr. A. El Mhouti 14 FSTH


Introduction à la POO
Principe

 En résumé, le principe de la POO


consiste à :
1) déterminer les objets à manipuler.
Voiture
2) déterminer les traitements à faire
Marque : Renault Clio
sur ces objets.
Carburant : Diesel
3) Ne pas s’intéresser au Démarrer {…}
fonctionnement interne des objets. Arreter {…} Services
Rouler {…} rendus
Accelerer {…}

Fonctionnement
interne de la voiture

Pr. A. El Mhouti 15 FSTH


Introduction à la POO
Bref historique

 1966 : Simula regroupe données et procédures.

 1972 : Simula formalise les concepts d'objet et de classe. Un programme


devient une collection d'objets actifs et autonomes.

 1972 : Smalltalk généralise la notion d'objet.

 1983 : C++ : Extension du C s'inspirant de Simula.

 1994 : Java : d'abord pour le web puis généraliste.

 Autres : C#, Eiffel, Ada, Clu, Object Pascal, delphi, Python, etc..

Pr. A. El Mhouti 16 FSTH


Introduction à la POO
Comparaison avec la programmation procédurale

Programmation procédurale (en C) POO (en Java)


• Le programmeur s’intéresse en • Propose une méthodologie centrée
priorité aux traitements que son sur les données.
programme devra effectuer.
• Le programmeur commence par • Le programmeur va d’abord identifier les
identifier ces traitements pour écrire objets sous la forme d’ensembles de
les fonctions qui les réalisent sur des données.
données prises comme paramètres. • Ce n’est que dans un deuxième temps, que
le programmeur va écrire les traitements,
en associant chaque traitement à un objet.

• Les fonctions s’appellent entre elles • Les objets peuvent échanger des
en se passant des paramètres. messages.

Pr. A. El Mhouti 17 FSTH


Introduction à la POO
POO Vs. Objet

 Programmation Orientée Objet :


 Programmation dans laquelle les programmes sont organisés comme des
ensembles d'objets coopérant ensemble.
 Objet : conteneur formé de :
 Données (attributs) => définissent ce qu'il est l’objet.
 Fonctions (méthodes) => définissent ce qu'il peut faire.

Pr. A. El Mhouti 18 FSTH


Introduction à la POO
Objet : Etudiant

 Exemple d’objet:
 Un objet de type « Etudiant » est conçu pour modéliser (pour représenter) un
étudiant. Il est caractérisé par ses :
 données (attribut): le nom, le numéro d’inscription, les notes, etc…

 fonctions associés (traitements ou méthodes) : méthodes pour le calcul de


la moyenne, l’affichage des résultats, etc….

Pr. A. El Mhouti 19 FSTH


Introduction à la POO
Avantages de la POO

 La POO est apparue avec pour objectifs de permettre aux entreprises de :


 Modularité : les objets forment des modules compacts regroupant des
données et un ensemble d'opérations.

 Abstraction : Les entités objets de la POO sont proches de celles du monde


réel. Les concepts utilisés sont donc proches des abstractions familières que
nous exploitons.

 Réutilisabilité : simplifier la réutilisation de code en permettant


l’extensibilité des objets existants (héritage) qui peuvent alors être
manipulés avec les même fonctions (polymorphisme).

Pr. A. El Mhouti 20 FSTH


Introduction à la POO
Avantages de la POO

 La POO est apparue avec pour objectifs de permettre aux entreprises de :

 Sûreté : L'encapsulation et le typage des classes offrent une certaine


robustesse aux applications et améliorent la sûreté des logiciels :

 en proposant un mécanisme simple des données sensibles d’un


objets.

 en ne rendant ces données accessibles que par certaines fonctions


associées à l’objet (encapsulation) afin que ces données ne soient pas
accessibles à un programmeur malveillant.

 => Objectif : Faciliter le développement d’applications robustes.

Pr. A. El Mhouti 21 FSTH


Introduction au langage Java

Pr. A. El Mhouti 22 FSTH


Introduction au langage Java
Définition

 Java est un langage de POO créé en 1991 par « SunMicrosystem »


(SunMicrosystem est rachetée en 2009 par Oracle).

 L’objectif initial était la programmation de petits appareils comme des


télécommandes, la programmation d’applications Web, …

 Java est devenu actuellement l’un des langages de programmation les


plus utilisés.

Pr. A. El Mhouti 23 FSTH


Introduction au langage Java
Historique

 Java a connu plusieurs évolutions depuis sa création. Plusieurs versions ont été
développées (https://www.java.com) :
 1991 : version 0 : Développement de Java par l’équipe de Patrick Naughton et James
Gosling, chez Sun Microsystems.
 1995 : version 1.0 : première version de Java.
 1996 : version 1.02 : gère la connectivité, les bases de données et les objets distribués.
 1997 : version 1.1 : gestionnaires d’événements, internationalisation, bibliothèques.
 1998 : version 1.2 : améliorations, bibliothèque Swing (pour les interfaces graphiques).
 2000 : version 1.3 : autres améliorations.
 2004 : version 5 : collections mieux gérées, arguments variables de méthodes.
 2006 : version 6 : collections mieux gérées, arguments variables de méthodes.
 2011 : version 7 : collections mieux gérées, arguments variables de méthodes.
 2014 …. 2018 : version 8.
Pr. A. El Mhouti 24 FSTH
Introduction au langage Java
Caractéristiques

 La syntaxe de Java est très proche de C++ (et par conséquent de C).
 C++ est crée dans les laboratoires « AT&T Bell » en 1983.
 Java est crée dans les laboratoires de « Sun Microsystems » en 1991.

Java évite les « points critiques » du langage C++ :

 Pointeurs
 Héritage multiple
 Gestion de la mémoire : en java, la libération de la mémoire s’effectue de
manière implicite (détecter les objets à détruire).
 Surcharge des opérateurs
 …

Pr. A. El Mhouti 25 FSTH


Introduction au langage Java
Avantages

 Outre son orientation objet, le langage Java à l’avantage d’être :


1) propre : il préserve un typage assez fort des données en présence, les
opérations arithmétiques sont très bien spécifiées.

2) sécurisé : de nombreuses techniques (encapsulation, exceptions,


gestionnaire de sécurité,...) contribuent à la robustesse des
programmes, tant à la compilation qu’à l’exécution.

3) modulaire : on peut écrire des portions de code génériques, c-à-d


utilisables par plusieurs applications.

4) rigoureux : la plupart des erreurs se produisent à la compilation et


non à l’exécution.

Pr. A. El Mhouti 26 FSTH


Introduction au langage Java
Avantages

5) portable : le bytecode reste le même quelque soit l’environnement


d’exécution.

6) riche : il existe de nombreuses bibliothèques dans tous les domaines.


7) interconnectable : certains programmes Java (les applets) peuvent
être directement intégrées dans les pages Web afin de les rendre
dynamiques. Aussi, de nombreuses bibliothèques permettent de
travailler en réseau .
8) populaire : en particulier en entreprise, le langage Java est un
investissement pour celui qui l’apprend.
9) …

Pr. A. El Mhouti 27 FSTH


Introduction au langage Java
Inconvénients

 En contre-partie, les applications Java ont le défaut d’être :


 Plus lent à l’exécution que des applications programmées en C par exemple.

 Absence d’héritage multiple : à la différence de C++ (cette carence a été


compensée par un mécanisme d’interfaces).

 Nécessite une JVM (Java Virtual Machine) pour fonctionner.

Pr. A. El Mhouti 28 FSTH


Introduction au langage Java
Domaines d’application de Java

 Java est utilisé dans :

 Les applications classiques : applications s'exécutant sur une machine comme


tout programme (jeux, calculatrices, éditeurs de texte, …)

 Le Web : comme les applets qui sont des programmes Java s'exécutant dans
un navigateur web (applet = programme Java inséré dans une page HTML
téléchargée d'un serveur web et s'exécutant sur le poste client).

 Le domaine du réseau : pour réaliser des programmes client-serveur de façon


très simple ( ftp, http, pages HTML dynamiques via JSP... )

 Le domaine du multimédia : son, animations, traitement de l'image, vidéo, ...

 Systèmes embarqués (aéronautique, applications industrielles, GPS, ... )

Pr. A. El Mhouti 29 FSTH


Introduction au langage Java
Autres langages orientés objet

 C++ : très utilisé


 C# : langage de Microsoft (appartient à .NET)
 Objective C : langage utilisé par Apple
 PHP : langage très utilisé sur le Web
 Python
 Ruby
 Eiffel
 Ada
 Smalltalk, ...
La syntaxe change mais le concept objet est le même !

Pr. A. El Mhouti 30 FSTH


Introduction au langage Java
Fonctionnement de Java

 Java est un langage interprété (en effet, c’est un peu des deux, mais
surtout interprété).
 Un programme Java compilé n’est pas directement exécutable par le
système d’exploitation mais il doit être interprété par le JVM.

Compilateur Java (produit un bytecode utilisable


sur tous les systèmes d’exploitation)

interpréteur

Pr. A. El Mhouti 31 FSTH


Introduction au langage Java
Fonctionnement de Java

 Un programmeur Java écrit son code source sous la forme de classes (objets),
dans des fichiers dont l’extension est .java.

 Ce code source est alors compilé par le compilateur javac en un langage appelé
bytecode et enregistre le résultat dans un fichier dont l’extension est .class.

 Le bytecode ainsi obtenu n’est pas directement utilisable. Il doit être interprété
par la JVM qui transforme alors le code compilé en code machine
compréhensible par le système d’exploitation.

Programmeur

Pr. A. El Mhouti 32 FSTH


Introduction au langage Java
Fonctionnement de Java

 Pour interpréter un programme Java, Java utilise une machine virtuelle java
(JVM : Java Virtual Machine).
 JVM : programme se comportant comme un « processeur logiciel » qui
interprète des instructions portables en les traduisant dans le langage machine.

Pr. A. El Mhouti 33 FSTH


Introduction au langage Java
Environnement de travail

 Pour pouvoir programmer en Java, il faut :


 Un éditeur de texte pour écrire le code du programme Java.

 un compilateur qui va transformer le code source en byte code.

 un interpréteur qui interprète les instructions en les traduisant


dans le langage machine.

 Le compilateur et l’interpréteur Java sont disponibles gratuitement dans


le JDK (Java Development Kit) téléchargeable depuis le site d’Oracle.

 Plusieurs environnements java sont disponibles :


 Java SE (Standard Edition)
 Java ME (Mobile Edition)
 Java EE (Enterprise Edition)
Pr. A. El Mhouti 34 FSTH
Introduction au langage Java
Environnement de travail

 Les principaux programmes disponibles dans le JDK (Java Development


Kit) sont :

Nom Description
javac Compile les fichiers .java en .class
java Exécute les fichiers .class
appletviewer Exécute les applets
javadoc Génère la documentation HTML de classes Java
jdb Débogue les programmes Java
jar Crée des archives Java
apt Traitement des annotations

Pr. A. El Mhouti 35 FSTH


Introduction au langage Java
Environnement de travail

 Pour programmer en Java, on utilise des IDE (EDI en français).


 IDE : Integrated Development Environment
 EDI : Environnement de Développement Intégré.

 Un IDE est environnement à interface graphique qui permet de


développer, compiler et exécuter un programme.

 Exemples d’IDE pour Java :


 Eclipse : IDE open source développé par IBM

 NetBeans : IDE open source développé par Sun Microsystems.

 JDeveloper
 ….

Pr. A. El Mhouti 36 FSTH


Notion de classe et d’objet

Pr. A. El Mhouti 37 FSTH


Notion de classe et d’objet
Classe
 Les objets utilisés dans une application Java sont souvent très nombreux.
 Exemple : Dans une application de gestion d’une bibliothèque, on peut
trouver plusieurs objets de type livre.
 On peut dégager des types d’objets.

La notion de classe correspond à cette notion de type d’objet.

Livre

….
Livre 1 Livre 2 Livre 3
Pr. A. El Mhouti 38 FSTH
Notion de classe et d’objet
Classe
 Un objet est une variable (presque) comme les autres  il faut
notamment qu’il soit déclaré avec son type.
 Le type d’un objet est un type complexe (par opposition aux types primitifs :
entier, caractère, …) qu’on appelle une classe.
 Une classe regroupe un ensemble de données (peuvent être des variables
primitives) et un ensemble de méthodes de traitement de ces données.
Classe

Un objet est une variable


dont le type est celui de la
Objet 1 Objet 4
classe dont il est issu.
Objet 2 Objet 3

Pr. A. El Mhouti 39 FSTH


Notion de classe et d’objet
Classe
 Une classe est une entité :
 représentant un ensemble d’objets ayant la même représentation
mémoire (structure) et les mêmes comportements.
 définissant cette structure et ses comportements. Voiture
 capable de générer des instances. Marque
Attributs Carburant
(Données) nbChevaux
Démarrer {…}
 La classe contient : Méthodes Arreter {…}
(Comportements) Rouler {…}
 des attributs. Accelerer {…}

 des méthodes qui définissent les comportements de classe.

  Une classe permet de créer les objets : Classe = Modèle d’objets.


Pr. A. El Mhouti 40 FSTH
Notion de classe et d’objet
Classe
 Exemple :
 Considérons la classe « Rectangle » définie pour créer les objets
représentant des rectangles.

 Un objet de type «Rectangle» est caractérisé par :


 Ses attributs (données) : largeur , longueur, position, …
 Ses méthodes (comportements) : opérations qu’on peut effectuer sur un objet
de type rectangle : calcul de la surface, déplacement dans le plan, …
Pr. A. El Mhouti 41 FSTH
Notion de classe et d’objet
Classe
 Déclaration d’une classe en Java :
 Pour déclarer une classe (un nouveau type d’objets) on utilise le mot
clé class suivi du nom de la classe.

 Syntaxe : class NomClasse {


// NomClasse est le nom de la classe à créer
/* Le corps de la classe comprend :
 la définition des attributs (données membres)
 la définition des méthodes */
}
 NB : Pour les commentaire on utilise:
 // pour un commentaire sur une seule ligne.
 /* pour un commentaire étalé sur plusieurs lignes. Il doit terminer avec */.
Pr. A. El Mhouti 42 FSTH
Notion de classe et d’objet
Classe
 Attributs d’une classe :

 Les attributs (variables), appelés aussi champs ou données membres,


définissent l’état interne d’un objet (données propre à chaque objet).
 Tous les attributs doivent être déclarés avant d’être utilisés.
 La déclaration des attributs se fait de préférence en début de classe.
 Syntaxe :
modificateur type nomAttribut;
 modificateur : un spécificateur d’accès (public, private, protected).
 type : le type de l’attribut. Il est de type primitif (char, byte, short, int, long,
float, double, boolean) ou un nom d’une classe.
 nomAttribut : le nom de l’attribut (le nom de la variable).

Pr. A. El Mhouti 43 FSTH


Notion de classe et d’objet
Classe
 Attributs d’une classe :

 Un attribut peut être déclarée en accès :


 public : les autres objets peuvent accéder à la valeur de cet attribut et la modifier.
 privé : les autres objets n’ont pas le droit d’accéder à la valeur de cet attribut.

 Exemple :
class Exemple {
public int n ; // nom attribut : n, type : int ; modificateur : public
private double z; // nom attribut : z, type : double; modificateur : private
public Rectangle r; //nom attribut: r, type: Rectangle, modificateur: public
…..
}
Pr. A. El Mhouti 44 FSTH
Notion de classe et d’objet
Classe
 Méthodes d’une classe :

 Les méthodes (appelées aussi fonctions membres ou comportement)


définissent l’ensemble d’opérations applicables à l’objet
 On manipule les objets par des appels de ces méthodes.

 Syntaxe:
modificateur typeRetour nomMethode (listeParamètres) {
// corps de la méthode: les instructions décrivant la méthode
}
 modificateur : un spécificateur d’accès.
 typeRetour : le type de la valeur qui sera retournée par la méthode.
 nomMethode : le nom de la méthode
 listeParamètres : la liste des paramètres (arguments).
Pr. A. El Mhouti 45 FSTH
Notion de classe et d’objet
Classe
 Méthodes d’une classe :
 Exemple : une classe Rectangle utilisée pour instancier des objets
représentant des rectangles :

Pr. A. El Mhouti 46 FSTH


Notion de classe et d’objet
Classe
 Méthodes d’une classe : le Constructeur :

 Chaque classe doit définir une ou plusieurs méthodes particulières


appelées des constructeurs.

 Chaque constructeur doit avoir le même nom que la classe où il est


défini et n’a aucune valeur de retour (c’est l’objet créé qui est renvoyé).

 Le constructeur est une méthode appelée lors de la création d’un


objet.

 Cette méthode initialise l’objet en donnant des valeurs à ses attributs.

Pr. A. El Mhouti 47 FSTH


Notion de classe et d’objet
Classe
 Méthodes d’une classe : le Constructeur :
 Exemple : Dans la classe «Rectangle», le constructeur initialise la
valeur des données d’un objet de type Rectangle :

Pr. A. El Mhouti 48 FSTH


Notion de classe et d’objet
Objet
 Une fois la classe est définie, on peut l’utiliser pour créer des objets
(variables).

 Chaque objet est une variable d’une classe qui a son espace mémoire
pour stocker les valeurs de ses attributs.

 Les valeurs des attributs sont propres à l’objet.

 L’ensemble des valeurs des attributs d’un objet à


un instant donné est appelé état interne de l’objet.

Pr. A. El Mhouti 49 FSTH


Notion de classe et d’objet
Objet
 L’opération de création de l’objet est appelée une instanciation.
Un objet est une instance d'une classe.
 Une classe permet d’instancier plusieurs objets :
 les noms des attributs et les méthodes sont les mêmes pour toutes les objets.
 les valeurs des attributs (état interne) sont propres à chaque objet.

 Exemples :

2 instances de la classe Animal 3 instances de la classe Etudiant


Pr. A. El Mhouti 50 FSTH
Notion de classe et d’objet
Objet
 Création d’un objet :
 Pour créer un objet, il faut passer par deux étapes :
1) déclarer l’objet : déclarer une variable dont le type est la classe à
instancier.
2) création de l’objet : faire appel à un constructeur de cette classe.

Pr. A. El Mhouti 51 FSTH


Notion de classe et d’objet
Objet
 1) Déclaration d’un objet :

 Chaque objet doit être déclaré avec son type.


 Syntaxe :
NomClasse NomObjet ;
 NomClasse : nom de la class.
 NomObjet : nom d’une variable de type « NomClasse ».

 La déclaration d’un objet ne réserve pas un emplacement mémoire


pour l’objet, mais seulement un emplacement pour mémoriser une
référence à cet objet.
 => les objets sont instanciés par des références : les objets sont
instanciés par allocation dynamique.
Pr. A. El Mhouti 52 FSTH
Notion de classe et d’objet
Objet
 1) Déclaration d’un objet :
 Exemple : Soit la classe la classe « Rectangle» suivante :

l’instruction: Rectangle R1; déclare que «R1» est une variable de type « Rectangle».
 Important :
 la déclaration seule d’un objet ne permet pas de l’utiliser.
 avant d’utiliser un objet on doit le créer.

Pr. A. El Mhouti 53 FSTH


Notion de classe et d’objet
Objet
 2) Création d’un objet :

 Après la déclaration d’un objet, on doit le créer afin de réserver un


emplacement mémoire pour stocker son état interne.
 L’opérateur « new » permet de réserver de la place mémoire pour
stocker l’objet et initialiser les attributs.
 Syntaxe :
NomDeClasse NomObjet; //déclaration
NomObjet = new nomDeClasse(); //création
 Les deux expressions peuvent être remplacées par :
NomDeClasse NomObjet = new NomDeClasse();

Pr. A. El Mhouti 54 FSTH


Notion de classe et d’objet
Objet
 2) Création d’un objet :
 Exemple : Considérons la classe « Rectangle » :

Rectangle R1; /* déclare une référence sur l’objet R1 */


R1 = new Rectangle(); /* création de l’objet R1 */
// R1 est une instance de la classe Rectangle
// Les deux expressions peuvent être remplacées par :
Rectangle R1=new Rectangle();
Pr. A. El Mhouti 55 FSTH
Notion de classe et d’objet
Objet
 2) Création d’un objet :
 Remarques :
 Chaque objet met ses données membres dans sa propre zone mémoire.

 Lors de la création de l’objet : NomObjet = new nomDeClasse(); l’usage


de parenthèses signifie qu’une méthode est appelée: cette méthode est le
constructeur de la classe.

 On distingue deux cas de création d’un objet :


 Cas 1 : la classe à instancier ne possède pas des constructeurs :
 Objet = new nomDeClasse(); // fonction sans paramètres
 Cas 2 : la classe à instancier possède au moins un constructeur :
 Objet = new nomDeClasse(par1,par2,..);//avec paramètres

Pr. A. El Mhouti 56 FSTH


Notion de classe et d’objet
Objet
 2) Création d’un objet :
 Cas 1 : la classe à instancier ne possède pas des constructeurs.

Exemples d’instanciation
de la classe Rectangle

Pr. A. El Mhouti 57 FSTH


Notion de classe et d’objet
Objet
 2) Création d’un objet :
 Cas 2 : la classe à instancier possède au moins un constructeur.
=>Les paramètres du constructeur doivent être précisés entre ces parenthèses.

Exemples d’instances
de la classe Rectangle

Pr. A. El Mhouti 58 FSTH


Notion de classe et d’objet
Objet
 Durée de vie d’un objet :
 La durée de vie d'un objet passe par trois étapes :
1) déclaration et l'instanciation de l'objet : grâce à l'opérateur new.

2) utilisation de l'objet : en appelant ses méthodes.

3) suppression de l'objet : elle est automatique en java grâce à la machine


virtuelle Java (JVM).

 La restitution de la mémoire inutilisée est prise en charge par le récupérateur


de mémoire (garbage collector).

 En Java, il n'existe pas d'instruction pour libérer de la mémoire (comme free


en C ou delete en C++).

Pr. A. El Mhouti 59 FSTH


Notion de classe et d’objet
Objet
 Accès aux membres d’un objet :
 L’utilisation des objets se manifeste selon 2 axes :
 l’accès aux attributs
 l’accès aux méthodes.

Pr. A. El Mhouti 60 FSTH


Notion de classe et d’objet
Objet
 Accès aux membres d’un objet : accès aux attributs :
 Pour accéder aux attributs de l’intérieur de la classe, il suffit d’indiquer le nom
de l’attribut que l’on veut y accéder.
 Exemple :

 Pour accéder aux attributs d’un objet, on indique le nom de l’objet suivi par un
point, suivi par le nom de l’attribut comme suit: NomObjet.NomAttribut;
 Exemple :

Pr. A. El Mhouti 61 FSTH


Notion de classe et d’objet
Objet
 Accès aux membres d’un objet : accès aux méthodes :
 Une méthode ne peut être appelée que pour un objet.
 L’appel d’une méthode pour un objet se réalise en indiquant le nom de l’objet
suivi d’un point, suivi du nom de la méthode et de sa liste d’arguments :
nomObjet.nomMethode(listeArguments);

 Exemple :

Pr. A. El Mhouti 62 FSTH


Notion de classe et d’objet
Objet
 Accès aux membres d’un objet :
 Pour pouvoir accéder aux membres d’un objet, il faut que trois conditions
soient remplies :
 La variable ou la méthode appelée existe.
 L’objet concerné existe et soit instancié.
 L’objet, au sein duquel est fait cet appel, ait le droit d’accéder à la
méthode ou la variable.

Pr. A. El Mhouti 63 FSTH


Notion de classe et d’objet
Objet
 Accès aux membres d’un objet :
 Remarque :
 Pour éviter les ambiguïtés, on peut préciser qu’on fait référence à l’objet
“courant” (celui dans lequel se situe la ligne de code).
 Pour cela, Java fournit le mot-clé this.
 this : est une variable désignant l’objet courant.

 Exemple :
class point{
private int x,y;
public int get_x(){return x;}
public int get_y(){return y;}
public void set_x(int x){this.x=x;} // ambiguïté => this
public void set_y(int y){this.y=y;} // ambiguïté => this }

Pr. A. El Mhouti 64 FSTH


Notion de classe et d’objet
Objet
 Accès aux membres d’un objet :
 L’opérateur this est également utilisé pour appeler le constructeur
de l’objet courant.

 Exemple :

Pr. A. El Mhouti 65 FSTH


1) 4)
POO
Classe Objet