Université de Batna Module : Bases de données orientées objets Faculté des sciences Département d informatique 2012/2013 Durée : 1h30 Le 19/03/2013 Questions de cours (4 pts) Contrôle de rattrapage Master II I - SRI 1. Dans un SGBDO, qui gère les identifiants des objets? (1 pt) 2. Est-ce que l agrégation est un type de relation entre les classes des objets? (1 pt) 3. Quelle caractéristique représente l exemple suivant :. (1 pt) public class A { code 1; ; public class B extends public A { code 2; ; 4. Est-ce que cette implication est juste (obj1 == obj2) (obj1 =* obj2)? (1 pt) Requêtes OQL (5.5 pts) Dans une entreprise de transport, un SGBDOO qui modélise la gestion de trajets contient une classe appelée «TRAJET» définie comme suit : public class TRAJET { int Num; //Numéro du trajet String Origine; //Ville d origine String Destination; //Ville de destination Date D_Depart; //Date de départ Time H_Depart; //Heure de départ int Duree; //Durée du trajet en minutes Donnez les requêtes OQL qui répondent aux questions suivantes : 1. L ensemble des trajets. (1 pt) 2. Les villes de destination des trajets qui ont la ville de départ «Batna» et une durée de 01 heure au minimum. (1.5 pts) 3. L ensemble des villes de destination, de tous les trajets, qui ne sont pas des villes d origine pour d autres trajets. (1.5 pts) 4. Partitionner l ensemble des trajets selon leurs dates de départ en donnant la taille de chaque partition. (1.5 pts) 1/1
Modélisation (10.5 pts) Un garage de vente de machines possède un système de gestion de bases de données objet modélisant la gestion machines. Cette base de données conserve les informations suivantes : Une machine est une instance d un modèle de machine. Un modèle est caractérisé par son nom, l année de sortie, le numéro de série, son prix de base, et le type du moteur. Le type du moteur est caractérisé par la puissance du moteur. 1. Ecrivez en java les classes suivantes avec les attributs cités ci-dessus : a. MODELE (1 pts) b. MOTEUR (0.5 pts) c. GARAGE (classe principale) (1 pts) 2. Ecrivez la méthode getlowcostmodel() de la classe GARAGE qui retourne le modèle de machine le moins cher. (2 pts) 3. Ecrivez la méthode getmodelbyengine() de la classe GARAGE qui prend en argument un type de moteur et qui affiche les noms des machines qui ont ce type de moteur. (2 pts) 4. Supposant que la base de données du garage est remplie. Ecrivez la méthode main() de la classe GARAGE qui permet de : a. créer un type de moteur avec la puissance de 6 chevaux ; (1 pts) b. créer un modèle de véhicule avec le nom «MODEL1», année de sortie «2010», numéro de série 123456 ; le prix 1000000,00, et un moteur de 6 chevaux de puissance ; (1 pts) c. Afficher les noms des modèles de machines enregistrés dans la base qui ont un moteur de 6 chevaux de puissance ; (1 pts) d. Chercher la machine la moins cher on affichant son nom et son prix ; (1 pts) NB: Le corrigé type vous le trouverez sur le site : http://fac-sciences.univ-batna.dz/cs/enseignants/guezouli_larbi_site/ Bonne chance 2/2
Correction du contrôle final Master II - SRI Questions de cours (4 pts) 1. Dans un SGBDO, qui gère les identifiants des objets? (1 pt) 2. Est-ce que l agrégation est un type de relation entre les classes des objets? (1 pt) 3. Quelle caractéristique représente l exemple suivant :. (1 pt) public class A { code 1; ; public class B extends public A { code 2; ; 4. Est-ce que cette implication est juste (obj1 == obj2) (obj1 =* obj2)? (1 pt) Réponse 1. Les OID sont gérés par le système. 2. Non, l agrégation est un type de relation entre les objets. 3. L exemple représente la caractéristique de polymorphisme. 4. Oui, l implication est juste parce que : obj1 == obj2 obj1 =1 obj2 et obj1 =1 obj2 obj1 =* obj2. Requêtes OQL (5.5 pts) Dans une entreprise de transport, un SGBDOO qui modélise la gestion de trajets contient une classe appelée «TRAJET» définie comme suit : public class TRAJET { int Num; //Numéro du trajet String Origine; //Ville d origine String Destination; //Ville de destination Date D_Depart; //Date de départ Time H_Depart; //Heure de départ int Duree; //Durée du trajet en minutes Donnez les requêtes OQL qui répondent aux questions suivantes : 1. L ensemble des trajets. (1 pt) 2. Les villes de destination des trajets qui ont la ville de départ «Batna» et une durée de 01 heure au minimum. (1.5 pt) 3. L ensemble des villes de destination, de tous les trajets, qui ne sont pas des villes d origine pour d autres trajets. (1.5 pts) 4. Partitionner l ensemble des trajets selon leurs dates de départ en donnant la taille de chaque partition. (1.5 pts) Réponse 1. La requête OQL qui retourne l ensemble des trajets : TRAJET 2. SELECT DISTINCT t FROM t IN TRAJET WHERE t.origine= Batna 3. SELECT DISTINCT t.destination FROM t IN TRAJET WHERE t.origine= Batna AND t.duree 60 3/3
4. SELECT DISTINCT t.destination FROM t IN TRAJET WHERE t.destination NOT IN (SELECT t1.origine FROM t1 IN TRAJET) 5. GROUP t IN TRAJET BY ( dd : t.d_depart ) WITH ( nbtrajets : COUNT(partition) ) Modélisation (10.5 pts) Un garage de vente de machines possède un système de gestion de bases de données objet modélisant la gestion machines. Cette base de données conserve les informations suivantes : Une machine est une instance d un modèle de machine. Un modèle est caractérisé par son nom, l année de sortie, le numéro de série, son prix de base, et le type du moteur. Le type du moteur est caractérisé par la puissance du moteur. 1. Ecrivez en java les classes suivantes avec les attributs cités ci-dessus : a. MODELE (1 pts) public class Modele { public String nom; public int annee; public String serie; public float prix; public Moteur moteur; b. MOTEUR (0.5 pts) public class Moteur { int puissance; c. GARAGE (classe principale) (1 pts) public class Garage { public static String DBOFILENAME = "c:/mygarage.dbo"; public ObjectContainer db; Garage() { //Préparation de la base de données objet new File(DBOFILENAME).delete(); ObjectContainer db = Db4o.openFile(DBOFILENAME); public void main() { try { //Traitement des questions suivantes finally { db.close(); 2. Ecrivez la méthode getlowcostmodel() de la classe GARAGE qui retourne le modèle de machine le moins cher. (2 pts) 4/4
public Modele getlowcostmodel() { Modele my_modele = null, lowcostmodel = null; float min = 9999999F; ObjectSet result = db.get(modele.class); for (int i=1; i<=result.size(); i++) { my_modele = (Modele) result.next(); if (my_modele.prix < min) { min = my_modele.prix; lowcostmodel = my_modele; return lowcostmodel; 3. Ecrivez la méthode getmodelbyengine() de la classe GARAGE qui prend en argument un type de moteur et qui affiche les noms des machines qui ont ce type de moteur. (2 pts) public void getmodelbyengine(moteur my_moteur) { Modele my_modele = new Modele(); my_modele.moteur = my_moteur; ObjectSet result = db.get(my_modele); for (int i=1; i<=result.size(); i++) { Modele modele_found = (Modele) result.next(); System.out.println("Modèle: " + modele_found.nom); 4. Supposant que la base de données du garage est remplie. Ecrivez la méthode main() de la classe GARAGE qui permet de : a. créer un type de moteur avec la puissance de 6 chevaux ; (1 pts) Moteur my_moteur = new Moteur(); my_moteur.puissance = 6; b. créer un modèle de véhicule avec le nom «MODEL1», année de sortie «2010», numéro de série 123456 ; le prix 1000000,00, et un moteur de 6 chevaux de puissance ; (1 pts) //Création du modèle "MODELE1" Modele my_modele1 = new Modele(); my_modele1.nom = "MODELE1"; my_modele1.annee = 2010; my_modele1.serie = "123456"; my_modele1.prix = 1000000F; my_modele1.moteur = my_moteur; c. Afficher les noms des modèles de machines enregistrés dans la base qui ont un moteur de 6 chevaux de puissance ; (1 pts) // Affichage des noms des modèles de machines enregistrés dans la base getmodelbyengine(my_moteur); 5/5
d. Chercher la machine la moins cher on affichant son nom et son prix ; (1 pts) //Recherche la machine la moins cher Modele modele_moins_cher = getlowcostmodel(); System.out.println("La machine la moins cher est: " + modele_moins_cher.nom + " qui a le prix: " + modele_moins_cher.prix); 6/6