La P.O.O : Les classes composées d'objets

La P.O.O. : Les classes composées d'objets. Création d'une classe. Instanciation dynamique d'objets.

Article lu   fois.

L'auteur

Site personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

0. Problématique

On dispose d'une classe livre dont la définition UML simplifié est la suivante :

image


On souhaite gérer le nom, le prénom de l'auteur du livre. Qu'elle solution peut-on envisager ?

Ajouter le nom et le prénom de l'auteur dans la classe "Livre" et avoir des risques de redondance d'information?


C'est une pure hérésie ! Vous vous rappelez le sort que l'on réservait aux hérétiques au moyen-âge ? Alors faites attention !


La meilleure solution est de créer une classe "Auteur" et de lier cette classe a "Livre".

image

I. Diagramme de classes UML.

L'association représente des relations structurelles entre classes : elle possède un nom qui symbolise l'association.

La multiplicité d'une association (=cardinalité en merise) représente combien d'objets de la classe considérée sont reliés à un objet de l'autre classe.


1 ou 1..1 : un et un seul

0..1 : zéro ou 1

n: n

m..n: de m à n

* ou 0..*: de zéro à plusieurs

1..*: de un à plusieurs

image


Maintenant le mieux est de commencer à mettre les mains dans le "cambouis".


Créez un nouveau projet nommé : Tpobjet8-2 vous ne déclarerez pas d'analyse.


Voici la première et seule fenêtre du projet nommée "Départ" :

tp82


Il y a 5 champs de saisie :

Anom, Aprénom, Ltitre, AfficheNomAuteur, AffichePrénomAuteur.


4 boutons :


BcreerAuteur, BcreerLivre, BnomAuteurLivre, BprenomAuteurLivre.


Nous allons créer les classes Livre et Auteur.

tp82-2


Les membres Privé à la classe sont :


Le Titre du Livre qui recevra le titre de l'ouvrage.

Numéro qui contiendra le numéro du livre (en fait le total des livres +1)

AuteurLivre est un objet de type auteur qui sera implémenté plus tard.


Les membres Protégés :

Compteur livre est un membre Statique à la classe qui comptera le nombre d'instance de la classe Livre.


Nous allons passer au constructeur :

tp82-3


Maintenant vous commencez à comprendre le fonctionnement du constructeur, il récupère 2 paramètres : le titre du livre et un objet de type auteur.


Donc le membre prive Titre recoit P_Titre, on active la méthode AugmenteCompteur, numéro recevra un numéro de livre grâce à la méthode statique GetCompteur et enfin l'objet dynamique auteurlivre reçoit l'objet aut passé en paramètre.

tp82-4


Je vous laisse saisir et comprendre le fonctionnement de ces différentes méthodes, il n'y a rien de compliqué ! On passe à la classe Auteur ? C'est parti !

tp82-5


Rien de plus classique : une définition de la classe, un constructeur, 2 accesseurs, 2 mutateurs.

Nous avons les 2 classes, l'ébauche de la fenêtre, il nous reste à mettre en ouvre l'ensemble.

II. Finalisation :

Nous allons implémenter nos 2 objets de façon dynamique, pourquoi ? Jusqu'à présent les objets étaient déclarés et instancié d'un seul "jet". Cela signifie que l'on connaît à priori les paramètres du constructeur à la déclaration de l'objet. Nous allons cette fois ci procéder en 2 étapes : On commencera à déclarer l'objet ( en fait, lui réserver la place mémoire) et ensuite on l'instanciera.


Pour les déclarer, allez dans le code du projet (Projet->Code du projet ) et saisissez ceci :

tp82-6


Passons à la fenêtre principale

tp82-1


Dans la zone auteur, vous saisirez le nom et le prénom, l'objet sera crée par un clic sur le bouton "Créer Auteur", dont le code est le suivant :

 
Sélectionnez
Aut1 =allouer un Auteur(ANom,Aprenom)


Cette ligne de code instancie vraiment l'objet en passant les paramètres au constructeur de la classe Auteur.

Le code du bouton "Créer Livre" est le suivant :

 
Sélectionnez
Liv1=allouer un Livre(LTitre,Aut1)


Comme vous le voyez le constructeur de livre reçoit l'objet Aut1 qui contient le nom et le prénom de l'auteur. Comment en être sur ? Il suffit de faire afficher ces deux informations c'est le rôle des 2 boutons qui suivent.

Code du bouton "Nom de l'auteur du livre":

 
Sélectionnez
autlu est un objet Auteur dynamique

autlu=Liv1:GetAuteurLivre()
AfficheNomAuteur=autlu:GetNom()


Vous vous rappelez le code des méthodes de la classe Livre ? On veut récupérer le nom de l'auteur, c'est le rôle de la méthode GetAuteurLivre(). En fait elle renvoi l'objet Auteur.


Pour expliquer le code :

Autlu est un objet Auteur qui reçoit en copie un objet du même type provenant de l'objet Liv1 et le champ de la fenêtre AfficheNomAuteur reçoit la variable envoyée par GetNom.


Ce n'est pas compliqué en soit, si vous ne comprenez pas ce cheminement relisez le code de la classe Livre.


Il nous manque que le code de "Prénom de l'auteur du livre" :

 
Sélectionnez
autlu est un objet Auteur dynamique
autlu=Liv1:GetAuteurLivre()

AffichePrenomAuteur=autlu:GetPrenom()


Pas besoin d'explication ? non ? alors c'est super. Pour continuer à vous entrainer vous pouvez faire en sorte que le nombre de livre s'affiche.Et oui, je ne l'ai pas implémenté. A bientôt

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2008 Jean Luc Baptiste. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.