Академический Документы
Профессиональный Документы
Культура Документы
Talel.Abdessalem@enst.fr
Concepts objet
?
Notion dobjet
Identit
Hritage et polymorphisme
Modles de persistance
2
Notion dObjet
?
?
demander_resa
Tarif : 2000
places_dispo : 13
Inscrits : {Dupont, Durand, }
demander_resa { }
modifier_resa{ }
3
Identit dobjet
?
Classes
?
?
numro : integer;
method
?
extremes():set (Station) ;
Class Station
nom : string;
lignes : set(Ligne);
method
suivante(Ligne): Station;
prcedente (Ligne): Station;
Hritage
?
Le corps de la mthode
claculer_tarif peut tre redfinie
dans Trajet_rduit pour tenir
compte de la rduction
Super-classe
Trajet_train
numro : integer,
dpart : date,
arrive : date
method
reserver,
calculer_tarif : real;
Sous-classe
Trajet_rduit inherit Trajet_train
coef : real
method
afficher_coef;
Avantages :
modlisation plus compacte et mieux structure. Minimise les modifications du code.
Persistance ?
?
Persistance explicite/implicite
Persistance implicite :
Support de stockage
Classes dobjets persistants
Racines de persistance
Langages
?
?
Class
Instantiate
key_list
extent_name
super_class
extends
Operation
signature
has
invoke
return
return_abnormally
Property
Object
OID
has_name?
names
class
create
delete
exits
same_has?
Attribute
Traversal path
attr_name
attr_type
path_name
to_cardinality
to_type
set_value
get_value
traverse
creator_iterator
2
Relationship
define
1
add_member
remove_member
Exemple de base
Habite
Appartient
Voiture
nveh
couleur
marque
km
rouler()
Possde
Personne
nss
nom
prenom
datenais
vieillir()
dormir()
Loge
Appart.
tage
no
rue
code
ville
Boire
Infrieur
Buveur
type
tat
boire()
Employ
fonction
salaire
primes
Suprieur travailler()
Vin
cru
Bu_par millsime
degr
qualit
EmployBuveur
10
Exemple de dfinition
Interface Personne { // interface abstraite pour implmentation dans
classe
attribute string nss ;
attribute string nom ;
attribute string prenom ;
attribute date datenaissance;
relationship Appart habite inverse Appart::loge; // relationship
relationship Voiture Possede inverse Voiture::Appartient;
short vieillir();
void dormir()
short age();
};
11
Exemple (suite)
class Employ : Personne(extent Employ key nss)
//classe avec extension de personne +
{
attribute enum fonct{ingnieur, secrtaire, analyste,
programmeur} fonction;
attribute float salaire ;
attribute list<float> primes ; //attribut multi-valu
relationship Employ inferieur inverse suprieur;
relationship Employ suprieur inverse infrieur;
void travailler();
};
12
LE LANGAGE OQL
?
Concepts nouveaux
?
Collection dpendante
Collection obtenu partir d'un objet, soit par ce qu'elle est
imbrique dans l'objet ou pointe par l'objet.
Utilisable dans le FROM
14
Type rsultat
automatiquement infr par le SGBD
tout collection est possible (bag par dfaut)
il est possible de crer des objets en rsultats
15
Requte Simple
?
===> string
16
17
==> litteral
bag<struct<nom:string,prenom:string>
18
Rsultats Imbriqus
?
19
Invocation de mthodes
?
20
Cration d'Objets
?
Expressions de constructions
Si C est le nom d'une classe, p1, ..., pn des proprits de la
classe et e1, ..., en des expressions
alors C(p1 : e1, ..., pn : en) est une expression de construction
Cration d'objet
employe (nss:15603300036029, nom:"jean", salaire: 100000)
employe (select struct(nss:b.nss, nom:b.nom, salaire: 4000)
from b in buveurs
21
Dfinition de macros
Define <nom> as <question>
permet de dfinir un objet de nom <nom> calcul
par la question
Exemple:
Define Cesars as
Select b
From b in Buveurs
Where b.prenom = "Jules"
22
Quantification
?
Quantificateur universel
for all x in collection : predicat(x)
Exemple:
for all b in Buveurs : b.age < 18
Quantificateur existentiel
exists x in collection: Predicat(x)
Exemple:
exists v in Employs.Possde : v.marque = "Renault"
23
Calculs d'Agrgats
?
?
Similaire SQL
avec possibilit de prdicats
select e
from e in employes
group by (bas : e.salaire < 7000,
Expressions de Collections
?
Conversion de collections
25
Dveloppement d'applications,
lexemple O2
?
O2C
mthodes et applications - langage propritaire
O2 et C
Assurer manuellement le mapping entre classes
O2 et types C.
O2 et C++
Mapping transparent des classes entre C++ et O2
26
o2 Station nouvelle_station;
o2 set(Station) les_stations;
o2query ( les_stations ,
"SELECT s FROM s in les_stations WHERE s->nom = $1",
?
?
nouvelle_station->nom);
if (count (les_stations))
display ("Il existe dj une station avec ce nom");
27
SQL3
?
?
Hritage
Dfinition de sous-types
Dfinition de sous-tables
29
Un sous-type
CREATE TYPE EMPLOYE UNDER PERSONNE
(salaire NUMBER(10,2), anciennet DATE)
30
Fonctions
SELECT
FROM
WHERE
and
a.nom
Bateau a, Bateau b
b.nom = Grand Bleu'
distance(a.position,b.position) < 1
Oprateurs
SELECT
FROM
WHERE
and
a.nom
Bateau a, Bateau b
b.nom = Grand Bleu'
contenu(a.position, zone(b.position, 1))
32
Budget Ralisateur
Acteurs
Nom
4MF
Besson
Jean
Julie
Nom
5MF Chouraki
Dpenses
Num
Montant
55
2600
Bande
40
8700
Htel
Age
Age
Sylvie
45
Pierre
29
Motif
15400
Camra
Num
Montant
Motif
3000
Bande
4000
Htel
33
Accs en relationnel
SELECT Films.n, Films.budget
FROM Acteurs, Films, Joue
WHERE Acteurs.nom = Joue.acteur
AND Joue.film = Films.n
AND Acteurs.nom = Besson
Accs en objet-relationnel
SELECT Films.n, Films.budget
FROM Films f
WHERE f.acteurs.nom = Besson
34
Rsum
?