0% ont trouvé ce document utile (0 vote)
29 vues39 pages

Module 6 - Programmation Orient Objet

Le document traite des concepts fondamentaux de la programmation orientée objet, notamment les objets, les classes, l'héritage, le polymorphisme et les accesseurs/mutateurs. Il décrit comment créer des classes en Java, en utilisant des exemples concrets comme la classe Rectangle, et explique l'importance du masquage des données. Enfin, il aborde les diagrammes UML et leur conversion en code Java, ainsi que les règles de redéfinition et de surcharge des méthodes.

Transféré par

francoiswakegbandi
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 PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
29 vues39 pages

Module 6 - Programmation Orient Objet

Le document traite des concepts fondamentaux de la programmation orientée objet, notamment les objets, les classes, l'héritage, le polymorphisme et les accesseurs/mutateurs. Il décrit comment créer des classes en Java, en utilisant des exemples concrets comme la classe Rectangle, et explique l'importance du masquage des données. Enfin, il aborde les diagrammes UML et leur conversion en code Java, ainsi que les règles de redéfinition et de surcharge des méthodes.

Transféré par

francoiswakegbandi
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 PDF, TXT ou lisez en ligne sur Scribd

PROGRAMMATION ORIENTE OBJET

Ferdinand BATANA, DBA & Web Developer(OCAJP, MCSE SQL SERVER)


Les objets et les classes

 Un objet existe en mémoire et effectue une tâche spécifique.


 Les objets ont deux capacités générales:
 Les objets peuvent stocker des données. Les éléments de données stockés
dans un objet sont également appelés champs / attributs.
 Les objets peuvent effectuer des opérations. Les opérations qu'un objet peut
effectuer sont appelées méthodes.
Les objets et les classes

 Vous avez déjà utilisé l'objet suivant:


 Objets scanner, pour lire une entrée
cette expression crée un objet
Example: Scanner en memoire.
Scanner keyboard = new Scanner([Link]);

L’adresse mémoire de
l’objet est assignee à la
variable keyboard.
Les objets et les classes

 L'API Java fournit de nombreuses classes


 Jusqu'à présent, les classes à partir desquelles vous avez créé des objets sont
fournies par l'API Java.
 Exemple:
• Scaner
• Ramdom
 L’utilisateur peut définir ses propres classes
 Déterminez les données dont il avait besoin
 Déterminer les méthodes
Ecrire une classe étape par étape

 Un objet Rectangle aura les champs suivants:


 length. Le champ length contiendra la longueur du rectangle.
 width. Le champ width contiendra la largeur du rectangle.

Quelles methods avons nous besoin ?


Ecrire une classe étape par étape

 La classe Rectangle aura les methods suivantes:


 setLength.
 setWidth.
 getLength.
 getWidth.
 getArea.
Diagramme UML

 Le langage de modélisation unifié (UML) fournit un ensemble de


diagrammes standard pour la représentation graphique de systèmes
orientés objet
.

Class name goes here

Fields are listed here

Methods are listed here


Diagramme UML

 La class Rectangle

.
Rectangle
length
width
setLength()
setWidth()
getLength()
getWidth()
getArea()
Écrire le code pour les champs de classe

public class Rectangle


{
// data or instance variables
private double length;
private double width;
}

.
Les modificateurs d’accès

 Un spécificateur d'accès est un mot-clé Java qui indique


comment accéder à un champ ou à une méthode.
 publique
 Lorsque le spécificateur d'accès public est appliqué à un
membre de la classe, le membre peut être accédé par code
à l'intérieur ou à l'extérieur de la classe.
 private
 Lorsque le spécificateur d'accès privé est appliqué à un
membre de la classe, il est impossible d'accéder à ce
membre via un code situé en dehors de la classe. Le
membre n'est accessible que par les méthodes membres de
la même classe.
L’entête de la méthode setLength

Notez que le mot static


Type n'apparaît pas dans la
retour définition de la méthode
Modificateur Nom conçue pour fonctionner
d’accès méthode sur une instance d'une
classe (méthode
d'instance).
public void setLength (double len)

Paramètre
Ecrire et démontrer la méthode setLength

 Donner un corp à la méthode setLength


Création d’un objet Rectangle

 Rectangle box = new Rectangle()

La variable box length: 0.0


contient l’adresse de address
l’objet Rectangle width: 0.0
Appelle de la méthode setLength

 [Link](10.0)
 Voici l’état de l’objet box après l’exécution de l’objet
setLength :

La variable box length: 10.0


contient l’adresse de address
l’objet Rectangle width: 0.0
Ecrire et démontrer la méthode getLength

 Donner un corps à la méthode getLength


 Donner un corps à la méthode getArea
Les accesseurs et les mutateurs

 En raison du concept de masquage des données, les


champs d'une classe sont privés.
 Les méthodes qui extraient les données des champs
s'appellent des accesseurs.
 Les méthodes qui modifient les données des champs
s'appellent des mutateurs.
 Chaque champ que le programmeur souhaite voir affiché
par d'autres classes a besoin d'un accesseur.
 Chaque champ que le programmeur souhaite modifier par
d'autres classes nécessite un mutateur.
Les accesseurs et les mutateurs

 Pour notre exemple, les accesseurs et mutateurs sont les


suivants:
 setLength : modifie la valeur du champ length
public void setLength(double len)….
 setWidth: modifie la valeur du champ width
public void setWidth()….
 getLength: retourne la valeur du champ length
public double getLenth()….
 getWidth() : retourne la valeur du champ width
public double getWidth()….
 Ces méthodes sont aussi appelé getters et setters
Masquage de données (Data hiding)

 Un objet masque ses champs privés(private) internes du


code situé en dehors de la classe dont il est une instance.
 Seules les méthodes de la classe peuvent accéder
directement aux données internes de l’objet et y apporter
des modifications.
 Le code en dehors de la classe doit utiliser les méthodes
publiques de la classe pour opérer sur les champs privés
d'un objet.
Masquage de données (Data hiding)

 Le masquage des données est important car les classes


sont généralement utilisées en tant que composants dans
de grands systèmes logiciels, impliquant une équipe de
programmeurs.
 Le masquage des données permet de renforcer l'intégrité
des données internes d'un objet.
Données périmées

 Certaines données sont le résultat d'un calcul.


 Considérons l'aire d'un rectangle.
 length × width
 Il ne serait pas pratique d'utiliser une variable d'aire ici.
 Les données nécessitant le calcul de divers facteurs
risquent de devenir obsolètes.
 Pour éviter les données obsolètes, il est préférable de
calculer la valeur de ces données dans une méthode plutôt
que de les stocker dans une variable.
Données périmées

 Au lieu d’utiliser une variable area dans la class Rectangle:


public double getArea()
{
return length * width;
}

 Ceci calcule dynamiquement la valeur de la surface du


rectangle lorsque la méthode est appelée.
 Désormais, toute modification des variables de longueur ou
de largeur ne laissera pas la surface du rectangle périmée.
Les types de données UML et la notation des parametres

 Le diagramme UML est un langage indépendant


 Les diagrammes UML utilisent une notation indépendante
pour montrer le type de retour, les modificateurs d’accès

Les
modificateurs
d’accès sont
notés comme Rectangle
suit:
- private - width : double
+ public
+ setWidth(w : double) : void
Convertion d’un diagramme UML en code

 En rassemblant toutes ces informations, un fichier de


classe Java peut être construit facilement à l'aide du
diagramme UML.
 Les parties du diagramme UML correspondent à la
structure du fichier de classe Java.

classe NomClasse
{ Champs
Champs Methodes
Methodes
}
Convention de mise en page

 La structure varie d’un instructeurs ou d’un programmeur


 La structure globales est:
 Les champs
 Liste des méthodes
• Les accesseurs et les mutateurs sont généralement groupés
Les méthodes et variables d’instances

 Les champs et les méthodes déclarés comme


précédemment sont appelés champs d'instance et
méthodes d'instance.
 Les objets créés à partir d'une classe ont chacun leur
propre copie des champs d'instance.
 Les méthodes d'instance sont des méthodes qui ne sont
pas déclarées avec un mot clé spécial, static.
L’héritage

 La notion d'héritage est l'un des fondements de la


programmation orientée objet. Grâce à elle, nous pourrons
créer des classes héritées de nos classes mères (appelées
aussi classes de base).
 On utilise le mot clé extends pour informer une classe A
qu’elle hérite d’une classe B
L’héritage : cas d’une classe Ville et Capitale

 Dans le cas actuel, la classe Capitale hérite de la classe


Ville; ce qui se traduit par la notation suivante:
class Capitale extends Ville {
}
L’héritage : cas d’une classe Ville et Capitale

 Définition des constructeurs


 Toutes les classes ont au moins un constructeur
 En java l’instruction première de tout constructeur est
l’appel d’un autre constructeur de la même classe par le
mot clé this() ou d’une classe mère directe par le mot clé
super()
 Si le constructeur parent prend des arguments alors le
constructeur super() aussi doit en prendre.
L’héritage : cas d’une classe Ville et Capitale

 Dans la classe ci-dessus, la première instruction est un appel au


constructeur parent défini dans la classe [Link] qui ne
prend pas d’arguments.
L’héritage : cas d’une classe Ville et Capitale

 Dans le cas actuel, la première instruction est un appel au


constructeur de la classe Ville qui prend 3 arguments.
 La classe Capitale contient un deuxième constructeur sans
arguments faisant appel au constructeur se trouvant dans la
même classe en utilisant this("Kara",3000,"Togo");
L’héritage : cas d’une classe Ville et Capitale

 NB: this() et super() doivent être les premières instructions dans


un constructeur
 Si la classe parent contient plusieurs constructeurs, la classe
fille peut redéfinir un seul.
L’héritage : Accès aux champs hérités

 Les classes Java peuvent utiliser n'importe quel membre public


ou protégé de la classe parent, y compris des méthodes, des
primitives ou des références d'objet.
 Si la classe parent et la classe enfant font partie du même
package, la classe enfant peut également utiliser tous les
membres par défaut définis dans la classe parent.
 Une classe enfant ne peut jamais accéder à un membre privé de
la classe parent, du moins pas par toute référence directe
L’héritage : super() vs. super, this() vs. this

 Super() est utilisé en première ligne dans un constructeur de la


classe fille pour appeler le constructeur parent
 Super est utilisé pour accéder à un membre de la classe mère
 This() est utilisé en première ligne dans un constructeur pour
appeler un constructeur de la même classe
 This est utilisé pour accéder un membre d’une classe
Le polymorphisme

 Le polymorphisme est un mécanisme important dans la


programmation objet. Il permet de modifier le comportement
d’une classe fille par rapport à sa classe mère. Le
polymorphisme permet d’utiliser l’héritage comme un
mécanisme d’extension en adaptant le comportement des
objets.
Le polymorphisme: Redéfinition de méthodes

 Redéfinition de méthodes : redéfinition de méthode


signifie avoir deux méthodes avec la même signature,
l’une dans la classe mère et l’autre dans la classe fille.
L’implémentation étant différente de celle de la classe
mère.
 En redéfinissant une méthode vous pouvez utiliser le mot
clé super pour faire référence à la méthode parent ou this
pour la méthode courante
 Exemple:
L’héritage : Héritage de méthode: Redéfinition de méthodes
L’héritage : Héritage de méthode: Redéfinition de méthodes

 Dans cet exemple la classe fille Ville redéfini la méthode


decrisToi() de la classe mère Ville(), l’exécution se passe
sans erreurs et affiche:
L’héritage : Héritage de méthode: Redéfinition de méthodes

 La redéfinition de méthode doit respecter les règles


suivantes:
 La méthode de la classe fille doit avoir la même signature que la
méthode de la mère
 L’accessibilité de la méthode de la classe fille doit être plus
grande ou égale à celle de la classe mère
 Le type de retour de la méthode redéfinie doit être le même ou
un sous type.
 L’autres règle sera abordée lorsque nous parlerons des
exceptions.
L’héritage : Héritage de méthode: Surcharge de méthodes

 Une méthode surchargée a le même nom que la méthode


de base mais pas la même signature.

Vous aimerez peut-être aussi