-
Fichier Restaurant.o2
/* Demo O2: definition de la classe restaurant */
class Restaurant
public type tuple (nom : string,
adresse : Adresse,
directeur : Person,
employes : set(Employe),
Nbr_tables : integer)
method public charge_salariale : real
end;
- Fichier Restaurant.o2c
/* Methodes de la classe Restaurant */
method body charge_salariale : real in class Restaurant
{
o2 Employe e;
o2 real charge;
o2 tuple (libelle: string, valeur: real) resultat;
charge = 0;
for (e in self->employes)
{
printf ("Employe %s , salaire : %f \n",e->nom,e->salaire);
charge = charge + e->salaire;
}
resultat.libelle = "Charge salariale : ";
resultat.valeur = charge;
display (resultat);
return charge;
}
- Fichier Person.o2
/* Demo O2: definition de la classe Person */
class Person
public type tuple (nom: string,
prenom: string,
age: integer,
adresse: Adresse)
end;
- Fichier Adresse.o2
/* Demo O2: definition de la classe Adresse */
class Adresse
public type tuple (numero : integer,
rue : string,
ville : string,
code_postal : string)
end;
- Fichier Employe.o2
/* Demo O2: creation de la classe Employe */
class Employe inherit Person
type tuple (poste : string,
salaire : real)
method public change_salaire (salaire: real)
end;
- Fichier Employe.o2c
/* Methodes de la classe Employe */
method body change_salaire (salaire: real) in class Employe
{
self->salaire = salaire;
self->refresh_all;
}
Finir par la commande ``commit'' (dans la fenêtre principale de
O2Tools) pour valider la mise à jour du schéma: On peut maintenant
vérifier l'existence des nouvelles classes dans le schéma en
consultant le graphe d'héritage.