Documente Academic
Documente Profesional
Documente Cultură
La programmation orientée objet est l'un des outils les plus importants dans le
développement logiciel. C'est une façon de programmer qui permet une meilleure
organisation de son code.
Dans ce cours, nous allons revoir tous ces principes en les approfondissant. De
cette façon, vous comprendrez complètement la programmation orientée objet et ses
concepts.
• String ;
• Scanner ;
• System ;
• Iterator<String>.
Initiattion à la POO / Source : OpenClassRooms / Edité par : Brunell Josny
2 - La démarche
En programmation orientée objet, il y a toujours une phase d'analyse avant de
coder. Il est important de réfléchir à : quels sont les besoins de mon application et
comment y répondre ?
Dans le cours sur les bases de Java, vous avez eu l'occasion de découvrir
différentes notions liées aux variables de type objet :
• les classes ;
• les méthodes ;
• les attributs.
Volontairement, j'ai laissé quelques imprécisions autour de ces concepts. Dans ce
cours, nous allons revoir ces notions en profondeur.
3 – L’objet
Quand on parle d'objet, il faut le voir comme un objet du quotidien. Chaque objet qui
nous entoure a des fonctionnalités et des caractéristiques.
package com.cursan.miam;
int puissance;
int capacite;
}
Cette classe n'est pas un four, mais la description d'un four. C'est lorsque l'on va
créer une variable de type Four que l'on va réellement créer un four.
package com.cursan.miam;
petitFour.capacite = 30;
petitFour.puissance = 180;
grandFour.capacite = 55;
grandFour.puissance = 260;
Initiattion à la POO / Source : OpenClassRooms / Edité par : Brunell Josny
petitFour.cuire();
System.out.println("");
grandFour.cuire();
}
Dans ce code, j'ai créé 2 fours, un petit et un grand. Si je lance mon programme, le
résultat suivant s'affiche :
Je cuis un aliment
avec ma capacité de 30 litres
et ma puissance de 180 degrés.
Je cuis un aliment
avec ma capacité de 55 litres
et ma puissance de 260 degrés.
package com.cursan.miam;
String nom;
boolean estCuit;
if (estCuit) {
} else {
}
On va modifier Four.cuire pour faire interagir nos 2
classes Four et Aliment entre elles :
aliment.estCuit = true;
}
Logique, non ? On prend simplement l'aliment en paramètre, on affiche qu'on est en
train de le cuire et on le met à l'état cuit !
Initiattion à la POO / Source : OpenClassRooms / Edité par : Brunell Josny
grandFour.capacite = 55;
grandFour.puissance = 260;
cake.estCuit = false;
cake.manger();
System.out.println("");
grandFour.cuire(cake);
System.out.println("");
cake.manger();
}
À votre avis, quel va être le résultat ?
Beeerk cet aliment : cake aux fruits est cru !
Miam miam cet aliment : cake aux fruits est bien cuit
Nous allons ici élaborer une première version de notre schéma UML et celui-ci
va évoluer au fur et à mesure des chapitres.
Notre projet est une application de gestion de facture dans un magasin en ligne.
La base de notre projet, c'est la facture. De quoi est composée une facture ?
de produits ;
•
• d'un client.
Commençons par représenter ces 2 concepts :
Le produit
UML d'un produit
Pour pouvoir regarder ou acheter un produit, nous avons besoin de son nom, de
sa description et de son prix.
Le Client
Initiattion à la POO / Source : OpenClassRooms / Edité par : Brunell Josny
La facture
UML d'une facture
products est de type Map<Product, Integer> . Cela sert à représenter un ensemble de
produits et une quantité achetée pour chaque produit. Dans un prochain chapitre, je vous
explique exactement ce qu'est une Map .
Vous comprenez facilement à quoi servent les flèches →, non ? Une facture est
composée de produits et d'un client. On représente cela avec deux flèches.
Initiattion à la POO / Source : OpenClassRooms / Edité par : Brunell Josny
5 - La visibilité
Quand on développe du code, il faut toujours penser : "Peut-être qu'un jour, un
autre développeur utilisera mon code." C'est pour cette raison que l'on :
Quand vous utilisez un four, vous pouvez le démarrer à 180 degrés pendant 10
minutes. Quand vous faites cela, de nombreux mécanismes internes vont être
activés (les résistances vont chauffer, la soufflerie va s'activer, etc.).
Vous, en tant qu'utilisateur de ce four, n'avez pas accès à tous ces composants :
ils sont cachés par la carcasse du four.
Resistance resistance;
Soufflerie soufflerie;
...
}
Si nous codons Four de cette façon, un développeur qui l'utilise pourrait avoir accès
à Resistance et Soufflerie .
four.resistance = null;
four.cuire(180, 10);
En supprimant la valeur de resistance , il risque de casser la logique
interne de Four .
Initiattion à la POO / Source : OpenClassRooms / Edité par : Brunell Josny
}
En faisant cela, il est impossible de faire fonctionner la ligne four.resistance =
null;. Le compilateur indiquera une erreur. De cette façon, seul le développeur
de Four a un contrôle sur ses composants internes.
...
...
}
Les méthodes servent principalement à structurer son code à l'intérieur d'une classe.
Initiattion à la POO / Source : OpenClassRooms / Edité par : Brunell Josny
6 - Getter et Setter
Par défaut, il faut toujours mettre tous les attributs à private , afin de bien maîtriser
ce que l'on peut faire ou non avec notre classe depuis l'extérieur.
Il faut ensuite se poser la question : est-ce que l'on a besoin de lire cette
information depuis l'extérieur ?
Si oui, il faut créer un Getter. C'est une méthode très simple qui ressemble à :
return resistance;
}
Cette fonction retourne une copie de la valeur de resistance . Les autres
développeurs peuvent donc accéder à sa valeur, mais ne peuvent pas la modifier.
La deuxième question à se poser est : est-ce que l'on a besoin de modifier cette
information depuis l'extérieur ?
this.soufflerie = soufflerie;
}
Mais du coup, cela revient au même ? Pas du tout ! Un développeur
qui utilise votre classe va voir les méthodes Getter et Setter que vous
avez créées. Il sait ce que vous l'autorisez à faire. Un Setter veut clairement dire
: "J'ai prévu dans mon code que tu puisses modifier cette valeur."
IntelliJ propose de facilement générer vos Getter et Setter via le menu Code > Generate...