
## Exemple partant de la dernière question du test.

```
objet abstrait jouet  
    var protégée prix, poids : décimal;
    var protégée stock : entier;

    methode constructeur(prix,poids)
        ceci->prix = prix;
        ceci->poids = poids;
        ceci->stock = 0;
    fin methode

    methode ajouter(nombre=1)
       ceci->stock = ceci->stock + nombre;
    fin methode

    methode diminuer(nombre=1)
       ceci->stock = ceci->stock - nombre;
    fin methode

fin objet

objet nounours étend jouet
    var couleur, matière chaînes;
    methode constructeur(prix,poids,couleur,matière)
        parent->constructeur(prix,poids);
        ceci->couleur = couleur;
        ceci->matière = matière;
    fin methode;
fin objet

/* pseudo code pour l'utiliser (cf image) */

```

## Exemple étendu pour gérer le stock d'un magasin de jouets

```

objet jouet  
    var nom, type, localisation : chaîne;
    var privée prix : décimal;
    var privée stock : entier;

    methode constructeur(nom,type,localisation,prix);
        ceci->nom = nom;
        ceci->type = type;
        ceci->localisation = localisation;
        ceci->prix = prix;
        ceci->stock = 0;
    fin methode

    methode ajouter(nombre=1)
       ceci->stock = ceci->stock + nombre;
    fin methode

    methode diminuer(nombre=1)
       ceci->stock = ceci->stock - nombre;
    fin methode

    methode donne_prix()
      renvoyer ceci->prix;
    fin methode;

    methode donne_stock()
      renvoyer ceci->stock;
    fin methode;
fin objet

```

## pseudo code pour l'utiliser : 

```
var fini : booléen;
var nom, type, localisation, reponse_fin : chaine;
var tdj : tableau;
var nb_jouet, stock : entier;
var prix : decimal;

nb_jouet = 0;

Tant que fini != vrai
  Afficher "Nom du jouet ?"
  Lire nom;

  Afficher "Type ?"
  Lire type;

  Afficher "Cave ou salle ?"
  Lire localisation;
  Si localisation != "cave" Alors
    localisation = "salle";
  Fin si

  Afficher "Stock ?"
  Lire stock;

  Afficher "Prix ?"
  Lire prix;
  
  tdj[nb_jouet] = nouveau jouet(nom,type,localisation,prix);
  tdj[nb_jouet]->ajouter(stock);

  nb_jouet = nb_jouet + 1;

  Afficher "Jouet " ~ nb_jouet ~ " créé !";

  Afficher "fini ?"
  Lire reponse_fin
  Si reponse_fin == "oui" Alors
    fini = vrai
  Fin si
Fin tant que

pour i = 0 ; i < nb_jouets ; i++
  Afficher "Le jouet " ~ i ~ " est un " ~ tdj[i]->type 
  Afficher " nommé " ~ tdj[i]->nom 
  Afficher " et est dans la " ~ tdj[i]->localisation;
  Afficher "Il y en a " ~ tdj[i]->donne_stock() ~ " disponibles";
fin pour

```