Vous êtes sur la page 1sur 40

Programmation orientée objet

En JAVA

Introduction, Définitions, Objets,


Classes, Encapsulation, Héritage,
Abstraction et Polymorphisme

GHRICI Abdellah ( fb.com/ghriciabdellah )


+ Introduction
Introduction
On va parler du Module POO qui veut dire Programmation Orienté Objet ! Pour
comprendre il faut des prérequis , connaitre les bases de l’algorithmique ( Conditions ,
Introduction

boucles , enregistrement ) et savoir programmer un minimum en C ( syntaxe , les


pointeurs et les listes chainer ne sont pas nécessaire pour la compréhension de ce qui va
suivre ) , Nous allons sur tout parler des nouveauté qu’apporte le langage Surcharge ,
modificateur , héritage , polymorphisme …

Alors avant de commencé Java est un langage Haut niveau, avec lequel on peut
programmer des applications pour bureau, des applets (les applications pour le web) et
2
des Application Android et autre …

3 La façon de penser de Java est différente du C il faut apprendre à penser Objet ! C’est-à-
dire qu’on C ou en algorithmique, on avait l’habitude de programmer avec des fonctions
qui appel d’autre fonctions … Ici c’est nos objets qui vont communiquer entre eux ! Pour
faire simple c’est quoi un objet ? C’est un enregistrement (Structure) qui comporte en plus
des fonctions, tout sera expliquer après avec plus de détaille et un exemple complet.

3
GHRICI Abdellah ( fb.com/ghriciabdellah )
instructions d'entrée/sortie
pour lire des entrer au clavier on utilise la classe Scanner qu’on doit importer dans le
package java.util.Scanner, on doit instancier un objet avec le paramètre System.in avant
de l’utiliser
Introduction

Objet Scanner se trouve dans le


package java.util que vous devrez
importer.

Pour pouvoir récupérer ce vous allez


taper dans la console, vous devrez
2
initialiser l'objet Scanner avec l'entrée
standard, System.in.

3
La lecture des entrées clavier se fait via
l'objet Scanner e.
Il y a une méthode de récupération de
données pour chaque type (sauf les
char)

4
GHRICI Abdellah ( fb.com/ghriciabdellah )
Déclaration des variables
Une variable stocke une valeur de type simple ou de type référence (vers un tableau ou un objet). Elle
doit être déclarée et peut être initialisée dans le mémé temps. Plusieurs variables de mémé type
peuvent être déclarées ensemble
Introduction

Type de variable déclaration méthode de récupération


entier int a; nextInt();

réel double a; ou float a; nextDouble(); ou nextFloat();


caractère char c;
2
Chaine de caractère string s; next();
Boolean boolean b = false; nextBoolean();
3

Notations spécifiques pour certains caractères usuels


Code ‘\n’ ‘\t’ ‘\\’ ‘\’’ ‘\”’ ‘\b’
Valeur À la ligne Tabulation Antislash Apostrophe Guillemets Backspace

5
GHRICI Abdellah ( fb.com/ghriciabdellah )
Expressions et opérateurs
Opérateurs Description Type Opérandes Type Résultat

Math +, -, *, / Opérations arithmetiques int, double int, double


Introduction

% Reste de la division int, double int, double

==, != egalité, inégalité tout boolean


Logique

<, <=, >, >= Comparaison int, double, char boolean

&&, || Et, ou (logique) boolean boolean

2 ! Non (logique) boolean boolean

&, |, ^ Opérations bit à bit (et / ou / xor) int int


Binaire

3
Décalage de bit signé à gauche et à droite et
<<, >>, >>> int int
non signé à droit
^ Complément bit à bit int int

6
GHRICI Abdellah ( fb.com/ghriciabdellah )
Instruction conditionnelle
Une instruction conditionnelle permet à un programme de modifier son traitement en fonction d'une
condition. Les structures conditionnelles permettent de déterminer l'ordre dans lequel les instructions sont
exécutées.
Introduction

La forme simple La forme alternative La forme imbriquée SELECTION


IF (<CONDITION>) IF (<CONDITION>) IF (<CONDITION>) switch( <expression> )
{ { { {
/* Instructions */ /* Instructions */ /* Instructions */ case const1:
} } } /* Instructions */
else else break;
{ { case const2:
/* Instructions */ IF (<CONDITION>) /* instructions */
2 } { break;
/* Instructions */ ...
} default:
} /* instructions */
3 }

7
GHRICI Abdellah ( fb.com/ghriciabdellah )
Boucles
La notion d’itération est une des notions fondamentales de l’algorithmique. On utilise souvent quand on doit
exécuter le même traitement un certain nombre de fois qui peut être connu à l’avance ou non.
Introduction

FOR DO WHILE
for(i = valeur-initial; condition de do while( <expression> )
sortie ; incrémentation) { {
{ /* Instructions */ /* Instructions */
/* Instructions */ } }
2
} while( <expression> );

8
GHRICI Abdellah ( fb.com/ghriciabdellah )
Boucles
Propriétés
FOR WHILE DO
Introduction

- La boucle FOR est utilisée lorsque le - Le nombre de répétitions n'est pas - Le bloc d'instruction est répété
nombre de répétition est connu à connu à l'avance il dépend de la jusqu'à ce que la condition COND égale
l'avance. valeur de la condition COND. à fausse.
- Pour chaque valeur de la variable de - Au début de chaque itération, la - En fin de chaque itération l'expression
contrôle qui varie de la valeur initiale condition est évaluée. logique COND est évaluée.
à la valeur finale avec un pas égale à - Si COND = Vraie le bloc est exécuté - Avec cette boucle le bloc est répété
1. Le bloc sera exécuté. sinon on sort de la boucle. au moins une seule fois
- Le bloc est répéter (valeur finale - - Si COND = fausse au début on NB : Cette boucle est utilisée
2
valeur initiale + 1) fois. n'exécute aucune instruction. généralement dans le contrôle de
- La sortie de cette boucle s'effectuer saisie.
3 lorsque le nombre souhaité de
répétition est atteint.
- Dans cette boucle l'incrémentation
est faite automatiquement.

9
GHRICI Abdellah ( fb.com/ghriciabdellah )
Boucles
Comparaison des boucles
FOR WHILE DO
Introduction

- Initialisation par valeur initiale. - Initialisation avant WHILE - Initialisation avant DO


- Incrémentation automatique. - Instruction d'incrémentation - Instruction d'incrémentation
- Sortir lorsque le compteur dépasse valeur - Sortir si COND = fausse - Sortir si COND = fausse
finale. - Le nombre n'est pas connu - Le nombre n'est pas connu
- Le nombre de répétition connu
(V2 - V1 + 1)

3 • break;
quitter une boucle (for, do, while)

10
GHRICI Abdellah ( fb.com/ghriciabdellah )
Tableaux
Définition: Un tableau T est une variable structurée formée d’un nombre entier N de variables simples de
même type, qui sont appelées les composantes du tableau. Le nombre de composantes N est alors la
dimension du tableau.
Introduction

Tableau à 1 dimension (Vecteur)

Colonnes
2

3
Lignes

Tableau à 2 dimensions (Matrice)

11
GHRICI Abdellah ( fb.com/ghriciabdellah )
Programmation
orientée objet
Création des classes et objets
Classe : une classe c’est une structure (un rassemblement de variable) ou en trouve à l’intérieur des
1 fonctions aussi, à partir de maintenant on va appeler les variables d’une classe attributs et les fonctions
d’une classe méthodes .une classe c’est quelques chose d’abstrait c’est juste une sorte de model.
Programmation orientée objet

Objet : c’est une instance d’une classe, c’est-à-dire c’est quelques choses de concret avec des vraies valeurs
qui peut utiliser les méthodes de la classe.

Exemple : voici ici quelques exemples de classe et d’objet


– Classe Temps :
Attribut : Minutes, heures , secondes
Méthode : afficher l’heure , régler l’heure
3
– Objets de la classe temps
t1 => 21h05m32s
t2 => 00h00m00s

13
GHRICI Abdellah ( fb.com/ghriciabdellah )
Création des classes et objets
– Crée une classe : Pour crée une classe on crée un nouveau fichier avec le nom de notre classe et on utilise
1 le mot clé class, pour les attributs on déclare des variables comme on avait l’habitude de faire.

Après nous devons écrire nos méthodes, ici nous allons utiliser deux méthodes seulement une pour afficher
l’heure et une autre pour régler l’heure (changer l’heure) on donne la nouvelle heure (h_new comme
Programmation orientée objet

paramètre) et on les affects dans nos attributs

14
GHRICI Abdellah ( fb.com/ghriciabdellah )
Création des classes et objets Nom Class
L’encapsulation: Principe selon
1 lequel 1) les données et les Attribut:
opérations d'un même objet sont Synonyme de variable d'instance. Caractéristique d'un
regroupés dans une même entité et objet qui lui est reliée et possède une valeur. Les
valeurs des attributs sont les données de l'objet.
Programmation orientée objet

2) les données sont masquées.

Constructeur: est la première


méthode qui est appelé lorsqu’on
veut instancier un objet son rôle
premier est d’initialiser les attributs
de l’objet. Un constructeur est une
méthode public qui a le nom de la
classe.

3 Méthode: Mise en œuvre par des


instructions d'une opération associée
à un type d'objets.
Correspond à une fonction dans la
programmation procédurale.

15
GHRICI Abdellah ( fb.com/ghriciabdellah )
Création des classes et objets
1 Accesseur:
Méthode qui retourne la valeur d'un attribut. Synonyme de
getter
Programmation orientée objet

Mutateur:
Méthode publique permettant de modifier la valeur d'un
attribut masqué. Synonyme
de setter.

Vue que tous nos attributs sont private nous devons


3
trouver une solution pour les récupérer et les modifier, on
va utiliser des méthodes qu’on va appeler setter
(modifier) et getter (récupérer).

16
GHRICI Abdellah ( fb.com/ghriciabdellah )
Création des classes et objets
pour utiliser notre classe Temps, on va dans notre classe
1 main et on doit créer nos objets à partir de cette classe
c’est-à-dire instancié ! et pour ça nous avons besoin du
mot clé new
Programmation orientée objet

On peut utiliser maintenant notre objet t1 lui donner des


valeurs et utilisé ces méthodes, on va l’afficher régler
l’heure puis l’afficher à nouveau

L’affichage :
3

17
GHRICI Abdellah ( fb.com/ghriciabdellah )
Création des classes et objets
Final: est le mot clé utiliser pour déclarer qu’un attribut est
1 constant ! quand on utilise un attribut de type final il doit
être initialisé ! Soit dans le constructeur soit lors de sa
déclaration.
Programmation orientée objet

Static: est le mot clé pour dire qu’un attribut est partagé
c’est-à-dire que l’attribut appartient à la classe et non pas à
l’objet on peut l’utiliser par exemple pour connaitre le
nombre d’instance d’une classe on l’initialise à zéro et on
incrémente dans le constructeur, si on utilise static devant
une méthode on pourra l’utiliser sans instancier un objet
de cette classe (comme avec System.out.println())
3

18
GHRICI Abdellah ( fb.com/ghriciabdellah )
L’héritage
1 l’héritage est un l’un des concepts fondamental de la POO, on dit qu’une classe B hérite de la classe A,
lorsque la Class B a tous les attributs et méthodes de la classe A, la classe B peut (pas obligatoirement) avoir
Programmation orientée objet

d’autre attributs, d’autre méthodes


Lorsque la classe B est une classe A alors B hérite de A
lorsque la classe B a une classe A alors B à la classe A comme attribut

Exemple : Nous avons les classe Suivante Chien , Dents , Animal , Voiture , Véhicule, roue et nous voulons
chercher la relation entre nos différents classe.

19
GHRICI Abdellah ( fb.com/ghriciabdellah )
L’héritage
1 Pour crée une classe qui hérite d’une autre class on utilise
le mot clé extends, pour dire que la classe Voiture hérite de
la class Vehicule on écrit Voiture extends Vehicule.
Programmation orientée objet

Une voiture est un véhicule, la classe Voiture Hérite de la


classe Véhicule.

Une voiture a des roues, la classe Voiture a


la classe Roue comme attribut.
Une Voiture à 4 roue tableau de 4

Remarque:
3
Toutes les class en java hérite de la class Object.
Une class ne peut hériter que d’une SEULE class au maximum !
L’héritage multiple est interdit en java pour pallier ce problème
on utilisera des interfaces.
20
GHRICI Abdellah ( fb.com/ghriciabdellah )
L’héritage
1
Programmation orientée objet

Un chien est un animal, la classe Chien


Hérite de la classe Animal.

Un chien a des dents, la classe Chien a


dents comme attribut.
3

21
GHRICI Abdellah ( fb.com/ghriciabdellah )
Polymorphisme
on peut distinguer deux type polymorphisme.
1
1. Surcharge : C’est la possibilité d’écrire des
méthodes avec le même nom mais avec un
Programmation orientée objet

(nombre / type) de paramètre diffèrent.

En java on peut surcharger des méthodes c’est-à-dire


écrire une ou plusieurs autre méthodes avec le
même nom mais avec des paramètres différents, le
constructeur est souvent surcharger, exemple on
peut surcharger le constructeur de notre classe
3
Temps, ici si on donne aucun paramètre au
constructeur l’heure sera par défaut midi
(12h00m00s).

22
GHRICI Abdellah ( fb.com/ghriciabdellah )
Polymorphisme
2. Redéfinition: lorsqu’une classe B hérite de la Class A elle peut redéfinir une de ces méthode, c’est-à-dire modifier
1 la méthode pour bénéficier du polymorphisme (lorsque la même méthode peut prendre plusieurs forme), vue que
tous nos class hérite de la class object on peut redéfinir ses méthodes comme la méthode equals ou toString ou
Programmation orientée objet

autre.

cette méthode retourne un String , elle sert à


présenter l’objet on peut la redéfinir par exemple dans
notre Class temps pour donner l’heure .
L’utilité de cette méthode c’est qu’on n’est pas obligé
de l’appelé dans un affichage on peut simplement
mètre le référant de l’objet. Ici les deux
System.out.println() sont équivalent et voici leur
affichage.
3

L’affichage:

23
GHRICI Abdellah ( fb.com/ghriciabdellah )
Structuration en package
Java permet de structurer les classes en ensembles appelés packages afin de gagner en modularité. Les classes
1
contenues dans un fichier appartiennent au package par default à moins d'en indiquer un autre en première ligne
du fichier.
Programmation orientée objet

package nomPackage;
Lorsque l'on utilise une classe donnée, le compilateur la recherche dans le package par default. Si elle appartient
à un autre package il est nécessaire de l'importer au début du fichier. On peut importer toutes les classes d'un
package avec '*'. Ceci n'importe pas les classes des sous-packages.
import nomPackage.NomClasse;
import nomPackage.*;
3
import nomPackage.sousPackage.*;
Le package java.lang contient l'ensemble des classes fondamentales au langage. il est importé
automatiquement.

24
GHRICI Abdellah ( fb.com/ghriciabdellah )
Structuration en package
1 Package notables de la bibliothèque standard de JAVA
Package Rôle
Programmation orientée objet

java.util Structures de données


java.io Opérations d'entrée/sortie de base
java.math Opérations sur des nombres à précisions arbitraire
java.nio Opérations d'entrée/sortie haute performance
java.net Opérations réseau, sockets, ...
java.security Cryptographie
java.awt primitives graphiques
java.swing Package pour GUI indépendante de la plateforme
3

25
GHRICI Abdellah ( fb.com/ghriciabdellah )
Java.lang.Math et java.util.Array
1
Les classes Math et Arrays regroupent des constantes et des méthodes de classes pour les mathématiques et la
manipulation de tableaux
Programmation orientée objet

Méthode Description
abs, sqrt, pow Valeur absolue, racine carré et puissance
sin, cos, tan Fonctions trigonométriques
Math

log, log10, exp Logarithme népérien et supérieure d'une valeur


floor, ceil Partie entière inférieure et supérieure d'une valeur
min, max Minimum et maximum de deux valeurs
toString() Conversion d'un tableau en chaine de caractères
Arrays

sort(type[]) Trie d'un tableau par ordre croissant des valeurs


3
binarySearch(type[], type) Renvoie l'indice d'une valeur dans un tableau trié
copyOf(type[]) Renvoie une copie d'un tableau

26
GHRICI Abdellah ( fb.com/ghriciabdellah )
Collection, List et set
1
L'interface java.util.Collection<E> regroupe les méthodes génériques pour la gestion de structures de données. Elle
hérite de Iterable<E>. Les structures l'implémentant peuvent être parcourues avec une boucle for each.
Les interfaces List<E> et Set<E> héritent de Collection<E>. Les classes qui les implémentent sont respectivement des
Programmation orientée objet

listes et des ensembles.

ArrayList<E> est une implémentation de Liste<E> construite sur des tableaux. L'accès aux éléments est rapide à partir
de leur indice. Suppression et Insertion sont plus couteuses.

HashSet<E> est une implémentation de Set<E> construite sur une table de hachage Accès, insertion et suppression
sont en temps constant.
3

27
GHRICI Abdellah ( fb.com/ghriciabdellah )
Collection, List et set
Liste (non exaustive) des méthodes définies dans Collection et List
1 Méthode Description
boolean add(E e)
Insére e (ou les éléments de c) et renvoie true si la structure a été modifiée
boolean addAll(Collection c)
Programmation orientée objet

void clear() Vide la Collection


Collection<E>

boolean contains(Object o)
Renvoie true si o ou l'ensemble des éléments de c sont dans la structure
boolean containsAll(Collection c)
boolean isEmpty() Renvoie true si la liste est vide
boolean remove(Object o) Supprime une occurrence de o ou de chaque élément de c. Renvoie true si
boolean removeAll(Collection c) chaque occurrence a été supprimée
int size() Renvoie le nombre d'élément
Object[] toArray() Renvoie un tableau des éléments
boolean add(E e) Insére e en fin de liste, Renvoie true
3 void add(int i, E e) Insére e à l'indice i
List<E>

E get(int i) Renvoie l'élément à l'indice i


boolean remove(int i) Supprime l'élément à l'indice i
List<E> subList(int from, int to) Renvoie la sous liste entre from et to
<E>
Set

boolean add(E e) Insére e s'il n'existe pas d'élément f vérifiant e.equals(f). Renvoie true si le Set a changé.
28
GHRICI Abdellah ( fb.com/ghriciabdellah )
Map
1
L'interface java.util.Map<K, V> est utilisée pour les tableaux d'association clef-valeur (dictionnaires). On insère dans
la table une valeur en l'associant à une clef. Une clef ne peut être associée qu'à une seule valeur. Pour retrouver une
valeur on utilise la clef. La principale implémentation est HashMap<K, V>.
Programmation orientée objet

29
GHRICI Abdellah ( fb.com/ghriciabdellah )
Map
1 Liste de certaines méthodes définies dans Map

Méthode Description
Programmation orientée objet

void clear() Supprime toutes les associations d'une table


boolean containsKey(Object k) Renvoie true si la table contient la clef k
boolean containsValue(Object v) Renvoie true si la table contient la valeur v
V get(Object k) Renvoie la valeur associé à la clef k ou null
boolean isEmpty() Renvoie true si la liste est vide
Set<K> keySet() Renvoie un ensemble contenant les clefs
V put(K k, v v) Insère l'association de la clef k et de la valeur v. Renvoie la précédente
valeur associée à k ou null.
V remove(Object k) Supprime l'association avec la clef k. Renvoie la valeur qui lui était
3
associée ou null.
int size() Renvoie le nombre d'associations
Collection<V> values() Renvoie une collection des valeurs

30
GHRICI Abdellah ( fb.com/ghriciabdellah )
Attraper les exceptions
1
Les exceptions sont des objets héritant de throwable et utilisées pour gérer les cas d'erreurs d'un programme. Un
bloc protégé peut attraper les exceptions lancées (déclenchées) par les instructions du bloc et les gérer.
Programmation orientée objet

Description Syntaxe des exceptions


try { ... } : code protégé try {
instructions;
catch(Excep1 e) { ... } : si le bloc protégé léve une exception de ...
type Excep1, elle est stockée dans e et le bloc associé est exécuté. } catch (Excep1 e) {
instructions;
catch(Excep2| ... | ExcepN e) { ... } : idem, plusieurs types ...
d'exeception. } catch (Excep2| ... | ExcepN e) {
instructions;
3 finally { ... } : bloc de code exécuté quoi qu'il arrive (exception ou ...
non). } finally {
...
}

31
GHRICI Abdellah ( fb.com/ghriciabdellah )
Attraper les exceptions
1
Certains objets (comme les flux) doivent être refermés après leur utilisation. Lever une exception peut interompre le
code qui était destiné à les refermer. il est possible de refermer automatiquement les objets implémentant
AutoCloseable en les déclarant entre paranthèses juste après try.
Programmation orientée objet

try( AutoCloseableClass a= ... ){


...
} catch ...
Plutôt que traiter localement une exception, il est possible de déléguer cette tâche à la méthode appelant la
méthode courante. On déclare la méthode courante comme succeptible de lever certains types d'exceptions. Si le cas
se présente, l'exception levée est relayée à la méthode appelante. La méthode courante prend fin.
type methode ( ... ) throws Excep1, Excep2, ... { ... }
3

32
GHRICI Abdellah ( fb.com/ghriciabdellah )
Créer des exceptions
1
une exception est un objet d'une classe héritant de Throwable. Lancer une exception se fait avec le mot clef throw.
throw new MonException();
Lorsqu'une méthode succeptible de lancer une exception n'est pas dans un bloc protégé, le compilateur engendre
Programmation orientée objet

une erreur. Dans le cas des exceptions héritant de Error ou RunTimeExeption. le bloc n'est pas nécessaire.

Exceptions courantes
Description Syntaxe des exceptions
NullPointerException Accès à une méthode ou à un attribut depuit une variable référençant
null.
IndexOutBoundException Accès à une cas n'existant pas dans un tableau.
3 ClassCastException Transtypage d'un objet dans un type auquel il n'appartient pas.

33
GHRICI Abdellah ( fb.com/ghriciabdellah )
Quitter un programme
1
La méthode exit permet de terminer l'exécution d'un programme. Elle prend en paramétre un statu qui sera renvoyé
au système d'exploitation. Par convention. tout valeur non nulle indique une terminaison anormale.
System.exit(status);
Programmation orientée objet

34
GHRICI Abdellah ( fb.com/ghriciabdellah )
Exemple
complet
Exemple complet Gestion d'un commerce
On désire programmer une mini-application de gestion produit
1
nom
de petit commerce.
prix d'achat
2 Pour cela, on va écrire une classe Produit et une classe Magasin.
prix de vente
Dans notre commerce, chaque produit est caractérisé (voir tab.1) nombre d'exemplaires en stock
description
Exemple complet

tab.1

A la création du produit, on Fixe son nom, son prix d'achat et son prix de vente, c'est-à-dire que ces données son
fournies en argument au constructeur de la classe. Par défaut, la description du produit est « Pas de
description », et la quantité de produits en stock est nulle.
La classe Produit dispose d'un certain nombre de méthodes, qui lui permettent d'afficher la
description du produit, de l'éditer, d'augmenter ou de diminuer le nombre d'exemplaires en stock,
ainsi que d'obtenir les valeurs des différents attributs.
Question 1.1: écrivez la classe Produit

36
GHRICI Abdellah ( fb.com/ghriciabdellah )
Exemple complet Gestion d'un commerce
1
Un magasin se caractérise (Voir tab.2) Magasin
Avant de pouvoir acheter ou vendre un produit, il faut l'avoir solde
2 ajouté dans le stock. Pour cela, la classe Magasin dispose stock de produits (Le stock de produit est
d'une méthode: ajouterProduit L'indice de la case du tableau représenté par un tableau d'objets "Produit".)
dans laquelle on a stocké le produit devient alors la référence
Exemple complet

public void ajouterProduit(String nom, float


de ce produit. Pour acheter ou vendre ce produit, on utilise
prixAchat, float prixVente)
alors la référence comme argument des méthodes. public void acheterProduit(int
referenceProduit,int nombreExemplaires)
La classe Magasin dispose également des méthodes public void vendreProduit(int
habituelles d'accés à ses attributs, et d'une referenceProduit,int nombreExemplaires)
méthode Bilan qui permet d'afficher un bilan du magasin.
Question 1.2: écrivez la classe Magasin. Testez-la. tab.2

37
GHRICI Abdellah ( fb.com/ghriciabdellah )
Exemple complet Gestion d'un commerce
1
Exercice 2: Différents types de produits
Jusque là, les produits disposent d'une description qui est une simple chaine de caractère. Cela peut-être

2 insuffisant dans certains cas.


Par exemple, on aimerait avoir une classe Livre qui ait le même comportement que la classe Produit, mais qui
dispose d'un attribut auteur et d'un attribut éditeur.
Exemple complet

Question 2.1: écrivez la classe Livre qui hérite de la classe Produit. Certaines méthodes doivent être surchargée
(c'est-à-dire réécrites) De même, un cd se caractérise par son auteur, son interprète, et l'ensemble des titres de
ses pistes.
Question 2.2: écrivez la classe Cd qui hérite de la classe Produit.

38
GHRICI Abdellah ( fb.com/ghriciabdellah )
Exemple complet Gestion d'un commerce
1
Il va maintenant falloir faire les modifications nécessaires dans la classe Magasin, mais elles sont minimes. En
effet, Livre étant une sous-classes de Produit, les objets de type Livre sont également de type Produit, donc le

2 tableau de produits peut également contenir des livres ou des


cds.
C'est à la création des objets que les choses changent. En plus de la méthode ajouterProduit, la classe Magasin
Exemple complet

doit également contenir une méthode ajouterLivre et une méthode ajouterCd.

Question 2.3: Modifier la classe Magasin pour tenir compte des nouveaux objets.
Pour utiliser pleinement votre classe Magasin, vous avez maintenant besoin d'une méthode d'interaction
permettant de proposer à l'utilisateur d'ajouter un livre, un cd ou un produit standard, d'acheter, de vendre,
d'obtenir ou d'éditer la description d'un produit déjà existant, d'afficher un bilan général.
Question 2.4: écrivez la méthode interaction de la classe Magasin

39
GHRICI Abdellah ( fb.com/ghriciabdellah )
Exemple complet Gestion d'un commerce
1
Exercice 3: Recherche par mot Dans l'exercice précédent, pour acheter, vendre, éditer ou afficher la description
d'un produit existant, il fallait le spécifier par sa référence, c'est-à-dire par son indice dans le tableau. Ce n'est pas

2 un moyen très pratique d'aller chercher les produits, surtout si il y en a un très grand nombre. Nous allons écrire
la méthode public Produit rechercherProduit(String nom) qui renvoie un objet Produit dont le nom est spécifié en
argument, ainsi que la méthode public Produit rechercherProduitParMot(String mot) qui renvoie un objet Produit
Exemple complet

dont la description contient le mot spécifié en argument. Pour écrire ces méthodes, vous allez avoir besoin d'un
outil capable de comparer deux chaines de caractères, et d'un outil capable de dire si une chaine est incluse dans
une autre. C'est la classe String elle-même qui est capable de faire cela. En effet, contrairement à ce que vous
avez vu jusque là, String n'est pas un type simple comme int, mais une classe à part entière qui a ses attributs et
ses méthodes. Comme toute classe interne à Java, elle est précisément décrite dans la documentation de Java.
Question 3.1: écrivez les méthodes rechercherProduit et rechercherProduitParMot.
Modifiez votre méthode interaction pour tenir compte de ces nouvelles
méthodes.

40
GHRICI Abdellah ( fb.com/ghriciabdellah )

Vous aimerez peut-être aussi