DESS TD1 : Requêtes en OQL

On considère l'exemple de l'agence de voyage de Adiba et Collet.

class Pays inherit Object public type   
        tuple(    nom        : string,   
                  capitale   : Ville,  
                  population : integer,  
                  villes     : set(Ville))  
end;

class Ville inherit Object public type
        tuple(  nom             : string,  
                population      : integer,  
                pays            : Pays,  
                lieux_a_visiter : set(Place),  
                hotels          : unique set(Hotel),  
                tours           : unique set(Tour))  
end;

class Place inherit Object type
        tuple(  public nom       : string,  
                read description : string,  
                public adresse   : tuple(rue :string, ville : Ville),  
                public tarif     : real)  
end;

class Monument inherit Place public type    
        tuple(  siecle          : integer,  
                jours_fermeture : list(string))
end;

class Musee inherit Place public type
        tuple(  specialite      : string,  
                jours_fermeture : list(string))
end;

class Hotel public type
        tuple(  nom              : string,  
                etoiles          : integer,  
                petit_dejeuner   : real,  
                demi_pension     : real,  
                pension_complete : real,  
                adresse          : string,  
                ville            : Ville)  
end;

class Tour public    
        type tuple(  nom    : string,  
                     places : list(Place))  
        method public tarif : real  
/* retourne le tarif cumule de tous les lieux ou passe le tour*/
end;

  1. Nombre d'habitant de la ville de Rome.
  2. Nom du pays dont Rome est une ville.
  3. Combien y a-t-il de villes en France?
  4. Donnez le nom de chaque ville de France.
  5. Donnez le nom et l'adresse (nom de la rue) des monuments de Rome du 19ème siècle.
  6. Donnez les noms des hotels et les tarifs de leur pensions complètes pour les hôtels 2 ou 3 étoiles.
  7. Donnez les noms et tarif des circuits touristiques (tours) à Paris offrant une visite de la Tour Eiffel.
  8. Donnez le nombre de villes et la moyenne des populations de ces villes pour chaque pays.
  9. Donnez les monuments classés par siècle pour la ville de Rome,
  10. Donnez le(s) monument(s) le(s) plus ancien(s) de la ville d'Angers.
  11. Donnez les circuits touristiques à Paris où il est possible de voir tous les monuments de Paris datant du 14ème siècle.
  12. Donnez les villes qui n'ont que des musées dont la spécialité est la peinture.
  13. Donnez le nombre moyen des musées par spécialité pour la ville d'Angers.

Pour chaque requête, donnez le type du résultat retourné (pour les collections précisez : liste, ensemble ou tas).


Florence Bannay 2002-10-22