/*1. Créez l'artiste ``Robert Redford'' dont l'adresse est ``bd Foch, Angers'', le salairecourant est 50 000F et dont l'agent est inconnu à l'aide d'un programme non nommé (run body{...}) (faîtes ceci sans utiliser de méthodes d'initialisation). (Pour que cet persiste vous devez le rattacher aux racines de persistances. ) */ run body{o2 Artiste rr; rr= new Artiste; rr->nom="Redford"; rr->prenom="Robert"; rr->e_adresse("bd Foch, Angers"); rr->salairecourant=50000; transaction; LesArtistes = unique set(rr); LesPersonnes = unique set(rr); commit; } /*Vérifiez ensuite qu'il existe bien dans la base de données en passant en mode de requête (query)*/ select a.nom from a in LesArtistes; /*2. Créez la méthode d'initialisation de la classe Artiste qui crée un artiste à partir de ses nom, prénom, adresse et salaire courant. Cette methode ne met pas à jour l'agent.*/ method init(n:string, p:string, a:string, s:integer) in class Artiste; method body init(n:string,p:string, a:string,s:integer) in class Artiste {self->nom=n; self->prenom=p; self->adresse=a; self->salairecourant=s; } /*Créez ensuite l'artiste ``Brigitte Bardot'' dont l'adresse est ``la plage, St Trop'' et le salaire est de 20 000F. */ run body{o2 Artiste bb; bb = new Artiste("Bardot","Brigitte","la plage, St Trop",20000); transaction; LesArtistes+= unique set(bb); LesPersonnes+=unique set(bb); commit; } /*3. Créez des méthodes d'initialisation pour les classes Personne, Spectacle et Billet (pour la classe Spectacle, on fournira le nom et le tarif, la liste des artistes sera initialisé à la liste vide). */ method init(n:string,p:string,a:string) in class Personne; method body init(n:string,p:string, a:string) in class Personne {self->nom=n; self->prenom=p; self->adresse=a; } method init(n:string,t:integer) in class Spectacle; method body init(n:string,t:integer) in class Spectacle {self->nom=n; self->tarif=t; self->artistes=list(); }; method init(c:Personne,s:Spectacle,n:integer,r:real) in class Billet; method body init(c:Personne,s:Spectacle,n:integer,r:real) in class Billet {self->client=c; self->spectacle=s; self->nbpers=n; self->reduction=r; }; /*4. Créez la méthode de modification d'un agent e_agent pour un artiste et utilisez-la pour mettre à jour l'agent de Brigitte Bardot un certain ``Albert Dupont'' habitant à ``Paris, rue St Denis'' */ method public e_agent(a:Personne) in class Artiste; method body e_agent(a:Personne) in class Artiste {self->agent=a;}; run body{ o2 Personne a=new Personne("Dupont","Albert","Paris, rue St Denis"); o2 Artiste bb; o2query(bb,"element(select x from x in LesArtistes where x.nom=\"Bardot\")"); transaction; bb->e_agent(a); LesPersonnes+=unique set(a); commit; }; /*5. Faites une requete donnant le nom et l'adresse de l'agent de Brigitte Bardot.*/ select a.agent.adresse from a in LesArtistes where a.nom="Bardot"; set(Paris, rue St Denis) /*6. Créez une méthode permettant d'ajouter un artiste dans un spectacle. */ method public ajout(a:Artiste) in class Spectacle; method body ajout(a:Artiste) in class Spectacle {self->artistes+=list(a);}; /*7. programme qui permet de charger les données suivantes : Deux personnes prennent des billets pour le spectacle ``Une souris verte'' dont le tarif est de 40F et qui est interprété par Brigitte Bardot et Robert Redford, il s'agit de Triphon Tournesol qui prend un billet pour 3 personnes sans réduction et d'Albert Einstein qui prend 1 billet pour une personne avec 50% de réduction. */ run body { o2 Personne triphon, albert; o2 Spectacle souris; o2 Artiste bb,rr; o2 Billet b1,b2; triphon=new Personne("Tournesol","Triphon",""); albert= new Personne("Einstein", "Albert",""); souris= new Spectacle("Une souris verte",40); o2query(bb,"element(select x from x in LesArtistes where x.nom=\"Bardot\")"); o2query(rr,"element(select x from x in LesArtistes where x.nom=\"Redford\")"); souris->ajout(bb); souris->ajout(rr); b1=new Billet(triphon,souris,3,1); b2=new Billet(albert,souris,1,0.5); transaction; LesBillets+=list(b1,b2); LesPersonnes+=unique set(triphon,albert); LesSpectacles+=set(souris); commit; }; /*8. interrogez la base de données pour vérifier ces créations. */ select s.nom from s in LesSpectacles; set(Une souris verte) select p.nom from p in LesPersonnes; set(Redford, Bardot, Dupont, Tournesol, Einstein) select struct(cli:b.client.nom,sp: b.spectacle.nom,n:b.nbpers,red:b.reduction) from b in LesBillets; set(tuple(cli:Tournesol, sp :Une souris verte, n :3, red:1,000000), tuple(cli:Einstein, sp :Une souris verte, n :1, red:0,500000)) /*9. Créez la méthode prix pour la classe Billet. */ method body prix:real in class Billet {return(((self->spectacle)->tarif) * (self->nbpers) * (self->reduction));} /*10. Faîtes une requête permettant de savoir quelle recette a fait le cinéma sur la vente des billets. */ sum(select b.prix from b in LesBillets) 140,000000