5 Programmation O2
5.1 Exécution de programmes par la commande run body
Toutes les commandes suivantes sont effectuées dans la fenêtre
O2Shell.
La commande:
display methods in class Object
permet de voir les méthodes de la classe Object
. Ces méthodes
sont héritées par toutes les classes que nous avons créées jusqu'à
présent. On peut donc les utiliser pour afficher et saisir la classe
Restaurant
. Pour cela il faut créer un programme qui instancie
un ou plusieurs objets de la classe Restaurant et envoie des messages
à ces objets. Voici l'exemple (très simple) d'un tel programme. On va
saisir le code dans la fenêtre O2Shell et l'exécuter. On peut
également saisir le code dans un fichier et le copier (par la commande
Open) dans O2Shell.
Exécution de ce programme: une fenêtre O2Look apparaît.
On peut alors, dans la fenêtre créée par la méthode edit, saisir les
attributs d'un objet de la classe Restaurant. Cependant cette saisie
ne peut pas encore être sauvegardée. Pour cela, il faut créer un
nom
par la commande:
name restaus: set(Restaurant)
D'où la possibilité de sauvegarder un objet Restaurant en le
rattachant à ce nom, grâce á une légère modification du programme:
Exécution de ce programme: le fait d'utiliser l'icône «crayon» ajoute
maintenant dans l'ensemble restaus
le nouvel objet.
5.2 Applications
Une application au sens O2 regroupe un ensemble de programmes. On peut
considérer une application comme la définition d'un menu permettant de
choisir un programme par l'intermédiaire d'une interface graphique au
lieu de le lancer par une commande comme on l'a fait jusqu'à présent.
Autre différence importante: un programme dans une application est
compilé une fois pour toutes alors qu'un programme exécuté par «run
body» est compilé á chaque fois.
La définition d'une application se fait par la commande:
application Restaurants
program public creation_restaurant
end
Ici il n'y a que deux programmes mais on peut bien entendu en mettre
une liste plus étendue. Voici la définition du programme création_restaurant. Notez que l'on a choisi l'option
``transaction'' qui permet de faire des mise-à-jour.
-
Fichier creation_restaurant.o2c
program body creation_restaurant in application Restaurants {
o2 Restaurant r = new Restaurant;
if (r->edit == SAVE) restaus += set (r);
}
- Et voici le programme ``consultation'' qui intègre O2C et le
langage OQL :
program body consultation_restaus in application Restaurants {
o2 set(Restaurant) restos;
o2query (restos, "select r from r in restaus");
display (restos);
}
5.3 OQL
On peut exécuter des requêtes en utilisant un langage proche de SQL.
Exemple d'une recherche des tous les objets rattachés au nom
restaus
.
select r from r in restaus